R 具有不平衡数据的面板校正标准误差估计(pcse)模型

R 具有不平衡数据的面板校正标准误差估计(pcse)模型,r,linear-regression,panel,R,Linear Regression,Panel,在28年的时间里,我有一个108个国家组成的不平衡的小组,我试图用小组修正的标准误差来估算一个模型。但我的尝试失败,因为我收到以下错误消息: pcse中的错误(lm,groupN=data$id,groupT=data$time,pairwise=TRUE):groupN和groupT的长度必须等于使用数据的nrows。 我的数据集大致如下所示: library(plm) data(Grunfeld) setDT(Grunfeld)[firm %in%c(1,4,7,9) & year&

在28年的时间里,我有一个108个国家组成的不平衡的小组,我试图用小组修正的标准误差来估算一个模型。但我的尝试失败,因为我收到以下错误消息: pcse中的错误(lm,groupN=data$id,groupT=data$time,pairwise=TRUE):groupN和groupT的长度必须等于使用数据的nrows。

我的数据集大致如下所示:

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我一直无法让这个包在附带的演示之外工作——但是
我以前解决过这个问题(只是遇到了一个新问题!)

您的错误可能是因为“使用数据”不包括
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)

欢迎来到StackOverflow。感谢您抽出时间回答这个问题。如果您有相关问题,请单击按钮提问。包括指向此问题的链接,以帮助提供上下文。
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)