You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于前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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:45:37