【问题标题】:Properly Creating a Time Series in R, auto.arima Function on Daily Data在 R 中正确创建时间序列,每日数据的 auto.arima 函数
【发布时间】:2015-12-28 23:10:09
【问题描述】:

我正在创建零售商给定商品每日销售额的时间序列。我在下面列出了几个问题,我希望得到一些帮助(要遵循的数据和代码)。请注意,我正在从 csv 文件中读取我的实际数据集,其中观察值(日期)在行中,每个变量都在列中。提前感谢您的帮助,请知道我是 R 编码新手。

1) 似乎 R 正在通过日期的观察数读取我的时间序列(即,4 月 5 日,数据集中的第 5 个日期,其值为 5,而不是 297 单位在那一天)。我该如何解决这个问题?

2) 我相信我的“ts”声明告诉 R 数据从 2013 年的第 91 天(4 月 1 日)开始;我正确编码了吗?当我绘制数据时,似乎 R 可能会以不同的方式解释此语句。

3) 我需要为我的 xreg 创建一个单独的时间序列吗?例如,我应该为每个变量创建一个时间序列,然后取它们的并集,然后 cbind 吗?

4) 我是否在正确的语句中记录了变量,还是应该在代码的其他地方记录?

require("forecast")
G<-read.csv("SingleItemToyDataset.csv")
GT<-ts(G$Units, start = c(2013, 91), frequency = 365.25)
X = cbind(log(G$Price), G$Time, as.factor(G$PromoOne), as.factor(G$PromoTwo), as.factor(G$Mon), as.factor(G$Tue), as.factor(G$Wed), as.factor(G$Thu), as.factor(G$Fri), as.factor(G$Sat))
Fit<-auto.arima(log(GT), xreg = X)


        Date Day Units Price Time PromoOne PromoTwo Mon Tue Wed Thu Fri Sat
