每日时间序列分析

时间:2017-09-29 18:17:23

标签: r time-series forecasting arima

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

应该是这样吗?

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

感谢您的帮助!!

2 个答案:

答案 0 :(得分:1)

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

一种选择是扩展日期索引以包含您缺少的观察结果。您可以使用na.approxna填写缺少的观察结果,但是您不能每周给ts六天,并期望它将其理解为七天周期。

这样做的一个好方法是查看zoo,它具有处理这些情况的特定功能。

答案 1 :(得分:0)

这实际上取决于您想要对数据做什么。

1)情节例如,如果您的目标只是绘制它,那么sales类不适合,因为它不擅长表示日期。试试这个,我们在最后的Note中为ttlibrary(zoo) z <- zoo(sales, tt) plot(z) 定义了测试向量。

sales

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

StructTS

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

4)每月/每季度如果您愿意将其减少为月度或季度数据,那么您可以使用library(zoo) z <- zoo(sales, tt) zm <- aggregate(z, as.yearmon, tail, 1) tsm <- as.ts(zm) tsm ,但每月只有20个点或季度为7个。在这里,我们使用了每个月的最后一点:

          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                                    

,并提供:

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

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

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)

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

    <screen>
            <screenID>step_5</screenID>
            <video>/video/Task 5 - Open Word.mp4</video>
            <vid_caption>Task 5 - Open Word</vid_caption>
            <image>/shared_images/word_icon.png</image>
        </screen>
        <screen>
            <screenID>step_6</screenID>
            <video>/video/Task 6 - How to open MS Word.mp4</video>
            <vid_caption>Task 6 - How to open MS Word</vid_caption>
        </screen>