Por que o lm fica sem memória enquanto a multiplicação de matrizes funciona bem para coeficientes?
Eu estou tentando fazer regressão linear de efeitos fixos com R. Meus dados parecem
<code>dte yr id v1 v2 . . . . . . . . . . . . . . . </code>
Então decidi simplesmente fazer isso fazendoyr
um fator e usarlm
:
<code>lm(v1 ~ factor(yr) + v2 - 1, data = df) </code>
No entanto, isso parece ficar sem memória. Eu tenho 20 níveis no meu fator edf
é 14 milhões de linhas que leva cerca de 2 GB para armazenar, estou executando isso em uma máquina com 22 GB dedicados a este processo.
Decidi então experimentar as coisas à moda antiga: criar variáveis fictícias para cada um dos meus anost1
parat20
fazendo:
<code>df$t1 <- 1*(df$yr==1) df$t2 <- 1*(df$yr==2) df$t3 <- 1*(df$yr==3) ... </code>
e simplesmente calcular:
<code>solve(crossprod(x), crossprod(x,y)) </code>
Isso é executado sem problemas e produz a resposta quase imediatamente.
Estou curiosamente curioso sobre o que faz com que fique sem memória quando consigo calcular os coeficientes muito bem? Obrigado.