我试图使用S plus函数预测和逐点从R中的拟合线性回归模型得到预测。我只是想知道是否有人知道这些的R等价物。我知道R中有predict
但是R中没有se.fit = TRUE
参数。我的代码如下:
使用mtcars作为样本数据:
# S plus codes
model.lm <- lm(mpg ~ disp, data = mtcars)
newData <- data.frame(disp=300)
predict.disp <- predict(model.lm, newData, se.fit = TRUE)
pointwise(predict.disp, 0.99)
我尝试在R中运行下面的代码,但它似乎没有给我与上面代码中获得的S plus输出相同的东西:
predict(model.lm, newData, interval = "prediction", level = 0.99)
还有其他人在R遇到过这个问题吗?
编辑:
这里是S plus的观点:
function(results.predict, coverage = 0.99)
{
fit <- results.predict$fit
limits <- qt(1 - (1 - coverage)/2, results.predict$df)*results.predict$se.fit
list(upper = fit + limits, fit = fit, lower = fit - limits)
}
感谢您的所有答案。我想另一个想法是在R。
中使用上面的代码答案 0 :(得分:4)
在查看帮助页面后,我认为这样做了:
est <- predict(lm(y ~ x), new, se.fit = TRUE)
matplot(x = seq(-3, 3, 0.5), est$fit + cbind( est$se.fit*-1.96, 0, est$se.fit*1.96))
答案 1 :(得分:4)
您的不匹配是由于计算预测而非置信区间。
predict(model.lm, newData, interval="confidence", level=0.99)
fit lwr upr
1 17.23532 15.41756 19.05308
使用上面提供的pointwise
函数的结果是相同的(根据向量与列表,顺序以及下限和上限的名称的差异):
pointwise(predict.disp,0.99)
$upper
1
19.05308
$fit
1
17.23532
$lower
1
15.41756