我有一个具有权力关系的数据集(如下)。 (Y = aX ^ b)
Excel和xmgrace中的功率适合给了我几乎相同的拟合值。 (R ^ 2为0.993) Y = 215.47 X ^ 0.812
然而,当我尝试R的nls()函数时,我得到一个不同的值。另外,它不计算R ^ 2,因为它在统计上不合理。
但是如果我采用对数,我可以做一个lm()并获得0.993的R ^ 2。如何使用R..Is R nls()不正确地重现值excel和xmgrace产生的值?
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
答案 0 :(得分:4)
我认为相信一个估算超过R的估计是愚蠢的。 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) not 的作者的原因,因为它实际上是r-help邮件列表中的常见问题解答。