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 time
com 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.plm
torna o problema mais claro. Para calcular R ^ 2, plm
tente fazer o seguinte:
beta <- coef(fe2)
X <- model.matrix(fe2)
crossprod(t(X), beta)
Isso não funciona porque beta
inclui apenas estimativas para year1
e year0:const
, enquanto X
também inclui uma coluna para year1:const
. Em outras palavras, X
inclui 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.
plm
versão 1.6-4, isso não é mais um problema, pois os coeficientes especificados são simplesmente eliminados.Respostas:
Tente usar
em vez de. Até funciona se você incluir redundantemente efeitos de tempo fixo na
*
interação (porque o tempo está sendo corrigido com efeito):fonte
*
deve ser usado em vez de:
, existe uma maneira de suprimir a saída de coeficientes de não interação?