如何基于前3年GDP增速均值标准差构建经济危机分类变量
R语言实现GDP增速经济危机三分类变量构建
核心判定规则落地说明
严格匹配需求的判定逻辑,注意避免时间序列计算常见的数据泄露问题:
- 所有统计量仅使用当年之前连续3年的GDP增速计算,不得纳入当年及之后年份数据
- 分类优先级从高到低判定,避免阈值重叠出错:
- 当年GDP增速 < 前3年增速均值 - 2*前3年增速标准差 → 赋值2,代表严重危机
- 当年GDP增速 < 前3年增速均值 - 1*前3年增速标准差,且不满足严重危机条件 → 赋值1,代表普通危机
- 其余情况(含序列起始阶段没有足够3年前序数据的年份)→ 赋值0,代表无危机
可直接运行的实现代码
使用滚动计算函数完成批量处理,代码如下:
# 加载依赖包 library(dplyr) library(slider) # 先按年份升序排序,确保时间顺序正确 df <- df %>% arrange(year) df <- df %>% mutate( # 计算不含当年的前3年GDP增速均值,窗口不足3年时返回NA prev3_mean = slide_dbl( .x = gdp_growth, .f = ~mean(.x, na.rm = TRUE), .before = 3, .after = -1, .complete = TRUE ), # 计算不含当年的前3年GDP增速标准差,窗口不足3年时返回NA prev3_sd = slide_dbl( .x = gdp_growth, .f = ~sd(.x, na.rm = TRUE), .before = 3, .after = -1, .complete = TRUE ), # 按规则生成三分类危机标识 crisis_type = case_when( gdp_growth < prev3_mean - 2*prev3_sd ~ 2, gdp_growth < prev3_mean - 1*prev3_sd ~ 1, TRUE ~ 0 ) )
注意事项
- 序列前3年(1990、1991、1992)因没有足够的前置观测,会被统一判定为无危机,若需要调整前序年份的判定规则,可修改
.complete参数或单独对前3年做规则补充 - 若存在GDP增速缺失值,可在
mean、sd函数中调整缺失值处理参数适配 - 运行后可抽查典型暴跌年份(如2001年、2008年)的计算结果,确认阈值判定符合预期
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

