预测预测的标准误差

时间:2012-12-07 00:29:22

标签: r stata linear-regression forecasting standard-error

我是R的新手,来自Stata世界。我只是运行一个线性模型(大约有100个变量,每个变量有500个数据点左右),如下所示:

RegModel.3 <- lm(ordercount~timecount2+timecount4 .... expeditedrop, data=Dataset)

现在我想找到预测的标准误差,比如每个拟合值的stata中的stdf函数。

我尝试过以下代码:

predict(RegModel.3$fitted.values, new, se.fit=TRUE)

但我收到以下错误:

Error in UseMethod("predict") : no applicable method for 'predict' applied to an object of class "c('double', 'numeric')"

我做错了什么?另外,我如何使用write.csv命令以类似于我编写系数的方式导出输出:

write.csv(RegModel.3$coefficients, file='results.csv')

谢谢!

1 个答案:

答案 0 :(得分:4)

?lm获取的可重复示例:

ctl <- c(4.17,5.58,5.18,6.11,4.50,4.61,5.17,4.53,5.33,5.14)
trt <- c(4.81,4.17,4.41,3.59,5.87,3.83,6.03,4.89,4.32,4.69)
group <- gl(2,10,20, labels=c("Ctl","Trt"))
weight <- c(ctl, trt)
lm.D9 <- lm(weight ~ group)


pp <- predict(lm.D9, interval="prediction",se.fit=TRUE)

(参见?predict.lm以供参考)和

write.csv(cbind(pp$fit,stderr=pp$se.fit),file="predintervals.csv")

应该这样做。 (在这种情况下,标准误差都是相同的,因为只有一个分类预测器,没有连续预测器......)

PS:尽可能使用标准访问器(例如coef()提取系数或fitted()提取拟合值)比使用$到达对象内部更好。请尝试methods(class="lm")查看可用的访问者。

编辑:说明一般方法仍适用于大问题:

set.seed(101)
X <- matrix(runif(101*500),nrow=500)
prednames <- paste0("predictor",1:100)
X2 <- setNames(as.data.frame(X),
               c("response",prednames))
form <- reformulate(paste(prednames,collapse="+"),response="response")
fit1 <- lm(form,data=X2)
pp <- predict(fit1,interval="predict",se.fit=TRUE)