R:lm和biglm产生不同的答案

时间:2011-10-10 11:08:45

标签: r

为什么“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生成的估计值不同。

1 个答案:

答案 0 :(得分: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)值返回显着不同的系数。