Warum geht mir der Speicher aus, während die Matrixmultiplikation für Koeffizienten gut funktioniert?

Ich versuche, lineare Regression mit festen Effekten mit R durchzuführen. Meine Daten sehen aus wie

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

Ich entschied mich dann, dies einfach zu tun, indem ich machteyr ein Faktor und Verwendunglm:

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

Dies scheint jedoch keinen Speicher mehr zu haben. Ich habe 20 Stufen in meinem Faktor unddf Das Speichern von 14 Millionen Zeilen dauert ca. 2 GB. Ich führe dies auf einem Computer mit 22 GB aus, der für diesen Prozess vorgesehen ist.

Ich beschloss dann, die Dinge auf die altmodische Art und Weise auszuprobieren: Erstelle Dummy-Variablen für jedes meiner Jahret1 zut20 indem ich tue:

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

und einfach berechnen:

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

Dies funktioniert problemlos und liefert die Antwort fast sofort.

Ich bin besonders neugierig, woran es liegt, dass mir der Speicher ausgeht, wenn ich die Koeffizienten gut berechnen kann. Vielen Dank.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage