निश्चित प्रभाव वाले मॉडल का अनुमान लगाने के लिए R और plm का उपयोग करना जिसमें समय के साथ सहभागिता शामिल है


16

मैं plm()फॉर्म के निश्चित-प्रभाव मॉडल का अनुमान लगाने के लिए उपयोग कर रहा हूं

y ~ x + time + time:fixed_trait

जहां fixed_traitएक चर है कि व्यक्तियों में भिन्न होती है लेकिन व्यक्तियों के भीतर निरंतर है।

समय के timeसाथ अलग-अलग fixed_traitहोने के प्रभाव को अनुमति देने के लिए बातचीत करने का बिंदु है fixed_trait। (मैं पॉल एलीसन की हाल की बुकलेट से निश्चित प्रभावों पर यहां काम कर रहा हूं। प्रशस्ति पत्र संलग्न है।)

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ऐसे मॉडल के साथ काम करने के लिए कर सकता हूं ?

===

एलीसन, पॉल डी। 2009. फिक्स्ड इफेक्ट्स रिग्रेशन मॉडल। लॉस एंजिल्स, सीए: सेज। विशेष रूप से पृष्ठ 19-21 देखें।


1
plm1.6-4 संस्करण के साथ शुरुआत , यह अब कोई समस्या नहीं है क्योंकि संशोधित गुणांक बस गिरा दिए जाते हैं।
हेलिक्स123

जवाबों:


9

प्रयोग करके देखें

fe3 <- plm(y ~ year * const, index = c('ID', 'year'), data = tmp)

बजाय। यह तब भी काम करता है जब आप *बातचीत में समय निश्चित प्रभावों सहित अतिरेक से काम कर रहे हों (क्योंकि समय निश्चित किया जा रहा है-एड-आउट):

fe4 <- plm(y ~ year * const, index = c('ID', 'year'), data = tmp, effect = "twoway")

यह देखते हुए कि *इसके बजाय इस्तेमाल किया जाना है :, क्या गैर-संपर्क गुणांक के उत्पादन को दबाने का एक तरीका है?
आर्थर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.