【问题标题】:Automatically find seasonality of time series in R在 R 中自动查找时间序列的季节性
【发布时间】:2013-10-22 22:19:27
【问题描述】:

我是 R 中时间序列的新手,如果我犯了任何错误,请纠正我。

我有商店中产品库存的每日快照。 如果有帮助,您可以将其作为 Bestbuy 中的 iPad 数量,然后我去 Bestbuy 并计算他们仓库中的所有 Ipad :) 并记下。

而且我可以监控他们每天售出多少 iPad,以及他们何时补充库存。我的目标是尝试做一些时间序列分析。首先找到他们的 iPad 销量的趋势和季节性,然后建立一个爆发检测模型,这样如果有一天销量太低或太高。我会收到通知。

一些假数据:

library(zoo)
index <- seq(as.Date('2013-01-01'), as.Date('2013-01-31'), by="day")
data <- c(seq(5, 1), seq(15, 1), seq(10, 5), seq(10, 5))
z <- zoo(data, index)
plot(z)

(1) 有没有一个方便的函数来计算相邻两天的增量,以便首先获得他们的每日销售额?如此消极意味着卖了这么多 Ipad,而积极意味着补货。

(2) 当我尝试使用分解查找趋势时,它告诉我:

> decompose(z)
Error in decompose(z) : time series has no or less than 2 periods

然后我意识到我需要确定一周是一个好的开始的季节性。所以我可以做到。

plot(decompose(ts(z[,1], frequency=7)))

我知道,我需要modify the period 才能让它工作。但季节性实际上因产品而异,我不知道如何处理这个问题。

(3) 欢迎对我的想法发表一般评论。例如,上图基本上显示他们几乎每天都卖出 1 个 pad。然后我需要以某种方式检测,几天后他们卖出了超过 10 台 ipad,我将把它们当作一个爆发。 一般来说,是否有其他易于使用的 R 包进行突发检测?谢谢

【问题讨论】:

  • 对于问题 1) 看看diff()
  • 你为什么要寻找趋势?你在预测吗?我们正在转向统计建议,但我认为最好先确定季节性周期,而不是“数据窥探”,直到 R 允许您进行分解。实际上,您的数据中似乎没有太多的季节性,但可能只是窗口的小尺寸。
  • @Hugh 我实际上是在考虑不在产品层面做预测,而是在供应商层面工作,比如说所有的苹果产品,找到趋势。对不起,我没有提到计划这个问题。应该有每周的季节性,因为人们在周末有更多时间在“Bestbuy”上购物。库存看起来不明显,但销售额会。

标签: r time-series zoo


【解决方案1】:

查看diff() 的增量问题,这也是一种快速发现“突发”的方法。

diff(z)
plot(diff(z))

【讨论】:

  • 谢谢,这正是我想要的问题1。将滞后设置为 1 并可能 plot(-diff(z))
猜你喜欢
  • 2013-11-06
  • 1970-01-01
  • 2017-03-11
  • 2022-08-19
  • 1970-01-01
  • 2016-07-26
  • 2021-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多