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

如何在tidyverse中实现滚动计算以生成GARCH模型的sigma_forecast列

Tidyverse框架下递推计算波动率序列的实现方案

这种依赖上一步输出的迭代计算,直接用tidyverse生态中purrr包的accumulate()函数即可实现,不需要写循环,代码简洁易维护。


前置准备

首先加载tidyverse包:

library(tidyverse)

提前确认你的数据集已生成r2_lag_1列,且首行的sigma2为你预先计算好的初始波动率值。


核心实现代码

假设你的数据集名为vol_df,计算sigma_forecast列的代码如下:

vol_df <- vol_df %>%
  mutate(
    sigma_forecast = accumulate(
      # 遍历r2_lag_1列的所有值
      .x = r2_lag_1,
      # 迭代计算逻辑:prev_sigma为上一步的sigma_forecast结果,current_r2为当前行的r2_lag_1值
      .f = \(prev_sigma, current_r2) {
        # 适配滞后列首行是NA的常规情况
        if(is.na(current_r2)) return(prev_sigma)
        0.96 * prev_sigma + 0.04 * current_r2
      },
      # 指定初始值:第一个sigma_forecast取首行的sigma2
      .init = first(sigma2)
    ) %>% 
    # 去掉accumulate多生成的最后一个冗余值,保证长度和原数据集行数一致
    head(-1)
  )

逻辑验证

以你给出的计算规则为例,验证计算结果:

  • 第一行sigma_forecast = 初始值sigma2,符合规则要求
  • 第二行sigma_forecast = 0.96第一行结果 + 0.04第二行r2_lag_1,符合规则
  • 第三行及之后的所有值都自动基于上一行结果迭代计算,完全匹配你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 00:24:00