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.

questionAnswers(5)

yourAnswerToTheQuestion