我正在进行状态和年份固定效果回归,根据该行的比赛(白色,黑色,其他),每个状态/年组合有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) `
是否有解决方法或我运气不好?
答案 0 :(得分:1)
plm
函数只需要一对id / time。对于您提供的每个ID,您有一年以上的时间。
如果每个st_name
和race
对组成一个&#34;个人&#34; (或者你给小组这个维度的名字),那么你可以这样做:
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建议的那种嵌套面板结构。您只是重新定义了面板的第一个维度。