我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
使用这些模型吗?
===
Allison, Paul D. 2009。固定效应回归模型。加利福尼亚州洛杉矶:圣人。尤其见第 19-21 页。