r - 当 se.fit=TRUE 时,Predict 无法显示预测的标准误差

标签 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)

我的代码有什么问题吗?谢谢!

最佳答案

什么都没有。 ?predict.nlsDescription 部分的最后一行表示:

At present ‘se.fit’ and ‘interval’ are ignored.

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

更新:我第一次尝试时未能与 car::deltaMethod 配合使用。下面尝试使用 emdbook 包中的 deltavar 函数。 attach()/detach() 的东西是一个可怕的黑客,但它是我可以快速工作的东西(基于 with 的解决方案不起作用,因为非-标准评估)。欢迎改进。)

 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)

注意事项:

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

关于r - 当 se.fit=TRUE 时,Predict 无法显示预测的标准误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12425920/

相关文章:

r - 预测多个独立组的线性回归

r - R中的并行预测

r - datetime 无法从 chr 数据类型解析

r - 使用SparkR,如何将字符串列拆分为 'n'多列?

r - 估计命令如何查找 R 公式中的变量名称?

R 脚本 - nls 函数

r - 在 R 中组合多个模型对子集数据的预测的简单方法

r - 粘贴字符限制

r - 临时在 Hadoop 节点上安装 R 包用于流作业

r - nls 中的错误,步长因子降低到 minFactor 以下