2010-03-01 28 views
5

¿Hay una manera fácil de hacer una regresión de efectos fijos en R cuando el número de variables ficticias conduce a una matriz modelo que excede la longitud máxima del vector R ? Por ejemplo,Regresión de efectos fijos en R (con un número muy grande de variables ficticias)

> 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 

donde id es un factor (y es la variable que causa el problema anterior).

Sé que podría revisar y desvirtuar todos los datos, pero esto arroja los errores estándar (sí, podría calcular el ajuste "manual" del SE con un ajuste df pero me gustaría minimizar la probabilidad de que esté introduciendo nuevos errores). Miré el paquete de plm pero parece diseñado solo para datos de panel clásicos con un componente de tiempo, que no es la estructura de mis datos.

Respuesta

6

Plm funcionará bien para este tipo de datos. El componente de tiempo no es requerido.

> 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 
+0

Gracias Eduardo! Estás absolutamente en lo correcto. –

Cuestiones relacionadas