일일 데이터가 포함 된 Auto.arima : 계절 /주기를 캡처하는 방법?


21

매일 시계열에 ARIMA 모델을 장착하고 있습니다. 데이터는 매일 2010 년 2 월 1 일부터 2011 년 7 월 30 일까지 수집되며 신문 판매에 관한 것입니다. 매주 판매 패턴이 발견 될 수 있기 때문에 (매일 평균 판매량은 월요일에서 금요일까지 동일하다가 토요일과 일요일에 증가합니다)이 "계절성"을 파악하려고합니다. 판매 데이터 "데이터"가 주어지면 다음과 같이 시계열을 만듭니다.

salests<-ts(data,start=c(2010,1),frequency=365)

그런 다음 auto.arima (.) 함수를 사용하여 AIC 기준을 통해 최상의 ARIMA 모델을 선택합니다. 결과는 항상 계절이 아닌 ARIMA 모델이지만 다음 구문을 예로 사용하여 SARIMAs 모델을 시도하면

sarima1<-arima(salests, order = c(2,1,2), seasonal = list(order = c(1, 0, 1), period = 7))

더 나은 결과를 얻을 수 있습니다. ts 명령 / arima 사양에 문제가 있습니까? 매주 패턴이 매우 강해서 캡처하는 데 많은 어려움을 겪지 않을 것입니다. 어떤 도움이라도 매우 유용합니다. Giulia Deppieri 감사합니다

최신 정보:

나는 이미 몇 가지 주장을 바꿨다. 더 정확하게 말하면이 절차는 ARIMA (4,1,3)를 내가 설정할 때 최고의 모델로 선택 D=7하지만 AIC 및 기타 적합한 지수 및 예측도 개선되지 않습니다). 계절 성과주기의 혼동으로 인한 실수가 있다고 생각합니다 ..?!

Auto.arima 호출 사용 및 출력 획득 :

modArima<-auto.arima(salests,D=7,max.P = 5, max.Q = 5)



 ARIMA(2,1,2) with drift         : 1e+20
 ARIMA(0,1,0) with drift         : 5265.543
 ARIMA(1,1,0) with drift         : 5182.772
 ARIMA(0,1,1) with drift         : 1e+20
 ARIMA(2,1,0) with drift         : 5137.279
 ARIMA(2,1,1) with drift         : 1e+20
 ARIMA(3,1,1) with drift         : 1e+20
 ARIMA(2,1,0)                    : 5135.382
 ARIMA(1,1,0)                    : 5180.817
 ARIMA(3,1,0)                    : 5117.714
 ARIMA(3,1,1)                    : 1e+20
 ARIMA(4,1,1)                    : 5045.236
 ARIMA(4,1,1) with drift         : 5040.53
 ARIMA(5,1,1) with drift         : 1e+20
 ARIMA(4,1,0) with drift         : 5112.614
 ARIMA(4,1,2) with drift         : 4953.417
 ARIMA(5,1,3) with drift         : 1e+20
 ARIMA(4,1,2)                    : 4960.516
 ARIMA(3,1,2) with drift         : 1e+20
 ARIMA(5,1,2) with drift         : 1e+20
 ARIMA(4,1,3) with drift         : 4868.669
 ARIMA(5,1,4) with drift         : 1e+20
 ARIMA(4,1,3)                    : 4870.92
 ARIMA(3,1,3) with drift         : 1e+20
 ARIMA(4,1,4) with drift         : 4874.095

 Best model: ARIMA(4,1,3) with drift        

따라서 arima 함수를 다음과 같이 사용해야한다고 가정합니다.

bestOrder <- cbind(modArima$arma[1],modArima$arma[5],modArima$arma[2])
sarima1<-arima(salests, order = c(4,1,3))

계절 구성 요소 매개 변수 및 기간 스펙이 없습니다. 데이터 및 탐색 분석에 따르면 2010 년 8 월 (일관된 판매 증가가 등록 된 경우)을 제외하고는 매주 동일한 주간 패턴을 대략적으로 고려할 수있는 것으로 나타났습니다. 불행히도 나는 시계열 모델링에 대한 전문 지식이 전혀 없으며, 실제로 이러한 문제가있는 데이터에 적합하려고 시도한 다른 파라 메트릭 전자 비모수 모델에 대한 대안 솔루션을 찾기 위해이 접근법을 시도하고 있습니다. 나는 많은 종속적 인 숫자 변수를 가지고 있지만 응답 변수를 설명하는 데 전력이 부족하다는 것을 알았습니다. 의심 할 여지없이 모델링하기 가장 어려운 부분은 시간 구성 요소입니다. 또한, 월과 주중을 나타내는 더미 변수의 구성은 강력한 솔루션이 아닌 것으로 밝혀졌습니다.

답변:


28

주간 계절성이있는 경우 계절 기간을 7로 설정하십시오.

salests <- ts(data,start=2010,frequency=7) 
modArima <- auto.arima(salests)

