【问题标题】:why the predict() function does have different rows in R为什么 predict() 函数在 R 中有不同的行
【发布时间】:2020-11-02 04:43:01
【问题描述】:

我正在尝试使用线性回归来预测数据。没有错误,但有点奇怪。我从具有 4000 行的 data1 创建了一个线性回归,但我试图用这个只有 1000 行的线性回归来预测 data2。

然后,我认为变量的结果应该只有 1000 行。但它一直显示 4000 个变量。不知道怎么回事。

model = lm(train$crashes ~ train$latitude)
prediction1 = predict(model, newdata = test)
csv1 = data.frame(Id = c(1:1000), Predicted = prediction1)

从这段代码中,我相信它只需要预测只有 1000 行的“测试”数据。但它说“参数意味着不同的行数:1000、4337”这里的 4337 来自具有 4337 行的火车数据。

我认为我做错了。如何解决?

【问题讨论】:

  • 我会在黑暗中刺伤 - test 有 4000 行,因为您要求 predict(model, newdata = test),所以 test 的每一行都会得到 1 个结果
  • test 只有 1000 行。这就是为什么它很奇怪...... :(

标签: r


【解决方案1】:

改变这一行:

model = lm(train$crashes ~ train$latitude)

到:

model <- lm(crashes ~ latitude, data=train)

使用公式接口时,理想情况下,数据集的名称应该在data= 中指定一次,而不是像train$crashes 等为每个变量指定。

当您使用newdata= 调用predict 时,将在您指定的新数据集中解释相同的crashes ~ latitude 公式。


我在尝试复制您的问题时收到的警告应该为您敲响警钟:

train <- data.frame(crashes = rnorm(1000), latitude=sample(1:1000))
test <- data.frame(crashes = rnorm(4377), latitude=sample(1:4377))

model <- lm(train$crashes ~ train$latitude)
prediction1 <- predict(model, newdata = test)

警告消息:“newdata”有 4337 行,但找到的变量有 1000 行

【讨论】:

  • 非常感谢!!这是非常有帮助的!我终于得到了正确的预测!
猜你喜欢
  • 2012-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多