Saya menggunakan plm()untuk memperkirakan model efek tetap dari formulir
y ~ x + time + time:fixed_trait
di mana fixed_traitvariabel yang bervariasi antar individu tetapi konstan dalam individu.
Inti dari berinteraksi timedengan fixed_traitadalah untuk memungkinkan efek fixed_traitbervariasi 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.plmmasalah membuat masalah menjadi lebih jelas. Untuk menghitung R ^ 2, plmcobalah untuk melakukan ini:
beta <- coef(fe2)
X <- model.matrix(fe2)
crossprod(t(X), beta)
Ini tidak berfungsi karena betahanya menyertakan perkiraan untuk year1dan year0:const, sementara Xjuga menyertakan kolom untuk year1:const. Dengan kata lain, Xsertakan kolom untuk keduanya year0:constdan 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.plmbekerja dengan model seperti itu?
===
Allison, Paul D. 2009. Model Regresi Efek Tetap. Los Angeles, CA: Sage. Lihat khususnya halaman 19-21.
plmversi 1.6-4, ini bukan masalah lagi karena koefisien-koefisien yang telah terukur dibuang begitu saja.