将修复内容强制转换为R中的数据框(PLM包)

时间:2016-07-15 17:22:17

标签: r plm

我希望将固定效果面板数据回归的固定效果作为数据框。像这样:

data("Produc", package = "plm")
zz <- plm(log(gsp) ~ log(pcap) + log(pc) + log(emp) + unemp,
data = Produc, index = c("state","year"))
View(as.data.frame(fixef(zz)))

不幸的是,最后一句话不起作用。

我的预期输出将是一个数据框,其中state位于第一列,固定效果位于第二列。

我用Google搜索了,我想出的就是:Extract Fixed Effect and Random Effect in Dataframe

不幸的是,这个答案似乎没有起作用。

1 个答案:

答案 0 :(得分:1)

这很容易构建。首先检查哪种对象fixef返回:

str(fixef(zz))
#Class 'fixef'  atomic [1:48] 2.2 2.37 2.26 2.5 2.4 ...
#  ..- attr(*, "se")= Named num [1:48] 0.176 0.175 0.167 0.201 0.173 ...
#  .. ..- attr(*, "names")= chr [1:48] "ALABAMA" "ARIZONA" "ARKANSAS" "CALIFORNIA" ...
#  ..- attr(*, "type")= chr "level"

这告诉我们fixef返回类'fixef'的对象,其核心是长度为48的原子向量。除了class属性外,还有3个属性“se”,“names” (通常可以使用names函数访问)和“类型”。

然后你可以这样做:

data.frame(state = names(fixef(zz)),
           fixef = as.vector(fixef(zz)))
#            state    fixef
#1         ALABAMA 2.201617
#2         ARIZONA 2.368088
#3        ARKANSAS 2.263016
# ...

as.vector是必要的,因为data.frame会尝试将S3对象强制转换为data.frame,并且as.data.frame没有相应的方法。