为什么“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生成的估计值不同。
答案 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)值返回显着不同的系数。