You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

面板数据Bootstrap抽样与混合回归系数提取技术问询

面板数据Bootstrap抽样与混合回归实现

我目前正在尝试对面板数据执行Bootstrap抽样,之后运行混合面板回归,最终收集每次估计得到的系数。下面是我已经写好的部分R代码:

# 构建面板数据框
df <- data.frame(
  id = c(rep('1',57), rep('2',57), rep('3',57), rep('4',57), rep('5',57)),
  YEAR = c(1961:2017),
  data = Project2
)

# 统计观测值数量
N <- length(Project2)
# 设置Bootstrap重复估计的次数
B <- 10
# 初始化系数存储矩阵,B行20列,用来保存每次回归的系数结果
stor.r2 <- matrix(c(rep(0,B)), nrow=B, ncol=20)

# Bootstrap循环框架,还需要补充抽样和回归部分
for(i in 1:B) {
  newdata.df ...
}

这里我还没完成Bootstrap抽样的部分,针对面板数据的特性,一般推荐按个体聚类抽样(也就是抽取整个id对应的所有年份观测值,而不是随机抽单个观测),这样能保留面板数据的结构。下面是可以补充的完整代码片段:

for(i in 1:B) {
  # 按id进行有放回抽样,保证每个抽样样本的个体数量和原数据一致
  sample_ids <- sample(unique(df$id), size = length(unique(df$id)), replace = TRUE)
  # 根据抽样得到的id拼接新的数据集
  newdata.df <- do.call(rbind, lapply(sample_ids, function(x) df[df$id == x, ]))
  
  # 运行混合面板回归(这里假设Y是被解释变量,X1到X19是解释变量,对应stor.r2的20列包含截距项)
  mix_model <- lm(Y ~ X1 + X2 + ... + X19, data = newdata.df)
  # 将本次回归的系数存入存储矩阵的第i行
  stor.r2[i, ] <- coef(mix_model)
}

完成循环后,stor.r2矩阵的每一行就对应一次Bootstrap抽样回归得到的系数,后续可以基于这个矩阵计算系数的置信区间、标准差等统计量。

内容的提问来源于stack exchange,提问作者RNovice

火山引擎 最新活动