Estou usando plm()para estimar modelos de efeitos fixos do formulário
y ~ x + time + time:fixed_trait
onde fixed_traité uma variável que varia entre indivíduos, mas é constante dentro dos indivíduos.
O ponto de interagir timecom fixed_traité permitir o efeito defixed_trait variar ao longo do tempo. (Estou trabalhando aqui no livreto recente de Paul Allison sobre efeitos fixos. Citação em anexo.)
plm()não tem problemas para estimar coeficientes e erros padrão para esses modelos. Massummary.plm() não é possível calcular R ^ 2 para esses modelos. Esse é o problema que eu gostaria de corrigir.
Aqui está um exemplo mínimo:
library(plm)
tmp <- data.frame(ID=rep(1:3, 2), year=rep(0:1, each=3),
y=rnorm(6), const=rep(1:3, 2))
fe1 <- plm(y ~ year, index=c('ID', 'year'), data=tmp)
fe2 <- plm(y ~ year + year:const, index=c('ID', 'year'), data=tmp)
summary(fe1) # works fine
summary(fe2) # Error in crossprod(t(X), beta) : non-conformable arguments
Investigar plm:::summary.plmtorna o problema mais claro. Para calcular R ^ 2, plmtente fazer o seguinte:
beta <- coef(fe2)
X <- model.matrix(fe2)
crossprod(t(X), beta)
Isso não funciona porque betainclui apenas estimativas para year1e year0:const, enquanto Xtambém inclui uma coluna para year1:const. Em outras palavras, Xinclui colunas para ambosyear0:const e year1:const, e é impossível estimar esses dois coeficientes.
Uma solução alternativa é criar o termo de interação "manualmente" antes de inseri-lo na fórmula:
tmp$yearXconst <- tmp$year*tmp$const
fe3 <- plm(y ~ year + yearXconst, index=c('ID', 'year'), data=tmp)
summary(fe3) # works fine
Mas isso é complicado. Além disso, há algo que eu possa fazer para tornarsummary.plm trabalhar com esses modelos?
===
Allison, Paul D. 2009. Modelos de regressão de efeitos fixos. Los Angeles, CA: Sage. Veja especialmente as páginas 19-21.
plmversão 1.6-4, isso não é mais um problema, pois os coeficientes especificados são simplesmente eliminados.