2015-07-13 41 views
0
library(forecast) 

library(magrittr) 

dat <- ts(rep(1, 30), start = c(2015, 7), frequency = 12) 
dat 
#  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
#2015       1 1 1 1 1 1 
#2016 1 1 1 1 1 1 1 1 1 1 1 1 
#2017 1 1 1 1 1 1 1 1 1 1 1 1 

dat %>% bizdays("NewYork") 
#  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
#2015       21 23 23 1 21 22 
#2016 22 21 23 22 21 21 21 22 23 22 22 21 
#2017 22 20 23 21 20 22 21 22 23 23 22 22 
#2018 21 

看來forecast::bizdays增加了一個奇怪的1到時間序列的工作日(2015年10月),並通過一個月以後將這個真實的數據。難道我做錯了什麼?預測:: bizdays可能的錯誤

+0

從哪裏來'%>%'? – 2015-07-13 08:46:44

+0

這是magrittr管,表達等同於bizdays(dat,「NewYork」) – Roberto

+1

請考慮在您的帖子中添加對非基本包的調用。 – 2015-07-13 09:32:47

回答

0

問題似乎涉及到線路#19:

bizdays <- format(biz, format = "%Y %b") 

,並與行#32:

num.days <- table(bizdays) 

與您的數據提供了:

bizdays 
# [1] "2015 Jun" "2015 Jul" "2015 Jul" "2015 Jul" "2015 Jul" "2015 Jul" 
# [7] "2015 Jul" "2015 Jul" "2015 Jul" "2015 Jul" "2015 Jul" "2015 Jul" 
#... 
#[643] "2017 Dec" "2017 Dec" "2017 Dec" "2017 Dec" "2017 Dec" "2017 Dec" 
#[649] "2017 Dec" "2017 Dec" "2017 Dec" "2017 Dec" "2017 Dec" "2017 Dec" 

(注意:第一次約會由於時區而轉移到6月。)並且

num.days 
#bizdays 
#2015 Aug 2015 Dec 2015 Jul 2015 Jun 2015 Nov 2015 Oct 2015 Sep 2016 Apr 
#  21  23  23  1  21  22  22  21 
#2016 Aug 2016 Dec 2016 Feb 2016 Jan 2016 Jul 2016 Jun 2016 Mar 2016 May 
#  23  22  21  21  21  22  23  22 
#2016 Nov 2016 Oct 2016 Sep 2017 Apr 2017 Aug 2017 Dec 2017 Feb 2017 Jan 
#  22  21  22  20  23  21  20  22 
#2017 Jul 2017 Jun 2017 Mar 2017 May 2017 Nov 2017 Oct 2017 Sep 
#  21  22  23  23  22  22  21 

這是不正確的。

一種解決方法是編輯bizdays功能,並與

bizdays <- format(biz, format = "%Y-%m") 

其中給出更換線#19:

# [1] "2015-06" "2015-07" "2015-07" "2015-07" "2015-07" "2015-07" "2015-07" 
# [8] "2015-07" "2015-07" "2015-07" "2015-07" "2015-07" "2015-07" "2015-07" 
#... 
#[645] "2017-12" "2017-12" "2017-12" "2017-12" "2017-12" "2017-12" "2017-12" 
#[652] "2017-12" "2017-12" "2017-12" 

而且

numdays 
#bizdays 
#2015-06 2015-07 2015-08 2015-09 2015-10 2015-11 2015-12 2016-01 2016-02 2016-03 
#  1  23  21  22  22  21  23  21  21  23 
#2016-04 2016-05 2016-06 2016-07 2016-08 2016-09 2016-10 2016-11 2016-12 2017-01 
#  21  22  22  21  23  22  21  22  22  22 
#2017-02 2017-03 2017-04 2017-05 2017-06 2017-07 2017-08 2017-09 2017-10 2017-11 
#  20  23  20  23  22  21  23  21  22  22 
#2017-12 
#  21 

但也有第33行的問題沒有考慮時間偏移:

out <- ts(num.days, start = tsp(x)[1L], frequency = freq) 
out 
#  Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
#2015       1 23 21 22 22 21 
#2016 23 21 21 23 21 22 22 21 23 22 21 22 
#2017 22 22 20 23 20 23 22 21 23 21 22 22 
#2018 21