Rとplmを使用して、時間との相互作用を含む固定効果モデルを推定する


16

plm()の形式の固定効果モデルを推定するために使用しています

y ~ x + time + time:fixed_trait

where 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のみの推定値を含んyear1year0: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ようなモデルで作業するためにできることはありますか?

===

アリソン、ポールD.2009。固定効果回帰モデル。カリフォルニア州ロサンゼルス:セージ。特に19〜21ページを参照してください。


1
始まるplmalised係数は単純にドロップされるようバージョン1.6から4、これはもはや問題ではありません。
Helix123

回答:


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")

*代わりに使用する必要があることを考えると:、非相互作用係数の出力を抑制する方法はありますか?
アーサー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.