【问题标题】:Used Predict function on New Dataset with different Columns在具有不同列的新数据集上使用预测函数
【发布时间】:2015-05-14 05:32:23
【问题描述】:

使用 R 中的“stackloss”数据,我创建了一个回归模型,如下所示:

    stackloss.lm = lm(stack.loss ~  Air.Flow + Water.Temp + Acid.Conc.,data=stackloss)

stackloss.lm 
newdata = data.frame(Air.Flow=stackloss$Air.Flow, Water.Temp= stackloss$Water.Temp, Acid.Conc.=stackloss$Acid.Conc.)

假设我得到一个新数据集,需要根据之前的模型预测其“stack.loss”,如下所示:

#suppose I need to used my model on a new set of data
stackloss$predict1[-1] <- predict(stackloss.lm, newdata)

我收到此错误:

Error in `$<-.data.frame`(`*tmp*`, "predict1", value = numeric(0)) : 
  replacement has 0 rows, data has 21

他们是否可以在具有相同列但不同行的不同数据集上使用预测函数?

提前致谢。

【问题讨论】:

  • 这只是一个例子,就像stackloss$predict1[-1]它是具有不同行数的新数据集。我需要使用我的原始模型来预测新数据集的y,看看它是否准确。例如,我创建了一个模型来查看汽车保险的价格,我的模型将被公司用于所有汽车,因此我需要在多个数据集上使用我的模型。
  • stackloss2 &lt;- stackloss[-1,] stackloss2["predict1"] &lt;- NULL stackloss2$predict1 &lt;- predict(stackloss.lm, newdata)
  • 错误表示行数不匹配。我需要在具有不同行数的不同数据集上使用预测函数。
  • 我的意思是stackloss$predict1[-1],因为我试图在数据集中使用预测来处理不同的行。

标签: r regression predict


【解决方案1】:

您可以预测到任何长度的新数据集,您只需确保将结果分配给适当大小的现有向量。

这行会导致问题,因为

stackloss$predict1[-1] <- predict(stackloss.lm, newdata)

因为您不能同时分配和子集一个不存在的向量。这也行不通

dd <- data.frame(a=1:3)
dd$b[-1]<-1:2

用于拟合模型的stackloss 的长度将始终保持相同的长度,因此为该 data.frame 重新分配新值没有意义。如果您想使用较小的数据集进行预测,那很好

stackloss.lm = lm(stack.loss ~  Air.Flow + Water.Temp + Acid.Conc.,data=stackloss)

newdata = head(data.frame(Air.Flow=stackloss$Air.Flow, Water.Temp= stackloss$Water.Temp, Acid.Conc.=stackloss$Acid.Conc.),5)

predict(stackloss.lm, newdata)
       1        2        3        4        5 
38.76536 38.91749 32.44447 22.30223 19.71165 

由于结果与newdata 的行数相同(n=5),因此将这些附加到newdata 是有意义的。附加到 stackloss 是没有意义的,因为它有不同的行数 (n=21)

newdata$predcit1 <- predict(stackloss.lm, newdata)

【讨论】:

  • 感谢您的回答。我有一个跟进,如果我在原始数据集中添加新行,我仍然可以使用预测功能吗?
  • 是的。我不明白为什么不。
  • 但它会自动预测新行的yhat。谢谢
猜你喜欢
  • 2017-11-15
  • 2017-06-04
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 1970-01-01
  • 2014-02-15
相关资源
最近更新 更多