R:将线性模型的结果直接存储到数据框

时间:2016-06-22 19:00:13

标签: r

假设我有一个数据框:

df:
x|y
1|2
2|3
3|5
4|8

如果我这样做

lm(y~x) 

我将获得线性模型

y=-0.5+2*x. 

如何将此线性模型的估计值直接存储到数据框中,因此它看起来像

df:
x|y|estimate.from.LM
1|2|1.5
2|3|3.5
3|5|5.5
4|8|7.5

当然,一种方法是简单地手工创建一个新列并为其指定线性模型的直接值,例如

df$estimate.from.LM=-.5+2*df$x

在这个例子中很容易做到。但是当线性模型变得更复杂,有更丑陋的系数和更多的变量时,有没有一种优雅的方法来将它们的估计值存储在df中?

1 个答案:

答案 0 :(得分:1)

predict()函数可以执行您想要的操作(fitted()函数也是如此); predict()函数有更多选项(请参阅?predict.lm;正如@Frank在评论中所述,这是从?lm另请参阅部分链接的

dd <- data.frame(x=1:4,y=c(2,3,5,8))
dd$est <- predict(lm(y~x,data=dd))

关于R建模的一本好的通用书应该告诉你这个(例如Dalgaard的介绍统计与R ,Julian Faraway的书) - 我确定在那里虽然我不能指向特定的教程,但在网上也有很多教程。找出你可以用模型做什么的一个提示如下:

m <- lm(y~x,data=dd) ## fitted model
class(m)   ## "lm"
methods(class="lm")
## [1] add1           alias          anova          case.names     coerce        
## [6] confint        cooks.distance deviance       dfbeta         dfbetas       
## [11] drop1          dummy.coef     effects        extractAIC     family        
## [16] formula        hatvalues      influence      initialize     kappa         
## [21] labels         logLik         model.frame    model.matrix   nobs          
## [26] plot           predict        print          proj           qr            
## [31] residuals      rstandard      rstudent       show           simulate      
## [36] slotsFromS3    summary        variable.names vcov         

现在,您可以尝试猜测其中任何一项是否有用(或查看其帮助文件,例如?confint.lm