预测不能显示预测的标准误差,se.fit = TRUE

Ma *_*hen 2 r nls predict

如帮助(predict.nls)中所述,当se.fit = TRUE时,应计算预测的标准误差.但是,我在下面的代码不显示,而只显示预测.

alloy <- data.frame(x=c(10,30,51,101,203,405,608,810,1013,2026,4052,6078,
                        8104,10130),
                    y=c(0.3561333,0.3453,0.3355,0.327453,0.3065299,0.2839316,
                        0.2675214,0.2552821,0.2455726,0.2264957,0.2049573,
                        0.1886496,0.1755897,0.1651624))
model <- nls(y ~ a * x^(-b), data=alloy, start=list(a=.5, b=.1))
predict(model, se=TRUE)
Run Code Online (Sandbox Code Playgroud)

我的代码出了什么问题?谢谢!

Ben*_*ker 5

没有.该Description部分的最后一行?predict.nls说:

At present ‘se.fit’ and ‘interval’ are ignored.
Run Code Online (Sandbox Code Playgroud)

也许包中的deltaMethod功能car会有所帮助.(library("sos"); findFn("{delta method} nls")......的结果)

更新:car::deltaMethod我第一次尝试时没有得到它.这是尝试使用包中的deltavar功能emdbook.这些attach()/detach()东西是一个可怕的黑客,但这是我可以快速with工作(由于非标准的评估,基于a 的解决方案不起作用).欢迎改进.)

 attach(alloy)
> deltavar(a*x^(-b),meanval=coef(model),Sigma=vcov(model))
 [1] 1.445018e-04 6.956934e-05 4.897363e-05 3.287949e-05 2.527709e-05
 [6] 2.379668e-05 2.487129e-05 2.626029e-05 2.762930e-05 3.300235e-05
[11] 3.933191e-05 4.317493e-05 4.588509e-05 4.795406e-05
> detach(alloy)
Run Code Online (Sandbox Code Playgroud)

注意事项:

  • 这些是差异,而不是标准误差;
  • 这是一种delta方法近似,在强非线性或强非高斯误差的情况下可能是不准确的(我相信Brian Ripley过去曾说过他不认为delta方法近似对于一般用途来说足够可靠,但是他是纯粹主义者)
  • 我没有检查过这是一个明智的答案