2016-01-10 54 views
0

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

这里有机型:

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 
+0

您可以分享您的数据,以便社区可以运行您的代码? – MLavoie

+0

预测有多不同? – user20650

+0

让我试着弄清楚如何添加数据和示例。 –

回答

0

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

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

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