2011-10-10 70 views
-1

爲什麼「lm」和「biglm」產生不同的估計?考慮下面的代碼: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產生了不同。

+2

我無法使用提供的代碼重現此操作(我看不到'lm'和'biglm' esimates之間的明顯區別)。你能否粘貼兩個'summary'調用的打印輸出。 – NPE

+0

我無法看到您希望如何獲得有用的答案,而無需提供有關您的數據的更多信息。 – hadley

回答

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)的值返回顯著不同的係數。

+0

感謝您的迴應,Carl。在這個製造的例子中,差異並不大。但是在我的實際數據集中(這個數據集太大而無法發佈),差異是幾個數量級。 – user702432

+0

如果你拿一個有代表性的數據集樣本,會發生什麼?或者,如果差異很大,您應該繪製您的(完整)數據和兩條擬合曲線,看看看起來合理。 –

+0

好吧,數據集可能太大而無法發佈,但您至少可以發佈結果來向我們展示這是一個很大的區別。 'cov2cor(vcov(model))'的結果是什麼,即估計是否強相關?估計的差異是否大於標準誤差? –

相關問題