Dlaczego lm zabrakło pamięci, a mnożenie macierzy działa dobrze dla współczynników?
Próbuję zrobić regresję liniową z ustalonymi efektami z R. Moje dane wyglądają
<code>dte yr id v1 v2 . . . . . . . . . . . . . . . </code>
Zdecydowałem się po prostu to zrobićyr
czynnik i wykorzystanielm
:
<code>lm(v1 ~ factor(yr) + v2 - 1, data = df) </code>
Jednak wydaje się, że zabrakło pamięci. Mam 20 poziomów w moim czynniku idf
jest 14 milionów wierszy, których przechowywanie zajmuje około 2 GB, używam tego na komputerze z 22 GB przeznaczonym na ten proces.
Postanowiłem więc spróbować rzeczy w staromodny sposób: tworzyć fikcyjne zmienne dla każdego z moich latt1
dot20
wykonując:
<code>df$t1 <- 1*(df$yr==1) df$t2 <- 1*(df$yr==2) df$t3 <- 1*(df$yr==3) ... </code>
i po prostu oblicz:
<code>solve(crossprod(x), crossprod(x,y)) </code>
To działa bez problemu i daje odpowiedź niemal natychmiast.
Jestem szczególnie ciekawy, co takiego jest w lm, co sprawia, że zabrakło mu pamięci, gdy mogę obliczyć współczynniki w porządku? Dzięki.