【发布时间】:2014-03-08 21:17:45
【问题描述】:
说明
我正在尝试为theta = x0 * exp(-kappa*l) 形式的数据拟合指数曲线。
我首先使用linear = lm( I(-log(temp.theta/x0)) ~ l + 0 ) 来获取系数(k = coef(linear)),然后使用nls(temp.theta ~ I(x0 * exp(-k*l)) + 0, algorithm = "plinear" , start = list(k=k)),因为我不确定lm() 的错误是否具有正确的性质。
这个决定来自阅读 stats.stackexchange 上关于模型的一些问答,他们在其中讨论了加性噪声与乘性噪声(=> 误差估计?),我不太了解,因为我只有统计的基本知识。由于lm() 和nls() 给了我不同的错误估计,我直觉地认为后者可能更准确。
问题是nls(... , algorithm="plinear") 产生了我想要的系数,还有.lin 的东西,我理解它是乘以等式的整个右侧,因此弄乱了我的模型,因为它只对截距有意义在x0。
问题
有没有办法设置.lin = 1 或以某种方式将其关闭?
或者:lm() 模型是否足以让我进行合理的错误估计?
可重现的例子
(抱歉没有马上包括,我觉得还是抽象的问比较好):
l = c(0.001 , 0.002 , 0.003 , 0.004 , 0.005)
temp.theta = c(84.405 , 70.265 , 58.689 , 49.428 , 41.188)
x0 = 100
temp.lm = lm( I(-log(temp.theta/x0)) ~ l + 0 )
k=coef(temp.lm)
temp.nls = nls(temp.theta ~ I(x0 * exp(-k*l)) + 0, algorithm="plinear", start=list(k=k))
kappa=coef(temp.nls)
kappa
【问题讨论】:
-
为此使用默认算法(即高斯-牛顿算法)。
标签: r regression linear-regression