Saya menggunakan plm()
untuk memperkirakan model efek tetap dari formulir
y ~ x + time + time:fixed_trait
di mana fixed_trait
variabel yang bervariasi antar individu tetapi konstan dalam individu.
Inti dari berinteraksi time
dengan fixed_trait
adalah untuk memungkinkan efek fixed_trait
bervariasi sepanjang waktu. (Saya bekerja di sini dari buklet terbaru Paul Allison tentang efek tetap. Kutipan ditambahkan.)
plm()
tidak memiliki masalah dalam memperkirakan koefisien dan kesalahan standar untuk model seperti itu. Tetapi summary.plm()
tidak dapat menghitung R ^ 2 untuk model-model ini. Ini adalah masalah yang ingin saya perbaiki.
Ini adalah contoh minimal:
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
Menggali plm:::summary.plm
masalah membuat masalah menjadi lebih jelas. Untuk menghitung R ^ 2, plm
cobalah untuk melakukan ini:
beta <- coef(fe2)
X <- model.matrix(fe2)
crossprod(t(X), beta)
Ini tidak berfungsi karena beta
hanya menyertakan perkiraan untuk year1
dan year0:const
, sementara X
juga menyertakan kolom untuk year1:const
. Dengan kata lain, X
sertakan kolom untuk keduanya year0:const
dan year1:const
, dan tidak mungkin untuk memperkirakan kedua koefisien tersebut.
Solusinya adalah membuat istilah interaksi "dengan tangan" sebelum memasukkannya ke dalam rumus:
tmp$yearXconst <- tmp$year*tmp$const
fe3 <- plm(y ~ year + yearXconst, index=c('ID', 'year'), data=tmp)
summary(fe3) # works fine
Tapi ini rumit. Singkatnya, apakah ada yang bisa saya lakukan untuk summary.plm
bekerja dengan model seperti itu?
===
Allison, Paul D. 2009. Model Regresi Efek Tetap. Los Angeles, CA: Sage. Lihat khususnya halaman 19-21.
plm
versi 1.6-4, ini bukan masalah lagi karena koefisien-koefisien yang telah terukur dibuang begitu saja.