2012-02-11 21 views
2

我有一个具有权力关系的数据集(如下)。 (Y = aX^b)R Power适用于与excel不同的nls

在Excel和xmgrace中的适合度给了我一个几乎相同的适合值。 (R^2为0.993) Y = 215.47 X^0.812

然而,当我尝试R的nls()函数时,我得到了一个不同的值。另外它不计算R^2,因为它在统计学上不合理。但是如果我取对数,我可以做一个lm()并得到0.993的R^2。如何重现excel和xmgrace产生的值与使用R..Is R nls()不正确的功率匹配?

Drift Time Mass_Independent CS 
2.32 407.3417277 
2.32 419.1267553 
2.81 503.9859708 
2.92 501.0465281 
3.78 640.9024985 
4.00 688.7906761 
4.48 776.3958584 
5.67 918.9991003 
6.05 949.4448047 
6.86 993.9763311 
6.86 1064.539603 
6.97 1041.422648 
7.94 1112.407393 
8.42 1183.070416 
9.23 1302.622263 
9.29 1291.525748 

回答

4

我认为你相信一个R估计值的Excel估计是愚蠢的。 Excel在回归领域的缺陷长期存在并且有据可查:

nls(Mass_Ind_CS ~a*Drift_Time^b , dat, start=list(a=100, b=1)) 
#--------------------- 
Nonlinear regression model 
    model: Mass_Ind_CS ~ a * Drift_Time^b 
    data: dat 
     a  b 
227.0176 0.7828 
residual sum-of-squares: 10224 

Number of iterations to convergence: 5 
Achieved convergence tolerance: 3.617e-06 
#--------------------- 
plot(dat, xlim=range(dat$Drift_Time), ylim=range(dat$Mass_Ind_CS)) 
par(new=T) 
curve(215.47*x^0.812, from=min(dat$Drift_Time), 
         to=max(dat$Drift_Time), 
         ylim=range(dat$Mass_Ind_CS)) 
par(new=T) 
curve(227.0176*x^0.7828, from=min(dat$Drift_Time), 
          to=max(dat$Drift_Time), 
          ylim=range(dat$Mass_Ind_CS),col="red") 

R估计值用红色标出。它表明,在不考虑x =值范围内的预测的情况下,您将注意力集中在参数估计上是错误的。虽然您可以使用anova()进行模型比较,但没有真正的R-sq来估计孤立非线性模型。欢迎您搜索nls(Douglas Bates)而不是的作者的原因,因为它实际上是r-help邮件列表上的常见问题解答。

enter image description here

+0

OK..I并不意味着Excel是better..It给了我力量配合是非常相似,采用xmgrace生产。如果你记录日志,你可以建立一个线性模型,并得到一个R^2的值。这个值是(0.993)。与我观察到的强大的功能非常相似,适合于excel和xmgrace。你认为用日志比这样做更好? – lochi 2012-02-11 02:44:35

+0

如果你拟合一个具有高斯误差的log(Y)〜a + b * X模型,它将与nls()结果不同。这两个选项都不同于用glm()完成的对数线性模型。在许多情况下,这种选择最好是用现有的领域知识做比较,而不是用于解决统计学基础的比较。 – 2012-02-11 03:16:44

+0

这是我在R中用线性模型得到的对数变换215.5084 * x^0.812我相信Excel和Xmgrace都可以做到这一点。谢谢回答 – lochi 2012-02-11 03:49:38