面板数据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




