¿Por qué me quedo sin memoria mientras que la multiplicación de matrices funciona bien para los coeficientes?

Estoy tratando de hacer efectos fijos de regresión lineal con R. Mis datos parecen

<code>dte   yr   id   v1   v2
  .    .    .    .    .
  .    .    .    .    .
  .    .    .    .    .
</code>

Entonces decidí simplemente hacer esto haciendoyr un factor y usolm:

<code>lm(v1 ~ factor(yr) + v2 - 1, data = df)
</code>

Sin embargo, esto parece quedarse sin memoria. Tengo 20 niveles en mi factor ydf es de 14 millones de filas, lo que requiere aproximadamente 2 GB para almacenar, lo estoy ejecutando en una máquina con 22 GB dedicados a este proceso.

Entonces decidí probar cosas a la antigua: crear variables ficticias para cada uno de mis añost1 at20 haciendo:

<code>df$t1 <- 1*(df$yr==1)
df$t2 <- 1*(df$yr==2)
df$t3 <- 1*(df$yr==3)
...
</code>

y simplemente computar:

<code>solve(crossprod(x), crossprod(x,y))
</code>

Esto se ejecuta sin problemas y produce la respuesta casi de inmediato.

Tengo curiosidad por saber de qué se trata el hecho de que me quede sin memoria cuando puedo calcular bien los coeficientes. Gracias.

Respuestas a la pregunta(5)

Su respuesta a la pregunta