3

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

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

现在我想stdf为每个拟合值找到预测的标准误差,就像 stata 中的函数一样。

我试过以下代码:

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')

谢谢!

4

1 回答 1

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)
于 2012-12-07T00:36:25.170 回答