使用线性模型估算单变量季节性时间序列

Imputation of uni-variate, seasonal time series using linear model

我们如何使用 R 中的线性模型方法对单变量、季节性时间序列进行插补?它应该考虑季节性,最好是趋势。 我使用 tslm 函数进行预测,但不知道用于插补的类似函数。

这个问题在本质上似乎更具统计性,因此可能应该迁移到 cross-validated,在那里您可能会得到更好的答案...但一个快速的答案是

  • 插补是一个不同于线性建模的过程,通常是提前执行的,所以有点不清楚你在这里问什么
  • 如果我理解正确,最简单的方法可能是在拟合 tslm 模型之前使用合理 window 相邻点的平均值
  • 您可能想查看 Caret 包中可用的 pre-processing 选项,尽管我自己还没有将它们用于时间序列数据并且不确定是否可行

与往常一样,提供数据和可重现的示例会有所帮助。

imputeTS 包可能就是您要搜索的内容。 (免责声明:我是包的维护者)

这是一个专门用于(单变量)时间序列插补的包。 这意味着它还具有处理季节性和趋势的功能。

包中实际上有几个您可能感兴趣的功能:

  • na_seadec - 使用黄土分解和插值
  • na_kalman - 使用卡尔曼平滑和结构时间序列模型
  • na_seasplit - 分别估算每个季节

还包括其他算法,但这三种算法似乎最有希望满足您的需求。我建议阅读 manual 以了解具体的算法细节。

给你的简短例子:

library(imputeTS)
# tsAirgap is a example univariate time series with NAs provided by imputeTS 
x <- tsAirgap
x <- na_kalman(x)

基本上就是这样。对于其他算法,它的工作原理相同:

library(imputeTS)
# tsAirgap is a example univariate time series with NAs provided by imputeTS 
x <- tsAirgap
x <- na_seadec(x, algorithm = "interpolation")