我正在研究状态和年份固定效应回归,根据该行的种族(白色,黑色,其他),每个州/年组合有3个观察值-请参阅下面的链接。
到目前为止,我一直在使用基本的lm函数来估计考虑所有三个种族的固定效应回归。我通过使用状态,年份和种族作为因子变量来做到这一点。我还在为每个种族运行单独的回归。问题是我更喜欢使用plm包,这样我就可以得到所有种族的模型的r平方内,但是它给了我错误。

编辑:I included a picture of my data here
数据是一个平衡的面板,有34个州,12年(2003-2014年),每个州/年组合有3个种族,因此共有1244个观测值。

这是我用来运行plm回归的代码:

#plm regression
plm.reg <- plm(drugcrime_ar ~ decrim_dummy + median_income + factor(race),
               data = my.data, index=c("st_name","year"), model = "within",
               effect = "twoways")


我得到的错误是:

Error in pdim.default(index[[1]], index[[2]]):
   duplicate couples (id-time)
In addition: Warning messages:
1: In pdata.frame(data, index) :
   duplicate couples (id-time) in resulting pdata.frame
   to find out which, use e.g. table(index(your_pdataframe), useNA = "ifany"
2: In is.pbalanced.default(index[[1]], index[[2]]) :
   duplicate couples (id-time)
 3: In is.pbalanced.default(index[[1]], index[[2]]) :
   duplicate couples (id-time)  `


是否有解决方法,还是我不走运?

最佳答案

plm函数仅需要一对id /时间。对于您提供的每个ID,您都有超过一年的时间。

如果每个st_namerace对组成一个“个人”(或您在面板的该维度上使用的任何名称),则可以执行以下操作:

library(dplyr)

my.data$id <- group_indices(my.data, st_name, race)
#which would be the same as my.data <- my.data %>% mutate(id = group_indices(st_name, race)), if this function supported mutate.

plm.reg <- plm(drugcrime_ar ~ decrim_dummy + median_income + factor(race),
           data = my.data, index=c("id","year"), model = "within",
           effect = "twoways")


但是请注意,在这种情况下,您不会使用@ Helix123建议的一种嵌套面板结构。您仅在重新定义面板的第一个尺寸。

10-07 13:00