R等效S加功能

时间:2015-04-08 21:50:59

标签: r linear-regression

我试图使用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。

中使用上面的代码

2 个答案:

答案 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))

enter image description here

答案 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