【问题标题】:R: lm and biglm producing different answersR:lm 和 biglm 产生不同的答案
【发布时间】:2011-10-10 11:08:44
【问题描述】:

为什么“lm”和“biglm”会产生不同的估计值?考虑下面的代码:

a = as.data.frame(cbind(y=rnorm(1000000), x1=rnorm(1000000), x2=rnorm(1000000)))
m1 = lm(y ~ x1 + x2, data=a); summary(m1)

library(biglm)
m2 = biglm(y ~ x1 + x2, data=a); summary(m2)

biglm 是否分块处理没有区别 - 最终估计与 lm 产生的不同。

【问题讨论】:

  • 我无法使用提供的代码重现这一点(我发现 lmbiglm 估计之间没有明显差异)。请您粘贴两个summary 电话的打印输出。
  • 如果不提供有关您的数据的更多信息,我无法看到您期望如何获得有用的答案。

标签: r


【解决方案1】:

仅仅因为篇幅而发布为答案:

m2$qr

$D
[1] 1.000000e+06 1.001150e+06 9.993772e+05

$rbar
[1] -8.581350e-04 -8.116662e-04 -1.225233e-03  

$thetab
[1]  7.863159e-04 -4.276900e-04 -1.552812e-03   # these are the coefficients

Rgames: m1$coefficients
  (Intercept)            x1            x2 
 7.846869e-04 -4.295926e-04 -1.552812e-03 

所以,是的,系数略有不同。例如,截距相差 0.2% 。这种差异是否对您的合身线质量有任何影响,很大程度上取决于您打算对合身做些什么。一体化?保证没问题。外推?总是有风险的,但不是因为斜率相差 0.5%。
我强烈建议您至少运行一些适合的测试用例,比如 f(x) = g(x) +runif(N) ; h(x)= g(x) +runif(N) #runif will return different sets of RVs

,看看 lm 和 biglm 返回的系数是否与原始 g(x) 值显着不同。

【讨论】:

  • 感谢您的回复,卡尔。在这个虚构的例子中,差异并不大。但在我的实际数据集中(太大而无法发布),差异是几个数量级。
  • 如果您从数据集中抽取一个具有代表性的小样本会发生什么?或者,如果差异如此之大,您应该绘制您的(完整)数据和两条拟合曲线,看看什么看起来合理。
  • 好的,数据集可能太大而无法发布,但您至少可以发布结果以向我们展示差异很大。 cov2cor(vcov(model)) 的结果是什么,即估计值是否高度相关?与标准误相比,估计值的差异是否较大?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 2014-03-11
  • 2017-01-27
  • 1970-01-01
  • 2020-05-31
  • 1970-01-01
  • 2012-10-26
相关资源
最近更新 更多