【问题标题】:Why lm doesn't work on a modified data.frame in R?为什么 lm 不适用于 R 中修改后的 data.frame?
【发布时间】:2014-04-04 03:41:08
【问题描述】:

当我更改我的 data.frame 时,我收到一个错误并且无法执行 lm:

observation.not.i = area[-i, ]
fit.new.observation = lm(farm ~ land, data = observation.not.i)

错误是

Error in eval(expr, envir, enclos) : object 'land' not found 

我在折刀程序中使用它,如下所示:

r.jack = c(rep(0, 50))
y.hat = c(rep(0, 50))
for (i in 1:50) {
    observation.not.i = area[-i, ]
    fit.new.observation = lm(farm ~ land, data = observation.not.i)
    y.hat[i] = predict(fit.new.observation, data.frame(land.area=area[i, 3]))
    r.jack[i] = area[i, 2] - y.hat[i]
}

但是,当我运行 fit=lm(farm~land,data=area) 时,它运行良好。如果您知道问题的原因,请告诉我。

【问题讨论】:

  • 您需要为newdata 提供一个数据框,其中包含包含公式RHS 上所有变量的变量,但您提供的是一个变量land.area,因此land 在@987654328 中找不到@。为什么不predict(fit.new.observation, newdata = area[i, , drop = FALSE])
  • 嗨 Gavin,这与 user3114046 提供的答案相同。谢谢。我更理解这一点。

标签: r dataframe regression


【解决方案1】:
y.hat[i] = predict(fit.new.observation, data.frame(land.area=area[i, 3]))

fit.new.observation 模型在 predictnewdata 参数中需要一个名为 land 的列,但该列名为 land.area

【讨论】:

  • 预测(fit.new.observation, data.frame(land=area[i, 3]))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 2019-06-29
  • 1970-01-01
  • 1970-01-01
  • 2019-06-26
  • 1970-01-01
  • 2012-05-06
相关资源
最近更新 更多