我正在零售商处创建特定商品的每日销售时间序列。我在下面列出了几个问题,我希望得到一些帮助(数据和代码可以遵循)。请注意,我正在从csv文件中读取我的实际数据集,其中观察(日期)是行,每个变量都在列中。提前感谢您的帮助,请知道我是R编码的新手。
1)似乎R正在按日期的观察编号读取我的时间序列(即4月5日,数据集中的第5个日期,值为5,而不是出售的297个单位特定的一天)。我该如何解决这个问题?
2)我相信我的'声明告诉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
答案 0 :(得分:0)
1)我不确定你的意思,但也许你对R分配给你的数据框G
的行名(在这种情况下是数字)感到困惑。假设您的代码下方打印的data.frame是G
的样子,我认为G $ Units确实拥有您对建模感兴趣的数据(请注意,{{1}可能因为数字中的逗号而将R
视为字符类;您应该从.csv文件中删除它们。
2)对于使用G$Units
(或基础auto.arima()
中的arima()
)进行建模,单变量ts不需要是实际的R
对象。因此,您并不需要创建ts
。尽管如此,GT
的{{1}}和start
参数可能有点奇怪。在这种情况下,您需要设置freq
,即使一年在技术上有点长(即ts()
)
3)不,您不需要为freq=365
创建单独的时间序列。事实上,您不需要为promos / days创建因子,因为它们已经编码为0/1。因此,像GT <- ts(G$Units, start=c(2013,91), freq=365)
这样的东西就足够了。 (旁白:为什么你使用xreg
作为协变量;数据中似乎没有任何趋势?)。
4)是的,对您所做的(共)变量进行对数变换很好,但我很好奇为什么价格协变量需要进行对数变换?