这是我的第一篇文章,希望我不要做任何错误。
我试图在plm库中使用pgmm进行Arellano和Bond(1991)估计是不成功的。为了查看问题是否在我的数据中,我改为使用plm库中提供的数据,但在使用"摘要"时遇到了同样的问题。命令:
t(y)%*%x时出错:不一致的参数
虽然可以获得模型的系数。
我自己的数据有T = 3,N = 290。据我所知,T = 3是最小值,但应该足够了。当使用Arellano和Bond数据时,当T = 4时,我得到相同的错误。
data("EmplUK", package = "plm")
library(sqldf)
UK<-sqldf("select * from EmplUK where year in ('1982','1981',
'1980','1979')")
z1 <- pgmm(log(emp) ~ lag(log(emp), 1) + log(wage) +
log(capital) + log(output) | lag(log(emp), 2),
data = UK, effect = "twoways", model = "twosteps")
summary(z1)
我理解估计方法和R-公式的方式,左手项是因变量的差异,第一个右手项是滞后差。后一项由(t-2)
中因变量的水平进行检验我已经验证我使用的子集是T = 4的平衡面板。当我加入更多年份时,一切都会成功。所以它必须是面板的长度导致麻烦。
非常感谢任何帮助。
比约
答案 0 :(得分:1)
提出类似的问题here。建议该错误与mtest
有关,这是由pgmm摘要方法执行的序列相关性测试。单独运行该功能似乎确认了这个
>mtest(z1, order = 2)
Error in t(y) %*% x : non-conformable arguments
T = 3足以估算模型,但这只会让您估算最后一个时期。第二个订单mtest
要求残差包含至少3个期间,即您的模型的T = 5.