계절 차이의 선택은 auto.arima()최근까지는 그리 좋지 않았습니다 . forecast패키지의 v2.xx를 사용하는 경우 계절 차를 강제로 적용하도록 D=1호출에서 설정 하십시오 auto.arima(). 당신의 v3.xx 사용하는 경우 forecast패키지의 자동 선택 D(AN OCSB 시험 대신 CH 테스트를 사용) 훨씬 더 나은 작품.

레벨이 다른 모델의 AIC를 비교하려고 시도하지 마십시오. 그것들은 직접 비교할 수 없습니다. 동일한 차분 차수를 가진 모델과 AIC를 확실하게 비교할 수 있습니다.

을 호출 한 후 모델을 다시 맞출 필요가 없습니다 auto.arima(). arima()선택한 모델 순서로 호출 한 것처럼 Arima 객체를 반환합니다 .


바보 같은 실수를 지적 해 주셔서 감사합니다. 답을 철회하겠습니다.
mpiktas

1
매우 유용한 제안에 대해 당신보다 훨씬. 2.19 버전의 예측 패키지를 사용하고 있으므로 귀하의 조언을 따르고 auto.arima () 호출에서 D 매개 변수를 1로 설정했습니다. 이제 salests 시리즈에 가장 적합한 모델은 평균이 0이 아닌 ARIMA (1,0,0)입니다. 최상의 모델을 반환하기 위해 계절성 부분의 사양을 기대해야합니까, P, D, Q 또는 적어도 D의 값을 의미합니까?
줄리아

2
데이터의 빈도가 1이 아닌 한 계절 ARIMA 모델이 고려됩니다. 비 계절 모형이 반환되는 경우 계절성이 매우 약하거나 데이터가 빈도가 1보다 큰 ts 객체에 있지 않습니다.
Rob Hyndman

15

계절 ARIMA를 일일 데이터에 맞추는 데 따른 문제점은 "계절 구성 요소"가 주말 또는 평일에만 작동 할 수 있으므로 전체적으로 중요하지 않은 "계절 구성 요소"가 있다는 것입니다. 이제해야 할 일은 요일을 나타내는 6 개의 인형과 연간 효과를 나타내는 월간 지표로 데이터 세트를 보강하는 것입니다. 이제 휴일과 같은 이벤트를 통합하는 것을 고려하고 이러한 알려진 변수에 대한 리드, 동시 또는 지연 효과를 포함하십시오. 데이터에 비정상적인 값 (펄스)이나 레벨 시프트 또는 로컬 시간 추세가 없을 수 있습니다. 또한 요일 효과는 시간이 지남에 따라 변경 될 수 있습니다. 예를 들어 처음 20 주 동안 토요일 효과가 없었지만 마지막 50 주 동안 토요일 효과가있었습니다.


이 경우 (IrishStat) ARIMA 대신 혼합 모델링 기법이 아닙니다. Box Jlung Test를 제외하고 ARIMA의 어느 곳에서나 래그를 가져 가지 않습니다. Auto.arima (최근)는 데이터 스케일링, 계절 변동 (모든 최고의 p, d, q 매개 변수를 찾는 이유)을 포함하여 모든 것을 수정합니다.
wackyanil

이를 전달 함수라고하며 슬라이드 42로 시작하는 autobox.com/pdfs/capable.pd를 참조하십시오 . Auto.arima는 간단한 경우에는 작동하지만 내 의견으로는 충분하지 않습니다. 데이터 세트를 염두에두고 있다면 새로운 질문을하고 포함 시키십시오.
IrishStat

@IrishStat 당신은 중재와 ARIMA를 의미 했습니까? 요일은 더미 변수입니까? 휴일 동안 비슷한 더미 변수?
매니아

예. .. 매일 데이터에 대한 나의 접근 방식이 될 것입니다
IrishStat

0

내 ts (일일 데이터는 3 년)의 계절 순서를 결정하기 위해 Matlab 에서이 코드를 사용했습니다.

s = 0; 최소 = 1e + 07; n = 길이 (x); i = 1 : 400 diff = x (i + 1 : n) -x (1 : ni); s (i) = sum (abs (diff)); 만약에 (s (i)

논리적 인 365를 제공합니다.


1
사이트에 오신 것을 환영합니다. 이것이 원래의 질문에 어떻게 대답하는지는 분명하지 않으며 게시 한 코드가 그것을보고에서 무엇을하는지 명확하지 않습니다. 아마도 대답을 조금 확장 할 수 있습니까?
einar

1
귀사의 솔루션은 고정 된 요일 효과, 고정 된 요일 효과, 매주 효과, 매월 효과, 휴일의 납과 지연 효과를 어떻게 처리합니까? , 금요일 휴일 후 월요일, 월요일 휴일 전 금요일, 월간 효과, 주간 효과, 시간 경과에 따른 주간 효과의 변화, 펄스, 레벨 / 단계 이동?
IrishStat

Matlab 코드 s = 0; min = 1e + 07; n = 길이 (x); i = 1 : 400에 대해 diff = x (i + 1 : n) -x (1 : ni); s (i) = sum (abs (diff)); if (s (i) <min) min = s (i); i end end
nkabouche
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.