Re: Difference Fit vs. Correlation
- To: mathgroup at smc.vnet.net
- Subject: [mg96866] Re: Difference Fit vs. Correlation
- From: Claus <clausenator at gmail.com>
- Date: Thu, 26 Feb 2009 07:57:35 -0500 (EST)
- Organization: Comp.Center (RUS), U of Stuttgart, FRG
- References: <go0j8u$n53$1@smc.vnet.net>
Gentlemen,
thanks for your comments, I was writing my original post in a hurry, and
I must have been in a hurry when I was writing the original code.
My problem was that I had calculated the slope of the regression line by
multiplying Correlation[GaltonX,GaltonY] with
StandardDeviation[GaltonX]/StandardDeviation[GaltonY]
However, the correct slope of the regression line is
Correlation[GaltonX,GaltonY] *
StandardDeviation[GaltonY]/StandardDeviation[GaltonX]
Below is some code that should clarify things (use GaltonX and GaltonY
from original post).
Thank you,
Claus
In[98]:= lm = LinearModelFit[Transpose@{GaltonX, GaltonY}, {1, x}, x]
lm["BestFit"]
Out[98]= FittedModel[\!\(\*
PanelBox[
TagBox[
RowBox[{"33.88660435407788`", " ", "+",
RowBox[{"0.5140930386233082`", " ", "x"}]}],
Short],
FrameMargins->5]\)]
Out[99]= 33.8866 + 0.514093 x
should be the same if I use the original pairs
In[100]:= lm2 = LinearModelFit[GaltonDat, {1, x}, x]
lm2["BestFit"]
Out[100]= FittedModel[\!\(\*
PanelBox[
TagBox[
RowBox[{"33.88660435407788`", " ", "+",
RowBox[{"0.5140930386233082`", " ", "x"}]}],
Short],
FrameMargins->5]\)]
Out[101]= 33.8866 + 0.514093 x
In[102]:= CorrelXY = Correlation[GaltonX, GaltonY]
Out[102]= 0.501338
In[103]:= SDevX = StandardDeviation[GaltonX]
SDevY = StandardDeviation[GaltonY]
MY = Mean[GaltonY]
MX = Mean[GaltonX]
CovXY = Covariance[GaltonX, GaltonY]
Out[103]= 2.74487
Out[104]= 2.8147
Out[105]= 68.6841
Out[106]= 67.6871
Out[107]= 3.87333
CorrelXY2 should be the same as CorrelXY
In[108]:= CorrelXY2 = CovXY/(SDevX*SDevY)
Out[108]= 0.501338
Slope of the regression line
In[109]:= slopeRegrL = CorrelXY*SDevY/SDevX
Out[109]= 0.514093
In[110]:= interceptRegrL = MY - slopeRegrL*MX
Out[110]= 33.8866
In[111]:= regrLine = interceptRegrL + slopeRegrL*x
Out[111]= 33.8866 + 0.514093 x
Now this is the same as the result from LinearModelFit
In[112]:= lm["BestFit"]
Out[112]= 33.8866 + 0.514093 x