ฉันใช้plm()
เพื่อประเมินแบบจำลองเอฟเฟกต์คงที่ของแบบฟอร์ม
y ~ x + time + time:fixed_trait
ที่ไหน fixed_trait
เป็นตัวแปรที่แปรผันไปตามบุคคล แต่คงที่ภายในบุคคล
จุดของการโต้ตอบtime
กับfixed_trait
คือการอนุญาตให้มีผลของfixed_trait
การเปลี่ยนแปลงในช่วงเวลา (ฉันกำลังทำงานที่นี่จากหนังสือเล่มล่าสุดของ Paul Allison เกี่ยวกับเอฟเฟกต์คงที่การอ้างอิงต่อท้าย)
plm()
ไม่มีปัญหาในการประมาณค่าสัมประสิทธิ์และข้อผิดพลาดมาตรฐานสำหรับรุ่นดังกล่าว แต่summary.plm()
ไม่สามารถคำนวณ R ^ 2 สำหรับรุ่นเหล่านี้ได้ นี่คือปัญหาที่ฉันต้องการแก้ไข
นี่คือตัวอย่างเล็กน้อย:
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
การเจาะลึกplm:::summary.plm
ทำให้ปัญหาชัดเจนขึ้น ในการคำนวณ R ^ 2 ให้plm
ลองทำดังนี้
beta <- coef(fe2)
X <- model.matrix(fe2)
crossprod(t(X), beta)
นี้ไม่ได้ทำงานเพราะbeta
เพียง แต่มีการประมาณการyear1
และyear0:const
ในขณะที่ยังมีคอลัมน์สำหรับX
year1:const
กล่าวอีกนัยหนึ่งX
รวมคอลัมน์สำหรับทั้งyear0:const
และyear1:const
และเป็นไปไม่ได้ที่จะประมาณค่าสัมประสิทธิ์ทั้งสอง
วิธีแก้ปัญหาคือการสร้างคำการโต้ตอบ "ด้วยมือ" ก่อนที่จะป้อนลงในสูตร:
tmp$yearXconst <- tmp$year*tmp$const
fe3 <- plm(y ~ year + yearXconst, index=c('ID', 'year'), data=tmp)
summary(fe3) # works fine
แต่นี่เป็นเรื่องยุ่งยาก สั้นนี้มีอะไรที่ฉันสามารถทำได้เพื่อให้summary.plm
ทำงานกับรุ่นดังกล่าวหรือไม่
===
แอลลิสันพอลดี 2552 รูปแบบการถดถอยผลกระทบคงที่ Los Angeles, CA: Sage ดูหน้า 19-21 โดยเฉพาะ
plm
รุ่น 1.6-4 นี่ไม่ใช่ปัญหาอีกต่อไปเนื่องจากสัมประสิทธิ์ alised ลดลงอย่างง่ายดาย