固定效应 plm 包 R - 每个 year/id 多次观察

Fixed Effects plm package R - multiple observations per year/id

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

编辑:I included a picture of my data here 数据是一个平衡面板,有 34 个州,12 年(2003-2014)和每个 state/year 组合的 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")

我在 return 中遇到的错误:

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/time。对于您提供的每个 ID,您有超过一年的时间。

如果每个 st_namerace 对形成一个 "individual"(或者你给这个面板的这个维度起的任何名字),那么你可以这样做:

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 建议的嵌套面板结构。您只是重新定义面板的第一个维度。