plm-package ID-YEAR 集群标准错误
plm-package ID-YEAR Clustered Standard Errors
我一直在寻找一种基于 ID-Year 集群(每个 ID-Year 组合都被视为一个新集群)来执行集群标准错误的方法。我发现 plm
对象不存在这样的函数,但我有一个想法,我想知道它是否有意义:
在我的 plm 公式中,假设我有
p <- plm(y~x+factor(year), df, model="within", index=("ID","Date"), effect="individual")
pce <- coeftest(p, vcov=vcovHC(p, method = "arellano", type="sss",cluster="group"))
我可以简单地为 LSDV 模型分配一个索引,该索引仅代表 ID-Year 组合,如下所示:
df$IDYEAR <- paste(df$ID,df$YEAR)
p1 <- plm(y~x+factor(year)+factor(ID), df, model="pooling", index=("IDYEAR"))
p1ce <- coeftest(p1, vcov=vcovHC(p1, method = "arellano", type="sss",cluster="group"))
这应该估计几乎完全相同的模型,同时欺骗我的 plm
函数认为组级别是 IDYEAR
以便我得到正确的标准错误。我的想法对吗?
我认为,对 vcovDC
稍作调整就可以了
vcovDC <- function(x, ...){
vcovHC(x, cluster="group", ...) + vcovHC(x, cluster="time", ...) -
vcovHC(x, method="white1", ...)
}
非常简洁的解释here。
这也适用于您的 LSDV 示例。
我一直在寻找一种基于 ID-Year 集群(每个 ID-Year 组合都被视为一个新集群)来执行集群标准错误的方法。我发现 plm
对象不存在这样的函数,但我有一个想法,我想知道它是否有意义:
在我的 plm 公式中,假设我有
p <- plm(y~x+factor(year), df, model="within", index=("ID","Date"), effect="individual")
pce <- coeftest(p, vcov=vcovHC(p, method = "arellano", type="sss",cluster="group"))
我可以简单地为 LSDV 模型分配一个索引,该索引仅代表 ID-Year 组合,如下所示:
df$IDYEAR <- paste(df$ID,df$YEAR)
p1 <- plm(y~x+factor(year)+factor(ID), df, model="pooling", index=("IDYEAR"))
p1ce <- coeftest(p1, vcov=vcovHC(p1, method = "arellano", type="sss",cluster="group"))
这应该估计几乎完全相同的模型,同时欺骗我的 plm
函数认为组级别是 IDYEAR
以便我得到正确的标准错误。我的想法对吗?
我认为,对 vcovDC
稍作调整就可以了
vcovDC <- function(x, ...){
vcovHC(x, cluster="group", ...) + vcovHC(x, cluster="time", ...) -
vcovHC(x, method="white1", ...)
}
非常简洁的解释here。
这也适用于您的 LSDV 示例。