假设我有一个数据框:
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中?
答案 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
)