【问题标题】:How to rolling calculate in tidyverse?如何在 tidyverse 中滚动计算?
【发布时间】:2021-10-28 10:27:43
【问题描述】:

我在计算 R 中的某个变量时遇到问题。

这是关于波动率模型 (GARCH)。

我需要应用的公式是这样的:

对于第一个 sigma,我使用了我之前计算的一些默认值。从第二个开始,我需要引用前一个并添加另一列的值。

小标题是这样的:

我想创建一个名为 sigma_forecast 的新列。

sigma_forecast 1 = sigma2

sigma_forecast 2 = 0.96 * sigma_forecast 1 + 0.04 * r2_lag_1

sigma_forecast 3 = 0.96 * sigma_forecast 2 + 0.04 * r2_lag_1

【问题讨论】:

    标签: r tidyverse fgarch


    【解决方案1】:
    r2 <- 1:10
    sigma_init <- 10
    lambda <- 0.5
    
    Reduce(function(x, y) lambda*x + (1 - lambda)*y, r2, sigma_init,
           accumulate = TRUE)
    #>  [1] 10.000000  5.500000  3.750000  3.375000  3.687500  4.343750  5.171875
    #>  [8]  6.085938  7.042969  8.021484  9.010742
    
    library(purrr)
    accumulate(r2, ~ lambda*.y + (1 - lambda)*.x, .init = sigma_init)
    #>  [1] 10.000000  5.500000  3.750000  3.375000  3.687500  4.343750  5.171875
    #>  [8]  6.085938  7.042969  8.021484  9.010742
    

    reprex package (v2.0.1) 于 2021 年 10 月 27 日创建

    【讨论】:

      猜你喜欢
      • 2017-02-27
      • 2017-09-11
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      相关资源
      最近更新 更多