【问题标题】:Time series object时间序列对象
【发布时间】:2018-12-19 07:15:18
【问题描述】:

我有一张表,有两列 DATE 和 Q。

DATE        Q
--------------------
2013-01-04  932
2013-01-05  409
2013-01-08  511
2013-01-11  121
2013-01-12  252
2013-01-13  201
2013-01-14  40
2013-01-15  66
2013-01-17  NA
2013-01-18  123



Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   10 obs. of  2 variables:
 $ DATE: POSIXct, format: "2013-01-04" "2013-01-05" "2013-01-08" "2013-01-11" ...
 $ Q: num  932 409 511 121 252 201 40 66 NA 123 ..

从数据中可以看出,频率是不规则的。第一列是转换为日期格式的数据,第二列是数字。所以我的意图是将这个表转换为时间序列对象,以便使用预测包进行进一步的预测。

那么任何人都可以帮我编写一些代码来将此表转换为 ts 对象吗?

【问题讨论】:

  • 据我所知,ts() 函数要求您的数据具有特定的频率。对于不规则的时间序列,我强烈建议您先查看新的tsibble 包,然后再查看fable 包进行预测。这两个包是由同一作者与forecast 包共同开发的。 - Rob J. Hyndman)。 pkg.earo.me/tsibble
  • 我已经用 tsibble 包进行了转换。所以现在我有了 tsiblle 对象。这意味着我有一列频率不规则,第二列有一些数字 Q。所以现在的问题是如何把这个和这个不规则auto.arima 中的频率?
  • ARIMA 模型是为均匀间隔的时间序列设计的,这意味着您无法将这样的模型拟合到您的数据中(这是不规则的)。我鼓励您研究卡尔曼滤波器或任何不规则时空序列模型。

标签: r time-series forecasting


【解决方案1】:
time <- seq(as.Date("2018-1-1"),as.Date("2019-1-1"),by=1)
df <- data.frame(Time=Time)
output <- dplyr::left_join(df,YOUR_TABLE,by="DATE")

您的表格应该有名称为“DATE”的日期列。因此,当您的数据丢失时,您现在有了 NA 值,您可以将数据转换为时间序列。我不知道这是否会有所帮助,对我来说有时会有所帮助。也许用一些替换方法来解决 NA 问题。

【讨论】:

    猜你喜欢
    • 2015-05-04
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-17
    • 2021-02-01
    • 2016-04-18
    • 1970-01-01
    相关资源
    最近更新 更多