Я пытаюсь сделать линейную регрессию с фиксированными эффектами с R. Мои данные выглядят как
dte   yr   id   v1   v2
  .    .    .    .    .
  .    .    .    .    .
  .    .    .    .    .
Тогда я решил просто сделать это, сделав yr фактором и используя lm:
lm(v1 ~ factor(yr) + v2 - 1, data = df)
Однако, похоже, у него не хватает памяти. У меня 20 уровней в моем коэффициенте, а df - 14 миллионов строк, которые занимают около 2 ГБ для хранения. Я запускаю это на машине с 22 ГБ, предназначенной для этого процесса.
Затем я решил попробовать вещи старомодным способом: создать фиктивные переменные для каждого из моих лет t1 до t20, выполнив:
df$t1 <- 1*(df$yr==1)
df$t2 <- 1*(df$yr==2)
df$t3 <- 1*(df$yr==3)
...
и просто вычислить:
solve(crossprod(x), crossprod(x,y))
Это работает без проблем и дает ответ почти сразу.
Мне особенно любопытно, что это за lm, из-за чего у него заканчивается память, когда я могу вычислить коэффициенты просто отлично? Спасибо.