2010-03-01 13 views
5

Existe-t-il un moyen facile de faire une régression à effets fixes dans R lorsque le nombre de variables fictives conduit à une matrice de modèle qui dépasse la longueur maximale du vecteur R ? Par exemple,Régression à effets fixes dans R (avec un très grand nombre de variables fictives)

> 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 

où id est un facteur (et est la variable causant le problème ci-dessus). Je sais que je pourrais passer à travers et dé-signifier toutes les données, mais cela jette les erreurs standard (oui, vous pourriez calculer le SE "à la main" w/un réglage df mais je voudrais minimiser la probabilité que je présente de nouvelles erreurs). J'ai regardé le paquet de plm mais il semble seulement conçu pour les données de panneau classiques w/un composant de temps, qui n'est pas la structure de mes données.

Répondre

6

Plm fonctionnera correctement pour ce type de données. Le composant de temps n'est pas requis.

> 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

Merci Eduardo! Vous avez absolument raison. –

Questions connexes