plm packadge

时间:2018-06-03 17:17:02

标签: r panel-data plm

这是与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.xvalue.ycomp的影响,yearcount无效(或控制fakedata$id <- fakedata %>% group_indices(comp, count)

this post中提供的用于处理ID重复的建议答案如下:

plm(value.y ~ value.x, model = "within", data=fakedata, index=c(id,year))

然后运行

comp

虽然对countcomp进行分组然后运行固定效果或随机效果模型有效,但此策略假设每个cou在每个{{1}中的处理方式不同}} 即可。这不一定是某人从这种回归中想要的东西。

如前所述,在我的情况下,我想知道value.xvalue.ycomp 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)

那么,如何在不与compcou进行交互的情况下进行固定效果模型?

1 个答案:

答案 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))