小编Fis*_*h11的帖子

从 caret::train 获取预测的置信区间

我试图弄清楚如何从插入符::训练线性模型中获取置信区间。

我的第一次尝试只是使用通常的 lm 置信区间参数来运行预测:

m <- caret::train(mpg ~ poly(hp,2), data=mtcars, method="lm")
predict(m, newdata=mtcars, interval="confidence", level=0.95)
Run Code Online (Sandbox Code Playgroud)

但看起来从 caret::train 返回的对象没有实现这个。

我的第二次尝试是提取最终模型并对此进行预测:

m <- caret::train(mpg ~ poly(hp,2), data=mtcars, method="lm")
fm <- m$finalModel
predict(fm, newdata=mtcars, interval="confidence", level=0.95)
Run Code Online (Sandbox Code Playgroud)

但我得到了错误

Error in eval(predvars, data, env) : object 'poly(hp, 2)1' not found
Run Code Online (Sandbox Code Playgroud)

深入挖掘,最终模型似乎对公式有一些奇怪的表示,并且正在我的新数据中搜索“poly(hp, 2)1”列,而不是评估公式。m$finalModel 看起来像这样:

Call:
lm(formula = .outcome ~ ., data = dat)

Coefficients:
   (Intercept)  `poly(hp, 2)1`  `poly(hp, 2)2`  
         20.09          -26.05           13.15
Run Code Online (Sandbox Code Playgroud)

我应该补充一点,我不只是使用lm,因为我使用插入符号通过交叉验证来拟合模型。

如何通过 caret::train 从线性模型拟合中获取置信区间?

r r-caret

3
推荐指数
1
解决办法
2169
查看次数

标签 统计

r ×1

r-caret ×1