일별 시계열 분석


24

시계열 분석을 시도하고 있으며이 분야에 익숙하지 않습니다. 저는 2006-2009 년부터 매일 이벤트를보고 있으며 시계열 모델에 맞추고 싶습니다. 내가 한 진보는 다음과 같습니다.

timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
plot.ts(timeSeriesObj)

결과 플롯은 다음과 같습니다.

시계열도

데이터에 계절 성과 추세가 있는지 확인하기 위해이 게시물에 언급 된 단계를 따릅니다 .

ets(x)
fit <- tbats(x)
seasonal <- !is.null(fit$seasonal)
seasonal

그리고 Rob J Hyndman의 블로그에서 :

library(fma)
fit1 <- ets(x)
fit2 <- ets(x,model="ANN")

deviance <- 2*c(logLik(fit1) - logLik(fit2))
df <- attributes(logLik(fit1))$df - attributes(logLik(fit2))$df 
#P value
1-pchisq(deviance,df)

두 경우 모두 계절성이 없음을 나타냅니다.

시리즈의 ACF & PACF를 플롯하면 다음과 같은 결과를 얻습니다.

ACF PACF

내 질문은 :

  1. 이것이 매일 시계열 데이터를 처리하는 방법입니까? 이 페이지 는 매주와 매년 패턴을 모두보아야한다고 제안하지만 접근 방식은 명확하지 않습니다.

  2. ACF 및 PACF 플롯이 있으면 진행 방법을 모르겠습니다.

  3. auto.arima 함수를 간단히 사용할 수 있습니까?

    적합 <-arima (myts, order = c (p, d, q)

***** Auto.Arima 결과 업데이트 ******

난 롭 Hyndman의 의견에있어서, (7)에 데이터의 주파수를 변경할 때 여기서 , auto.arima가 선택한 계절 ARIMA 모형 출력한다 :

Series: timeSeriesObj 
ARIMA(1,1,2)(1,0,1)[7]                    

Coefficients:
       ar1      ma1     ma2    sar1     sma1
      0.89  -1.7877  0.7892  0.9870  -0.9278
s.e.   NaN      NaN     NaN  0.0061   0.0162

sigma^2 estimated as 21.72:  log likelihood=-4319.23
AIC=8650.46   AICc=8650.52   BIC=8682.18 

****** 업데이트 된 계절성 확인 ******

빈도 7로 계절성을 테스트하면 True가 출력되고 계절이 365.25이면 false가 출력됩니다. 연간 계절성이 부족하다고 결론을 내릴 수 있습니까?

timeSeriesObj = ts(x,start=c(2006,1,1),frequency=7)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal

보고:

True

동안

timeSeriesObj = ts(x,start=c(2006,1,1),frequency=365.25)
fit <- tbats(timeSeriesObj)
seasonal <- !is.null(fit$seasonal)
seasonal

보고:

False

어떤 결과가 str(x)나옵니까?
S. Kolassa-

num [1 : 1460]을 산출합니다. 17 12 12 17 13 14 14 5 12 21 ...
statBeginner

데이터를 게시 할 수 있습니까?
예측 자

불행히도, 나는 할 수 없습니다.
statBeginner

2
저는 계절성을 감지하기위한 통계 테스트 외에 시각적 검사와 도메인 지식에 의존합니다. arima가 여러 계절을 처리 할 수 ​​있는지 여부에 대한 질문-ARIMA는 계절 R을 처리 할 수있는 기능이없는 모든 계절 을 처리 할 수 ​​있습니다. 예측하려는 제품의 재고 / 제조 비용이 높으면 상용 솔루션을 찾고 싶습니다. R당신과 같은 작업을 예측하기 위해 심각한 제한이 있습니다. 이 사이트의 다른 곳에서 일일 예측에 대한 질문을보십시오.
예측 자

답변:


25

ACF 및 PACF는 적어도 계절에 따라 계절성이 있으며, 이는 7, 14, 21 등의 시차로 표시됩니다.

시계열에서 분명하지는 않지만 매년 계절성이있을 수 있습니다.

잠재적으로 여러 계절을 고려할 때 가장 좋은 방법은 tbats여러 유형의 계절을 명시 적으로 모델링 하는 모델 일 수 있습니다 . forecast패키지를 로드하십시오 .

library(forecast)

의 결과는 아직 여러 계절에 대한 정보를 가지고 있지 않음 을 str(x)나타냅니다 x. 를보고 ?tbats의 출력을 비교하십시오 str(taylor). 계절성을 지정하십시오.

x.msts <- msts(x,seasonal.periods=c(7,365.25))

이제 tbats모델을 맞출 수 있습니다 . (잠시 기다려주십시오. 시간이 걸릴 수 있습니다.)

model <- tbats(x.msts)

마지막으로 다음을 예측하고 플롯 할 수 있습니다.

plot(forecast(model,h=100))

당신은 사용하지 말아야 arima()auto.arima():이 단지 계절의 하나의 유형을 처리 할 수 있기 때문에, 매주 또는 연간. auto.arima()귀하의 데이터에 대해 어떻게 할 것인지 묻지 마십시오 . 계절성 중 하나를 선택하거나 모두 무시할 수 있습니다.


댓글에서 추가 질문에 답변하도록 수정 :

  1. 데이터에 연간 계절성이 있는지 여부를 어떻게 확인할 수 있습니까? 한 달에 총 일련의 총 이벤트 수를 작성하고 ACF를 사용하여이를 결정할 수 있습니까?

월간 데이터에서 모델을 계산하는 것이 가능할 수 있습니다. 그런 다음 계절성 유무에 관계없이 모델 간 AIC를 비교할 수 있습니다.

그러나 예측 모델을 평가하기 위해 홀드 아웃 샘플을 사용하고 싶습니다. 마지막 100 개의 데이터 포인트를 유지하십시오. 연간와 모델에 맞게 사용 예 (위 같은) 나머지 데이터 만 매주 계절에 다음 적합 하나, 매주 계절을 auto.arima()켜짐 ts으로 frequency=7. 홀드 아웃 기간에 두 모델을 모두 사용하여 예측합니다. MAE, MSE 또는 손실 기능과 가장 관련이있는 것을 사용하여 오류가 적은 것을 확인하십시오. 오류간에 차이가 거의없는 경우 더 간단한 모델로 이동하십시오. 그렇지 않으면 오류가 낮은 것을 사용하십시오.

푸딩의 증거는 식사 중이며 시계열 모델의 증거는 예측에 있습니다.

문제를 개선하려면 단일 홀드 아웃 샘플을 사용하지 말고 (시리즈의 끝 부분에 변동이있을 경우 오해의 소지가 있음) 롤링 원점 예측을 사용하십시오 ( "시계열 교차 검증" 이라고도 함) . ( 전체 무료 온라인 예측 교과서를 추천 합니다 .

  1. 계절 ARIMA 모델은 일반적으로 여러 계절을 처리 할 수 ​​없습니까? 모델 자체의 속성입니까, 아니면 R의 함수가 작성되는 방식입니까?

표준 ARIMA 모델은 계절 차이로 계절성을 처리합니다. 계절별 월별 데이터의 경우 원시 시계열을 모델링하지 않고 2015 년 3 월과 2014 년 3 월, 2015 년 2 월과 2014 년 2 월 등의 시계열 차이를 모델링합니다. (원래 규모로 예측을 얻으려면 물론 무관심해야합니다.)

이 아이디어를 여러 계절별 로 확장 할 수있는 확실한 방법은 없습니다 .

물론 ARIMAX를 사용하여 해마다 계절성을 모델링하기 위해 월별 인형을 포함시킨 다음 주간 계절별 ARIMA를 사용하여 잔차를 모델링하는 등의 작업을 수행 할 수 있습니다. R에서이 작업을 수행하려면 ts(x,frequency=7)을 사용하고 월별 인형 행렬을 만들고의 xreg매개 변수에 공급하십시오 auto.arima().

ARIMA를 여러 계절로 확장하는 출판물은 기억 나지 않지만 누군가 이전 단락의 내용에 따라 무언가를 수행했다고 확신합니다.


다음은 귀하의 답변을 바탕으로 한 몇 가지 질문입니다. 1. 데이터에 연간 계절성이 있는지 여부를 어떻게 확인할 수 있습니까? 한 달에 총 일련의 총 이벤트 수를 작성하고 acf를 사용하여이를 결정할 수 있습니까? 2. 계절 ARIMA 모델은 일반적으로 여러 계절을 처리 할 수 ​​없습니까? 모델 자체의 속성입니까, 아니면 R의 함수가 작성되는 방식입니까?
statBeginner 2

매주 계절에 Auto.Arima의 결과로 업데이트 후
statBeginner

1
@StephanKolassa, 저는 AT & T에서 여러 계절 ARIMA를 사용하는 기사 를 발견했습니다 . 문서의 일이 가능하지 않을 같은 모델 R이후, Rmultiseasonal ARIMA을 처리 할 수있는 능력이 없습니다.
예측 자

2
@forecaster : 감사합니다! 방정식 3.1에서 두 가지 차이점을 보이는 것처럼 보입니다. 나는 그런 식으로 많은 데이터를 잃어 버릴 염려가 있습니다. 불행히도, 그들은 지난 주 수요와 같은 간단한 벤치 마크와 결과를 비교하지 않습니다 . 내가 좋아하는 것은 DSARIMA와 tbats유사 모델 간의 예측 조합을 조사하는 방법 입니다.
S. Kolassa-복원 모니카

2
@StephanKolassa 본인은 Armstrong의 Principles of Forecasting에서 지원하는 기준으로 순진한 예측을 벤치 마크로 사용하고 정확성을 향상시키는 경우에만 복잡성을 추가한다는 데 동의합니다. 나는 앙상블에서 순진한 방법을 사용하여 소수의 kaggle 경쟁에서 상위 2 백분위 수로 끝났습니다.
예측 자

3

기존 R 패키지를 사용하여 계절별 데이터를 분해하는 가장 좋은 방법은 Rlibeemd의 ceemdan ()입니다. 이 기술은 여러 기간의 계절성을 추출합니다. 기본값은 잘 작동합니다. 푸리에 변환 대신 힐버트-후앙 변환을 사용합니다. 푸리에 변환은 대부분의 관심 대상이 아닌 경우 고정 선형 데이터 만 처리 할 수 ​​있다는 심각한 단점이 있습니다. 예를 들어, 랜덤 워크 y_t = y_ {t-1} + e_t는 가장 간단한 랜덤 워크이며 자주 발생합니다. 다른 방법들은 종종 실제로 변할 때 계절 변동의 진폭을 고정시킨다.


1
수학을 답에 넣는 데 도움이 되는 기본 MathJax 튜토리얼 및 참조참조 하십시오 . 또한 " 최고 " 의 주장에 대한 정당성을 제시하십시오 (또는 주장을 수정하는 것을 고려하십시오). 이는 대부분의 옵션뿐만 아니라 다른 모든 옵션 만큼 우수 해야합니다.
Glen_b-복지 모니카

1
이 패키지는 CRAN에 있습니다
Glen_b -Reinstate Monica

2

제기 한 질문은 R 시계열 예측 : 내 결과에 관한 질문 에서 다루어졌습니다 . 본인의 문제와 관련이 있다고 생각되는 내 상세한 답변과 원래 질문에 대한 의견을 포함한 토론의 모든 의견을주의 깊게 살펴보십시오. 실제로 게시물에 제공된 데이터를 가져 와서 자신을위한 교육 순간으로 사용할 수 있습니다. 전체 토론을해야 할 일에 대한 입문서로 사용하십시오.


1
고마워요! 그 게시물의 데이터를 사용하여 시도해 볼 것입니다.
statBeginner
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.