如何在时间分解中结合低频和高频时间序列

问题描述 投票:0回答:1

我正在使用 tempdisagg 包处理时间序列数据(Python 中有一个类似的包:https://github.com/jstephenj14/timedisagg)。

使用此软件包,您可以轻松地将低频时间序列(在我的情况下为每年)转换为高频时间序列(在我的情况下为每月)。

例如:

library(tempdisagg)
year_sums <- c(400, 450, 500, 800, 1000, 600)  
low_freq_ts = ts(year_sums, frequency = 1, start=2018, end=2023)

model <- td(low_freq_ts ~ 1, conversion = "sum", to = "monthly",
            method = "denton-cholette")
high_freq_ts = predict(model)

我现在的问题是,如何考虑现有的高频时间序列。

例如:

historic_ts <- c(3, 5, 6, 7, 5, 9, 10, 14, 17, 20, 19, 22)
historic_high_freq_ts = ts(historic_ts, frequency = 12, 
                           start = c(2017,1), end = c(2017, 12))

最后我想得到一个平滑的高频时间序列,包括未触及的原始高频数据和分解值。

如果我只将历史值和预测值粘在一起,我会得到一些我不想得到的东西:

    plot(ts(
  c(historic_high_freq_ts, high_freq_ts)
  , frequency = 12
  , start = c(2017,1)
  , end = c(2023, 12)
)
)

所以,最终disagg函数应该考虑历史趋势;我怎样才能做到这一点?


更广泛的应用是当我们的高频(HF)数据集可能包含多年记录(例如2017-2024)时,它是低频(LF)数据的函数(例如HF数据:通货膨胀,LF数据:货币)供应)。

我们如何通过统计稳健的方法将 HF 数据的趋势应用到 LF 数据上(将其分解为更小的时间步长)?

r time-series temporal
1个回答
0
投票

不幸的是,在问题中提出的情况下,您无能为力:1.因为两个时期没有共同点, 2.并且每个数据集的来源都不同(例如通货膨胀和GPD)。

总结一下你拥有的数据

  • 一些HF数据,如美元汇率或通货膨胀率,每月一个点,从2017年1月到2017年12月每个月采集;
  • GDP等LF数据,每年一个点,从2018年开始一直持续到2023年;

如果数据来自同一来源:

  • 如果数据来源相同 - 您可以简单地对 2017 年数据进行求和以获得年度汇总并将其放入第一个模型
    td(low_freq_ts ~ 1,...)

如果数据有任何共同的时间段: 选项 1 - 假设数据是相关的,但通货膨胀的 LF 部分并不能很好地代表 GPD 的 LF 部分:

  • 进行贝叶斯回归(如果点数非常少,效果会非常好)。其中之一就是 facebook prohet。

选项 2 - 假设数据是相关的,并且通货膨胀的 LF 部分确实可以很好地代表 GPD 的 LF 部分:

  • 使用 tempdisagg 或任何其他进行快速傅里叶变换的包提取通货膨胀的 LF 部分
  • 使用共同周期重新调整并将通货膨胀的 LF 部分向上/向下移动到 GDP 的 LF 部分。

请。如果上述任何内容有意义,请告诉我,然后我们可能会找到更适合您的情况的 R/Python 包。

© www.soinside.com 2019 - 2024. All rights reserved.