使用data.table识别固定效应回归线上方的面板数据对应ID
解决方法
首先加载data.table包,将拟合值合并到原数据集后,筛选实际值大于拟合值的观测即可,具体代码如下:
# 加载依赖包 library(data.table) library(plm) # 构造样本数据集 data <- data.frame(ID = c(1,1,1,1,2,2,3,3,3), year = c(1,2,3,4,1,2,1,2,3), progenyMean = c(70,68,72,69,76,73,72,75,71), damMean = c(69,69,72,68,75,80,74,67,69)) # 拟合固定效应模型 fixed <- plm(progenyMean ~ damMean, data, model= "within", index = c("ID","year")) # 计算拟合值 fitted <- as.numeric(fixed$model[[1]] - fixed$residuals) # 转换为data.table格式,新增拟合值列 dt <- as.data.table(data) dt[, fitted := fitted] # 筛选回归线上方的观测(实际后代均值大于拟合值,对应残差为正) above_line_dt <- dt[progenyMean > fitted] # 提取对应ID # 去重得到所有出现过符合条件观测的ID unique_above_ids <- unique(above_line_dt$ID) # 保留所有符合条件观测对应的ID(含重复值,可对应到具体年份) all_above_ids <- above_line_dt$ID
- 逻辑说明:回归线上方的点对应残差为正,即
实际值-拟合值>0,直接按该条件筛选即可 - 如果需要查看符合条件观测的年份、对应数值等完整信息,直接打印
above_line_dt即可
内容的提问来源于stack exchange,提问作者codemachino
相关产品推荐
相关产品推荐

