2

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

4

2 回答 2

2

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

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

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

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

还包括其他算法,但这三个似乎最适合您的需求。我建议阅读手册以了解具体的算法细节。

给你的简短例子:

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")
于 2016-06-03T01:35:52.850 回答
1

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

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

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

于 2016-04-11T20:05:01.700 回答