Re: Finding Regression Coefficient
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1221] Re: Finding Regression Coefficient
- From: william.oliver at colorado.edu (Bill Oliver)
- Date: Fri, 26 May 1995 02:19:54 -0400
In article <3prrh5$533 at news0.cybernetics.net>, Andreas Fischer <w81b8512 at infosrv.RZ.UniBw-Muenchen.de> wrote: > I think it is not allowed to compute r^2, because this coefficient > (BRAVAIS-PEARSON correlation coefficient) is only appropriate for linear > regressions. A high r or r^2 doesn't tell anything about the correlation > between x and y if you assume a nonlinear function between them. > If I am wrong with this or if someone knows a nonlinear regression > coefficient, please let me know. > > Andreas Fischer > University of Armed Forces > Munich, Germany > andreas.fischer at rz.unibw-muenchen.de The original question, as I understood it, concerned how one computes the fit between the observed values and the expected values based on the best-fitting function. The NonLinearFit function provides the Chi-squared measure of fit when ShowProgress is set to True, but some people prefer R^2. The following example shows how I go about it--inelegant, but it seems to work. In[1]:= e1DataBlock = { {24,2734},{72,1877},{120,2071}, {168,1845},{216,1768},{264,1645},{312,1518}, {360,1606}, {24,3316},{72,2531},{120,1851}, {168,1511},{216,1408},{264,1281},{312,1201}, {360,1188} }; In[2]:= Needs["Statistics`NonlinearFit`"] In[3]:= Needs["Statistics`LinearRegression`"] In[4]:= (* 2-parameter power curve to fit *) f[x_] = 189 + a x^(-b); In[5]:= par = NonlinearFit[e1DataBlock,f[x],x,{{a,5036.4},{b,.24501}}] Out[1]= {a -> 8073.76, b -> 0.326802} In[6]:= xval = Transpose[e1DataBlock][[1]]; In[7]:= predicted = Table[f[ xval[[i]] ] /. par ,{i,1,Length[xval]}]; In[8]:= observed = Transpose[e1DataBlock][[2]]; In[9]:= p1 = Transpose[List[predicted, observed]]; Regress[p1,{1,x},x,OutputList->RSquared,OutputControl->NoPrint] Out[2]= RSquared -> 0.852369 -Bill- -- william.oliver at colorado.edu