【问题标题】:Daily Time Series Analysis每日时间序列分析
【发布时间】:2018-03-11 17:02:15
【问题描述】:

我有一个关于产品销售的每日时间序列,我的系列从 2016 年 1 月 1 日到 2017 年 8 月 31 日开始,我的问题是我不知道应该使用什么频率值,考虑到这是一个为期六天的一周(我的一周从周一开始,到周六结束),周日没有数据。

应该是这样吗?

myts <- ts(sales, start=c(2016, 1), frequency=6)

感谢您的帮助!!

【问题讨论】:

    标签: r time-series forecasting arima


    【解决方案1】:

    ts 期望您拥有时间序列的每个元素的值,即,它期望您在数据中拥有第七天的值。

    一种选择是扩展日期索引以包含您缺失的观察结果。你可以用na.approxna 来填补那些缺失的观察结果,但你不能给ts 一个六天的一周并期望它理解为一个七天的周期。

    执行此操作的一个好方法是查看zoo,它具有处理此类情况的特定功能。

    【讨论】:

    • 您好,感谢您的回答
    • NPs。如果您需要帮助填写缺失值,请在 zoo 上搜索或发布另一个问题。另外,要结束这个问题,如果你理解结果,你可以通过检查来接受这个答案,这会将其标记为已结束。
    • 您好,感谢您的回答!请你给我更多关于如何做你所说的信息??,我还在学习 R,我不知道怎么做,或者我可以在哪里找到更多关于它的信息。
    • 有许多不同的方法可以达到最终目标,即为每周的观察提供 7 天的值。这取决于您要如何填写这些值。这还取决于sales 是什么作为对象等。我们没有足够的信息来判断这个问题。您应该结束这个问题并提出一个关于如何填写 sales 对象中缺失值的新问题,包括您要填写的内容,即内插值或直接 na。此外,您需要提供来自sales 的一些示例行,以便人们能够提供帮助。是新的吗?
    【解决方案2】:

    这真的取决于你想对数据做什么。

    1) 绘图 例如,如果您的目标只是绘制它,那么 "ts" 类不适合,因为它不擅长表示日期。试试这个,我们在最后的注释中为salestt 定义了测试向量。

    library(zoo)
    z <- zoo(sales, tt)
    plot(z)
    

    2) acf 如果你想计算自相关函数,那么使用普通向量 salests(sales) 就可以了:

    acf(sales)
    

    3) StructTS 如果您想使用StructTS 拟合结构化时间序列,那么您需要确定一个周期的长度,即它是否每周重复一次? 25美分硬币?年?。通常一个年度周期适合销售,但一般来说,您需要两个完整的周期才能做任何事情,因此您实际上没有足够的数据。

    4) 每月/每季度 如果您愿意将其减少为每月或每季度的数据,那么您可以使用ts,但您每月只有 20 分,每季度只有 7 分。这里我们使用了每个月的最后一个点:

    library(zoo)
    
    z <- zoo(sales, tt)
    zm <- aggregate(z, as.yearmon, tail, 1) 
    tsm <- as.ts(zm)
    tsm
    

    给予:

              Jan      Feb      Mar      Apr      May      Jun      Jul      Aug
    2016 3.258097 3.931826 4.356709 4.644391 4.867534 5.049856 5.204007 5.342334
    2017 5.828946 5.897154 5.968708 6.030685 6.093570 6.150603 6.204558 6.257668
              Sep      Oct      Nov      Dec
    2016 5.459586 5.564520 5.659482 5.749393
    2017                                    
    

    5) 每周 您可以考虑的另一件事是仅使用星期六来使用每周系列,例如:

    library(zoo)
    z <- zoo(sales, tt)
    zw <- z[weekdays(time(z)) == "Saturday"]
    

    注意:我们使用了这个虚拟数据:

    set.seed(123)
    tt <- seq(as.Date("2016-01-01"), as.Date("2017-08-31"), "day")
    tt <- tt[! weekdays(tt) == "Sunday"]
    n <- length(tt)
    sales <- log(1:n)
    

    【讨论】:

      猜你喜欢
      • 2015-09-15
      • 2019-08-28
      • 2011-12-26
      • 2018-06-23
      • 2021-06-17
      • 2020-06-03
      • 2021-05-17
      • 2019-10-23
      • 1970-01-01
      相关资源
      最近更新 更多