【问题标题】:Predict with biglm get incorrect result comparing to lm与 lm 相比,使用 biglm 进行预测得到不正确的结果
【发布时间】:2016-01-11 09:37:18
【问题描述】:

我用biglmlm 拟合了一个模型,返回的模型摘要是一样的(只是格式不同)。但是,当我使用它们来预测相同的数据集时,它们会产生不同的结果。 lm 模型与我使用模型系数手动计算它们相比是正确的。但 biglm 模型不正确。

以下是型号:

m1 <- biglm(cost ~ d + v + zi, data = tl)

m2 <- lm(cost ~ d + v + zi, data = tl)

这是模型摘要的一小部分:

m1: 

d:  coef 473.9196

m2: 

d: coef 4.739e+02

其余的模型系数是匹配的,与上图相同。但是,当我使用模型进行预测时,结果却不同:m1 != m1

t1$m1 <- predict(m1, t1)

t1$m2 <- predict(m2, t1)

我尝试使用 predict.biglm() 但收到错误消息,指出该函数不存在。

我也看过这篇文章 (R: lm and biglm producing different answers) 并确定这不是原因。

数据集太大,不知道怎么在这里分享。我也可能需要一段时间才能先对一些信息进行解码。

但这里有一小部分结果比较表明预测是完全不同的。

      m1         m2
1798.831,  2365.868
1801.074,  2368.112
1482.508,  2351.042

【问题讨论】:

  • 您可以分享您的数据,以便社区可以运行您的代码吗?
  • 预测有何不同?
  • 让我试着弄清楚如何添加数据和示例。
  • 好的,所以它们非常不同。丢失数据的处理方式是否有不同的默认值? (idk) 尽量不要将预测分配回您的数据框,并查看它们。 p1 &lt;- predict(m1, t1); p2 &lt;- predict(m2, t1); length(as.numeric(p1)); length(p2) ; plot(as.numeric(p1), p2) 。我还将通过在新的 R 会话中再次运行您的代码来检查,以确保原始模型相同
  • @user20650,我按照你的建议做了:x1

标签: r lm


【解决方案1】:

经过漫长的一天,我终于弄清楚了问题所在。 我知道 biglm 方法要求训练和测试数据集具有所有因子水平的记录。因此,当我处理数据集时,我将每个缺失因子级别的 1 条记录添加到数据集中(类似于上面引用的另一个线程发布的添加虚拟对象方法)。

但是(!!),我没有使用 factor() 函数更新因子水平。在这种情况下,biglm 模型运行良好且语法正常。但是模型预测结果不是!!

无论如何,在我更新因子水平后,它工作得很好。

【讨论】:

    猜你喜欢
    • 2016-03-10
    • 1970-01-01
    • 2019-08-27
    • 2021-10-11
    • 1970-01-01
    • 2020-05-21
    • 2013-05-28
    • 2017-11-18
    • 2014-03-11
    相关资源
    最近更新 更多