将 fixef 强制转换为 R 中的数据框(PLM 包)

Coerce fixef to data frame in R (PLM package)

我想从固定效果面板数据回归中获取固定效果作为数据框。像这样:

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 搜索了一下,我得到的结果是:

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

这很容易构建。先查一下是什么对象 fixef returns:

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"

这告诉我们fixefreturnsclass'fixef'的一个对象,它的核心是一个长度为48的原子向量。除了class 属性有 3 个属性 "se"、"names"(通常可以使用 names 函数访问)和 "type".

那么你可以这样做:

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.

没有相应的方法