【问题标题】:Imputation of uni-variate, seasonal time series using linear model使用线性模型估算单变量季节性时间序列
【发布时间】:2016-08-02 04:05:08
【问题描述】:

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

【问题讨论】:

  • 插补最常涉及使用至少一个相关变量。如果你不这样做,平滑方法将是你最好的选择......但如前所述,请提供一个可重现的例子。正如目前所写,这个问题过于宽泛,应该结束。

标签: r imputation


【解决方案1】:

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")

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 感谢 JohnSG。我首先在交叉验证中询问它,但被告知它不适合在那里,因为它是关于代码而不是统计建议。我需要 r 中的一个函数,它将线性模型拟合到具有季节性和一些缺失值的时间序列,并使用这个线性模型来估算缺失值。您的第二个要点给了我线索:我可以将线性模型(r 中的 lm 函数)拟合到包含每个季节的第 n 个值序列的每个向量,然后使用拟合模型计算其中的缺失值向量。并且,对所有 'n's (n:1,...,frequency) 重复此操作。
    • 也感谢您的最后评论。完成后,我将在此处添加带有可重现示例的代码,以便其他人在我错了时发表评论。
    • @Hapalop 如果你有季节性,上述评论的方法将无法正常工作
    猜你喜欢
    • 2012-12-12
    • 2016-07-26
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    相关资源
    最近更新 更多