R 季度至每周数据的插值

R 季度至每周数据的插值,r,interpolation,approximation,R,Interpolation,Approximation,我目前正试图通过所谓的插值法从季度数据中预测每周数据。不幸的是,我现在很难找到正确的方法,因为我认为R中的近似函数可能不是最好的例子。您是否有其他方法可以尝试将这些会计数据从季度数据转换为每周数据 期待听取建议。假设问题 给定季度数据: 插值每周数据点 然后预测未来的周周期 R中的例子,因为我绝对喜欢R 第一部分。插值每周数据点 美联储季度数据集示例: 通过样条插值从季度末时段到周末时段 要以图形形式查看输出,请执行以下操作: 第二部分。预测未来的周周期 指数状态空间模型实例 要以图形形式

我目前正试图通过所谓的插值法从季度数据中预测每周数据。不幸的是,我现在很难找到正确的方法,因为我认为R中的近似函数可能不是最好的例子。您是否有其他方法可以尝试将这些会计数据从季度数据转换为每周数据

期待听取建议。

假设问题 给定季度数据:

  • 插值每周数据点
  • 然后预测未来的周周期
  • R中的例子,因为我绝对喜欢R



    第一部分。插值每周数据点 美联储季度数据集示例:

    通过样条插值从季度末时段到周末时段 要以图形形式查看输出,请执行以下操作:

    第二部分。预测未来的周周期 指数状态空间模型实例 要以图形形式查看投影,请执行以下操作:
    嗨,卢卡斯,你能为你的问题提供一个可复制的例子吗?请参见以下部分答案:
    require(tidyverse)
    require(lubridate)
    require(timeSeries)
    require(xts)
    require(tsbox)
    
    gdp_data<- 
      tribble(
        ~DATE,      ~GDPC1, 
        20180101,   18438.254,
        20180401,   18598.135,
        20180701,   18732.72,
        20181001,   18783.548,
        20190101,   18927.281,
        20190401,   19021.86,
      ) %>% 
      mutate(DATE = ymd(alignQuarterly(ymd(DATE)))) %>% 
      ts_xts()
    
    > gdp_data
                  GDPC1
    2018-03-30 18438.25
    2018-06-29 18598.13
    2018-09-29 18732.72
    2018-12-31 18783.55
    2019-03-30 18927.28
    2019-06-29 19021.86
    
    # create weekly time periods
    weekly_dates<- 
      gdp_data %>% 
      index() %>% 
      alignQuarterly() %>% 
      align(by = "w") %>% 
      ymd() %>% 
      as.xts()
    
    # approximate values for each week
    interpolated_data<- 
      weekly_dates %>% 
      merge(gdp_data) %>% 
      na.spline() %>% 
      merge(weekly_dates, join = 'right') 
    
    > interpolated_data %>% tail(10)
                  GDPC1
    2019-04-26 18969.86
    2019-05-03 18979.35
    2019-05-10 18988.07
    2019-05-17 18995.95
    2019-05-24 19002.92
    2019-05-31 19008.91
    2019-06-07 19013.87
    2019-06-14 19017.70
    2019-06-21 19020.36
    2019-06-28 19021.77
    
    interpolated_data %>% plot()
    
    require(forecast)
    projection<- 
      interpolated_data %>% 
      ts_ts() %>% 
      ets('MAN', damped = F) %>% 
      predict(10)
    
    > projection
             Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
    2019.506       19023.17 19022.34 19024.00 19021.90 19024.45
    2019.525       19024.58 19022.72 19026.44 19021.73 19027.43
    2019.544       19025.98 19022.87 19029.10 19021.22 19030.75
    2019.563       19027.39 19022.83 19031.95 19020.42 19034.37
    2019.582       19028.80 19022.62 19034.97 19019.35 19038.24
    2019.602       19030.20 19022.26 19038.15 19018.05 19042.35
    2019.621       19031.61 19021.76 19041.46 19016.54 19046.68
    2019.640       19033.02 19021.12 19044.91 19014.83 19051.21
    2019.659       19034.42 19020.36 19048.48 19012.92 19055.92
    2019.678       19035.83 19019.49 19052.17 19010.84 19060.82
    
    require(ggplot2)
    projection %>% 
      autoplot()