时间序列上的R错误

时间:2015-02-13 08:26:58

标签: r time-series forecasting

我有一个如下的脚本

visit.total[with(visit.total, order(year, month)), ]

生成这样的数据框

   year month visits
1  2013     1 342145
3  2013     2 273182
5  2013     3 257748
7  2013     4 210831
9  2013     5 221381
11 2013     6 207591
13 2013     7 205367
15 2013     8 145731
17 2013     9 109211
19 2013    10  65376
21 2013    11  64409
23 2013    12  58557
2  2014     1  65307
4  2014     2  36134
6  2014     3  79041
8  2014     4 110980
10 2014     5 107926
12 2014     6  79518
14 2014     7  98927
16 2014     8 113064
18 2014     9  60171
20 2014    10  43687
22 2014    11  47601
24 2014    12  47296

当我运行此代码时:

visit.total <- aggregate(data$visits,by=list(year=data$year,month=data$month), FUN=sum) #aggregate total visit 
colnames(visit.total)[3] <- "visits"
total.visit.ts <- ts(visit.total$visits, start=c(2013,1),frequency = 12)
total.visit.ts

它给我的结果如下:

        Jan   Feb   Mar    Apr    May    Jun    Jul    Aug    Sep    Oct    Nov    Dec
2013 342145  65307 273182  36134 257748  79041 210831 110980 221381 107926 207591  79518
2014 205367  98927 145731 113064 109211  60171  65376  43687  64409  47601  58557  47296

为什么我的数据与我的时间序列功能后的第一次不同?请建议

1 个答案:

答案 0 :(得分:1)

如果没有关于您尝试做什么的更多信息很难说,但我会根据您的代码猜测您希望获得2013年和2014年每月出勤率的时间序列你的代码正在发生的事情是R可能会根据你的数据帧的行号来安排你的数据。请注意您的时间序列中2013年1月的数据是正确的,但2013年2月的数据实际上是2014年1月的数据。发生的事情是时间序列按行号的顺序读取(请参阅最左侧的列) ,其中01/2013为#1,01/2014为#2。

这段代码,我复制了你的数据框,应该可以工作:

year <- as.numeric(c(2013, 2014))
month <- as.numeric(c(1:12))
visits <- as.numeric(c(342145, 273182, 257748, 210831, 221381, 207591, 205367, 145731, 109211, 65376, 64409, 58557,
                   65307, 36134, 79041, 110980, 107926, 79518, 98927, 113064, 60171, 43687, 47601, 47296))
visit.total <- merge(year, month)
colnames(visit.total) <- c("year", "month")
visit.total <- visit.total[order(visit.total$year, visit.total$month), ]
visit.total <- cbind(visit.total, visits)
visit.total.ts <- ts(visit.total$visits, start = c(2013, 1), end = c(2014, 12), frequency = 12)

您应该看到每月访问按月和年排列正确。