具有不平衡数据的面板校正标准误差估计 (pcse) 模型
Panel-Corrected Standard Error Estimation (pcse) model with unbalanced data
我在 28 年的时间里有一个由 108 个国家/地区组成的不平衡面板,我正在尝试估计一个具有面板校正标准误差的模型。但是我的尝试失败了,因为我收到以下错误消息:
Error in pcse(lm, groupN = data$id, groupT = data$time, pairwise = TRUE): Length of groupN and groupT must equal nrows of using data.
我的数据集大致如下所示:
library(plm)
data(Grunfeld)
setDT(Grunfeld)[firm %in%c(1,4,7,9) & year>=1950,inv:=NA] # creating unbalanced data
head(Grunfeld,20)
# firm year inv value capital
# 1: 1 1935 317.6 3078.5 2.8
# 2: 1 1936 391.8 4661.7 52.6
# 3: 1 1937 410.6 5387.1 156.9
# 4: 1 1938 257.7 2792.2 209.2
# 5: 1 1939 330.8 4313.2 203.4
# ....
# 15: 1 1949 555.1 3700.2 1020.1
# 16: 1 1950 NA 3755.6 1099.0
# 17: 1 1951 NA 4833.0 1207.7
# 18: 1 1952 NA 4924.9 1430.5
# 19: 1 1953 NA 6241.7 1777.3
# 20: 1 1954 NA 5593.6 2226.3
因此,对于某些公司,我在过去几年 (1950-54) 的因变量 (inv) 上缺少值。
为了计算我的情况,我首先估计线性模型。出于理论上的原因,我使用滞后。
lm<- lm(inv ~ lag(value,k=1)+ lag(capital, k = 1) + as.factor(year) + as.factor(firm), data = Grunfeld)
summary(lm)
然后我尝试添加我的面板更正标准错误,但是当我 运行 命令时出现错误消息。
lm.pcse <- pcse(lm, groupN=Grunfeld$firm, groupT=Grunfeld$year,
pairwise=TRUE)
#Error in pcse(lm, groupN = Grunfeld$firm, groupT = Grunfeld$year, #pairwise = TRUE) :
# Length of groupN and groupT must equal nrows of using data.
有人知道我该如何解决这个问题吗?
非常感谢您的帮助
我从来没有能够让这个包在包含的演示之外工作——但是
我以前解决过这个问题(结果遇到新问题!)。
您的错误可能是由于“使用数据”不包括 lm()
省略的观察结果但您的 groupN 和 T 向量包含(因为它们是从完整数据表中提取的,缺少数据和所有)。
我过去所做的是 运行 模型,使用 model.frame()
提取“使用数据”,然后将新数据帧用于 运行 lm()
和 pcse()
。类似于以下内容:
lm <- lm(inv ~ lag(value,k=1)+ lag(capital, k = 1) + as.factor(year) + as.factor(firm), data = Grunfeld)
dfPCSE <- model.frame(lm)
lm <- lm(inv ~ lag(value,k=1)+ lag(capital, k = 1) + as.factor(year) + as.factor(firm), data = dfPCSE)
lm.pcse <- pcse(lm, groupN=dfPCSE$firm, groupT=dfPCSE$year,
pairwise=TRUE)
我曾经遇到过这个问题。使用 na.omit 删除数据集中的缺失值。
我在 28 年的时间里有一个由 108 个国家/地区组成的不平衡面板,我正在尝试估计一个具有面板校正标准误差的模型。但是我的尝试失败了,因为我收到以下错误消息:
Error in pcse(lm, groupN = data$id, groupT = data$time, pairwise = TRUE): Length of groupN and groupT must equal nrows of using data.
我的数据集大致如下所示:
library(plm)
data(Grunfeld)
setDT(Grunfeld)[firm %in%c(1,4,7,9) & year>=1950,inv:=NA] # creating unbalanced data
head(Grunfeld,20)
# firm year inv value capital
# 1: 1 1935 317.6 3078.5 2.8
# 2: 1 1936 391.8 4661.7 52.6
# 3: 1 1937 410.6 5387.1 156.9
# 4: 1 1938 257.7 2792.2 209.2
# 5: 1 1939 330.8 4313.2 203.4
# ....
# 15: 1 1949 555.1 3700.2 1020.1
# 16: 1 1950 NA 3755.6 1099.0
# 17: 1 1951 NA 4833.0 1207.7
# 18: 1 1952 NA 4924.9 1430.5
# 19: 1 1953 NA 6241.7 1777.3
# 20: 1 1954 NA 5593.6 2226.3
因此,对于某些公司,我在过去几年 (1950-54) 的因变量 (inv) 上缺少值。
为了计算我的情况,我首先估计线性模型。出于理论上的原因,我使用滞后。
lm<- lm(inv ~ lag(value,k=1)+ lag(capital, k = 1) + as.factor(year) + as.factor(firm), data = Grunfeld)
summary(lm)
然后我尝试添加我的面板更正标准错误,但是当我 运行 命令时出现错误消息。
lm.pcse <- pcse(lm, groupN=Grunfeld$firm, groupT=Grunfeld$year,
pairwise=TRUE)
#Error in pcse(lm, groupN = Grunfeld$firm, groupT = Grunfeld$year, #pairwise = TRUE) :
# Length of groupN and groupT must equal nrows of using data.
有人知道我该如何解决这个问题吗?
非常感谢您的帮助
我从来没有能够让这个包在包含的演示之外工作——但是 我以前解决过这个问题(结果遇到新问题!)。
您的错误可能是由于“使用数据”不包括 lm()
省略的观察结果但您的 groupN 和 T 向量包含(因为它们是从完整数据表中提取的,缺少数据和所有)。
我过去所做的是 运行 模型,使用 model.frame()
提取“使用数据”,然后将新数据帧用于 运行 lm()
和 pcse()
。类似于以下内容:
lm <- lm(inv ~ lag(value,k=1)+ lag(capital, k = 1) + as.factor(year) + as.factor(firm), data = Grunfeld)
dfPCSE <- model.frame(lm)
lm <- lm(inv ~ lag(value,k=1)+ lag(capital, k = 1) + as.factor(year) + as.factor(firm), data = dfPCSE)
lm.pcse <- pcse(lm, groupN=dfPCSE$firm, groupT=dfPCSE$year,
pairwise=TRUE)
我曾经遇到过这个问题。使用 na.omit 删除数据集中的缺失值。