这是与this post相关的后续问题,我认为这个问题尚未解决。
所以我重复数据
============================================
year | comp | count | value.x | value.y
------+------+-------+----------+-----------
2000 | A | USA | 1029.0 | 239481
------+------+-------+----------+-----------
2000 | A | CAN | 2341.4 | 129333
------+------+-------+----------+-----------
2000 | B | USA | 2847.7 | 187319
------+------+-------+----------+-----------
2000 | B | CAN | 4820.5 | 392039
------+------+-------+----------+-----------
2001 | A | USA | 7289.9 | 429481
------+------+-------+----------+-----------
2001 | A | CAN | 5067.3 | 589143
------+------+-------+----------+-----------
2001 | B | USA | 7847.8 | 958234
------+------+-------+----------+-----------
2001 | B | CAN | 9820.0 | 1029385
============================================
虽然从编程的角度来看,该帖子中的一些答案可以解决这个问题远未完成的问题。
我的问题更具体。
我想根据上面显示的数据运行固定效果和随机效果模型。我要研究value.x
对value.y
和comp
的影响,year
和count
无效(或控制fakedata$id <- fakedata %>% group_indices(comp, count)
)
this post中提供的用于处理ID重复的建议答案如下:
plm(value.y ~ value.x, model = "within", data=fakedata, index=c(id,year))
然后运行
comp
虽然对count
和comp
进行分组然后运行固定效果或随机效果模型有效,但此策略假设每个cou
在每个{{1}中的处理方式不同}} 即可。这不一定是某人从这种回归中想要的东西。
如前所述,在我的情况下,我想知道value.x
对value.y
和comp
year
的影响,无法解决(或控制count
})
我认为这适合以下形式的模型:
plm(value.y ~ value.x + factor(cou), model = "within", data=fakedata, index=c(as.numeric(comp),year))
正如一些答案中所建议的那样。但是这对我不起作用,并且出现了plm packadge的常见错误消息:
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)
那么,如何在不与comp
和cou
进行交互的情况下进行固定效果模型?
答案 0 :(得分:0)
对于固定效果,您可以运行简单的回归处理年份和comp作为虚拟变量。在这种情况下,您将获得无国籍的固定效果。
lm(value.y ~ value.x + factor(year) + factor(comp)
您甚至可以将国家/地区作为因素。在这种情况下,您将获得与使用id索引运行plm相同的结果(要获得完全相同的结果,您可能需要手动选择虚拟对象,因此它们在两个回归中都是相同的)。这是LSDV(最小二乘虚拟变量)模型。
lm(value.y ~ value.x + factor(year) + factor(comp) + factor(count)
plm(value.y ~ value.x, model = "within", data=fakedata, index=c(id,year))
如果您想选择哪个因素是基本因素,您可以手动创建您的假人。有数千个包可以做到。两个例子:
#with base R
dummies <- model.matrix(~cate, fakedata)
#or using the fastDummies package
dummies <- dummy_columns(fakedata$cate)
在您的问题中,以下代码会抛出错误,因为plm无法处理重复的ID。然而,假设它可以,你使用count作为虚拟的事实,将给出与创建与count和comp交互的索引相同的结果。根据你的问题,我猜这不是你想要的。
plm(value.y ~ value.x + factor(cou), model = "within", data=fakedata, index=c(as.numeric(comp),year))