1   4/1/2013 Mon   351  5.06    1        1        0   1   0   0   0   0   0
2   4/2/2013 Tue   753  4.90    2        1        0   0   1   0   0   0   0
3   4/3/2013 Wed   133  5.32    3        1        0   0   0   1   0   0   0
4   4/4/2013 Thu   150  5.14    4        1        0   0   0   0   1   0   0
5   4/5/2013 Fri   297  5.00    5        1        0   0   0   0   0   1   0
6   4/6/2013 Sat   688  5.27    6        1        0   0   0   0   0   0   1
7   4/7/2013 Sun 1,160  5.06    7        1        0   0   0   0   0   0   0
8   4/8/2013 Mon   613  5.07    8        1        0   1   0   0   0   0   0
9   4/9/2013 Tue   430  5.07    9        1        0   0   1   0   0   0   0
10 4/10/2013 Wed   400  5.03   10        1        0   0   0   1   0   0   0
11 4/11/2013 Thu 1,530  4.97   11        1        0   0   0   0   1   0   0
12 4/12/2013 Fri 2,119  5.00   12        0        1   0   0   0   0   1   0
13 4/13/2013 Sat 1,094  5.09   13        0        1   0   0   0   0   0   1
14 4/14/2013 Sun   736  5.02   14        1        0   0   0   0   0   0   0
15 4/15/2013 Mon   518  5.10   15        1        0   1   0   0   0   0   0
16 4/16/2013 Tue   485  5.02   16        1        0   0   1   0   0   0   0
17 4/17/2013 Wed   472  5.05   17        1        0   0   0   1   0   0   0
18 4/18/2013 Thu   406  5.03   18        1        0   0   0   0   1   0   0
19 4/19/2013 Fri   564  5.00   19        1        0   0   0   0   0   1   0
20 4/20/2013 Sat   475  5.09   20        1        0   0   0   0   0   0   1
21 4/21/2013 Sun   621  5.04   21        1        0   0   0   0   0   0   0
22 4/22/2013 Mon   714  5.02   22        1        0   1   0   0   0   0   0
23 4/23/2013 Tue 1,217  5.32   23        0        0   0   1   0   0   0   0
24 4/24/2013 Wed 1,253  5.45   24        0        0   0   0   1   0   0   0
25 4/25/2013 Thu 1,169  5.06   25        0        0   0   0   0   1   0   0
26 4/26/2013 Fri 1,216  5.01   26        0        0   0   0   0   0   1   0
27 4/27/2013 Sat 1,127  5.02   27        0        0   0   0   0   0   0   1
28 4/28/2013 Sun   693  5.04   28        1        0   0   0   0   0   0   0
29 4/29/2013 Mon   388  5.01   29        1        0   1   0   0   0   0   0
30 4/30/2013 Tue   305  5.01   30        1        0   0   1   0   0   0   0
31  5/1/2013 Wed   207  5.03   31        1        0   0   0   1   0   0   0
32  5/2/2013 Thu   612  4.97   32        1        0   0   0   0   1   0   0
33  5/3/2013 Fri   671  5.01   33        1        0   0   0   0   0   1   0
34  5/4/2013 Sat 1,151  5.04   34        1        0   0   0   0   0   0   1
35  5/5/2013 Sun 2,578  5.00   35        1        0   0   0   0   0   0   0
36  5/6/2013 Mon 2,364  5.01   36        1        0   1   0   0   0   0   0
37  5/7/2013 Tue   423  5.03   37        1        0   0   1   0   0   0   0
38  5/8/2013 Wed   388  5.04   38        1        0   0   0   1   0   0   0
39  5/9/2013 Thu 1,417  4.70   39        0        1   0   0   0   1   0   0
40 5/10/2013 Fri 1,607  4.59   40        0        1   0   0   0   0   1   0
41 5/11/2013 Sat 1,217  4.86   41        1        0   0   0   0   0   0   1
42 5/12/2013 Sun   545  5.12   42        1        0   0   0   0   0   0   0
43 5/13/2013 Mon   461  5.01   43        1        0   1   0   0   0   0   0
44 5/14/2013 Tue   358  4.97   44        1        0   0   1   0   0   0   0
45 5/15/2013 Wed   310  5.00   45        1        0   0   0   1   0   0   0
46 5/16/2013 Thu   925  4.63   46        1        0   0   0   0   1   0   0
47 5/17/2013 Fri   266  4.99   47        1        0   0   0   0   0   1   0
48 5/18/2013 Sat   183  5.15   48        0        0   0   0   0   0   0   1
49 5/19/2013 Sun   363  5.20   49        0        0   0   0   0   0   0   0
50 5/20/2013 Mon 5,469  4.99   50        1        0   1   0   0   0   0   0
51 5/21/2013 Tue   647  4.81   51        1        0   0   1   0   0   0   0
52 5/22/2013 Wed   421  4.97   52        1        0   0   0   1   0   0   0
53 5/23/2013 Thu   353  4.93   53        1        0   0   0   0   1   0   0
54 5/24/2013 Fri   375  4.95   54        1        0   0   0   0   0   1   0
55 5/25/2013 Sat   575  4.88   55        1        0   0   0   0   0   0   1
56 5/26/2013 Sun   707  4.92   56        0        0   0   0   0   0   0   0
57 5/27/2013 Mon   533  4.89   57        0        0   1   0   0   0   0   0
58 5/28/2013 Tue   641  4.66   58        0        0   0   1   0   0   0   0
59 5/29/2013 Wed   264  4.85   59        0        0   0   0   1   0   0   0
60 5/30/2013 Thu   186  5.74   60        1        0   0   0   0   1   0   0
61 5/31/2013 Fri   207  6.40   61        1        0   0   0   0   0   1   0

【问题讨论】:

    标签: r time-series forecasting


    【解决方案1】:

    1) 我不确定您在这里的确切含义,但您可能对 R 分配给您的数据框 G 的行名(在本例中为数字)感到困惑。假设在您的代码下方打印的 data.frame 是 G 的样子,在我看来 G$Units 确实有您对建模感兴趣的数据(但是请注意,R 可能正在处理 @987654324 @ 作为字符类,因为数字中有逗号;您应该从 .csv 文件中删除这些)。

    2) 对于使用auto.arima()(或基数R 中的arima())进行建模,单变量ts 不需要是实际的ts 对象。所以,你真的不需要创建GT。尽管如此,ts()startfreq 参数可能有点奇怪。在这种情况下,您需要设置freq=365,即使从技术上讲一年要长一些(即GT &lt;- ts(G$Units, start=c(2013,91), freq=365)

    3) 不,您不需要为xreg 创建单独的时间序列。事实上,您不需要为您的促销/天创建因子,因为它们已经编码为 0/1。因此,像X &lt;- G[,-c(1,2,3,5)]; X$Price &lt;- log(X$Price) 这样的东西就足够了。 (旁白:你为什么使用Time 作为协变量;数据中似乎没有任何趋势?)。

    4) 是的,对您所做的(协)变量进行对数转换很好,但我很好奇为什么需要对价格协变量进行对数转换?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 2021-01-13
      • 2023-02-15
      • 2017-02-08
      • 2015-08-15
      相关资源
      最近更新 更多