Р: Лм и Биглм дают разные ответы - PullRequest
0 голосов
/ 10 октября 2011

Почему "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 Ответ

1 голос
/ 10 октября 2011

Публикация в качестве ответа просто из-за длины:

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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...