【问题标题】:R: Store the results of a linear model directly to a data frameR:将线性模型的结果直接存储到数据框中
【发布时间】:2016-06-22 19:00:12
【问题描述】:

假设我有一个数据框是:

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 中?

【问题讨论】:

  • df$estimate.from.LM=predict(model, df[1])?
  • df$estimate <- predict(lm(y~x,data=df))
  • 那些可能是拟合值。 “估计值”与模型的参数有关,而不是观察值。
  • @Frank:我同意您在技术统计意义上的评论,但术语差异很大。 predict() 生成 OP 在他们的示例中给出的数字...
  • lm函数返回刚刚使用的拟合值:lm(y~x)$fitted.values

标签: r


【解决方案1】:

predict() 函数做你想做的事(fitted() 函数也是如此); predict() 函数有更多选项(参见 ?predict.lm;正如 @Frank 在 cmets 中所说,这是从 ?lmSee Also 部分链接的)

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

一本关于 R 建模的通用书籍应该会告诉您这一点(例如 Dalgaard 的 Introductory Statistics with 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 查找它们的帮助文件)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-09
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多