我是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')
谢谢!
答案 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)