Регрессия с фиксированными эффектами в R (с очень большим количеством фиктивных переменных)

Есть ли простой способ выполнить регрессию с фиксированными эффектами в R, когда количество фиктивных переменных приводит к матрице модели, которая превышает максимальную длину вектора R? Например.,

> m <- lm(log(bid) ~ after + I(after*score) + id, data = data)
Error in model.matrix.default(mt, mf, contrasts) : 
cannot allocate vector of length 905986769

где id — фактор (и переменная, вызывающая описанную выше проблему).

Я знаю, что могу пройтись по всем данным и обесценить их, но это сбрасывает стандартные ошибки (да, вы можете вычислить SE "вручную" с корректировкой df, но я хотел бы свести к минимуму вероятность того, что я вношу новые ошибки). Я просмотрел пакет plm, но, похоже, он предназначен только для классических панельных данных с компонентом времени, который не является структурой моих данных.


r plm
person John Horton    schedule 01.03.2010    source источник


Ответы (1)


Plm отлично подойдет для такого рода данных. Компонент времени не требуется.

> library(plm)
> data("Produc", package="plm")
> zz <- plm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp, data=Produc, index=c("state"))
> zz2 <- lm(log(gsp)~log(pcap)+log(pc)+log(emp)+unemp+factor(state), data=Produc)
> summary(zz)$coefficients[,1:3]
              Estimate   Std. Error    t-value
log(pcap) -0.026149654 0.0290015755 -0.9016632
log(pc)    0.292006925 0.0251196728 11.6246309
log(emp)   0.768159473 0.0300917394 25.5272539
unemp     -0.005297741 0.0009887257 -5.3581508
> summary(zz2)$coefficients[1:5,1:3]
                Estimate   Std. Error    t value
(Intercept)  2.201617056 0.1760038727 12.5089126
log(pcap)   -0.026149654 0.0290015755 -0.9016632
log(pc)      0.292006925 0.0251196728 11.6246309
log(emp)     0.768159473 0.0300917394 25.5272539
unemp       -0.005297741 0.0009887257 -5.3581508
person Eduardo Leoni    schedule 01.03.2010
comment
Я думаю, что пакет жизни от Саймона Гаура в наши дни лучше, основываясь на моем собственном опыте. - person Jesper Hybel Pedersen; 06.03.2020