【问题标题】:How can I predict a single value from a linear regression in R?如何从 R 中的线性回归预测单个值?
【发布时间】:2018-06-21 15:15:47
【问题描述】:

我对美元价格与 GDPPC 进行了线性回归,如下所示:

r = lm(dollar_value ~ GDPPC, prices_gdp)

prices_gdpdata.table,如果这很重要的话)。

我现在可以使用predict 基于data.table 轻松生成一堆值。但我想要做的(为了在图表上绘制geom_abline)是计算 GDPPC 为零时的美元价值,并将其作为数字返回——类似于

predict(r, 0)

这给了我一个错误:Error in eval(predvars, data, env): object 'GDPPC' not found。除了创建一个新的虚拟 data.table 并将 GDPPC=0 作为唯一的行,将其输入,然后将数字拉出之外,有什么方法可以做到这一点?

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    您可以只创建相同的数据表并将回归量 GDPPC 设为零。试试:

    predict(r, data.frame(GDPPC = 0))
    

    【讨论】:

      【解决方案2】:

      您可以创建一个函数来提取模型中术语的名称并调用为您进行预测。

      preds <- function(o, vals){
        #' Make prediction from simple linear regression
        #'
        #' Makes a prediction from a simple linear regression without
        #' needing to manually create a data.frame.  This will fail
        #' on models with more than one predictor.
        #' @param o The lm object to use to make predictions
        #' @param vals The values to make predictions for.
        dat <- setNames(data.frame(vals), as.character(formula(o)[[3]]))
        predict(o, newdata = dat)
      }
      

      并使用它...

      > o <- lm(mpg ~ wt, data = mtcars)
      > preds(o, 1:3)
             1        2        3 
      31.94065 26.59618 21.25171 
      

      【讨论】:

      • 如果您事先加载了 docstring 包,则可以通过 ?preds 查看评论。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      相关资源
      最近更新 更多