ETS () 함수, 과거 데이터와 일치하지 않는 예측을 피하는 방법?


16

월간 예측 계산을 자동화하기 위해 R의 알고리즘을 작성 중입니다. 특히 예측 패키지를 계산하기 위해 예측 패키지의 ets () 함수를 사용하고 있습니다. 잘 작동하고 있습니다.

불행히도, 특정 시계열의 경우 내가 얻는 결과가 이상합니다.

사용중인 코드 아래를 찾으십시오.

train_ts<- ts(values, frequency=12)
fit2<-ets(train_ts, model="ZZZ", damped=TRUE, alpha=NULL, beta=NULL, gamma=NULL, 
            phi=NULL, additive.only=FALSE, lambda=TRUE, 
            lower=c(0.0001,0.0001,0.0001,0.8),upper=c(0.9999,0.9999,0.9999,0.98), 
            opt.crit=c("lik","amse","mse","sigma","mae"), nmse=3, 
            bounds=c("both","usual","admissible"), ic=c("aicc","aic","bic"),
            restrict=TRUE)  
ets <- forecast(fit2,h=forecasthorizon,method ='ets')   

관련 이력 데이터 세트는 다음과 같습니다.

 values <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
29, 29, 24, 42, 15, 24, 21)

여기서 그래프에는 과거 데이터 (검은 색), 적합치 (녹색) 및 예측 (파란색)이 표시됩니다. 예측값은 적합치와 일치하지 않습니다.

과거 판매량과 "전략적"관계를 갖기 위해 "전제"를 어떻게 묶어야하는지에 대한 아이디어가 있습니까? 여기에 이미지 설명을 입력하십시오


이것은 내가 사용하는 가장 이상한 예측 중 하나입니다 ets. 과거 데이터의 평균 / 수준은 약 20이고 예측의 평균 / 수준은 약 50입니다. 왜 이런 일이 발생하는지 확실하지 않습니까? 당신은 기본을 실행 ets하고 동일한 결과를 얻을 수 있는지 볼 수 있습니까?
예측 자

시간과 답변에 감사드립니다! 나는 당신에게 마지막 점이 "이상치"로 보일 수 있다는 사실에 동의합니다 (전년도 21 대 7 또는 6 또는 5) 과거 데이터를 기반으로 신뢰 구간을 사용하여 감지 될 수 있으며 계산하기 전에 깨끗해야합니다. 통계 예측. 그러나 그것이 "정상적인"판매라고 가정한다면, 예측을 경계로하여이 행동을 피할 수있는 방법이 있습니까, 아니면 적어도 예측이 역사보다 두 배 더 크다는 경고가 있습니까? 이 경우 경계 알파, 베타 및 감마는 관련이 없습니다. 다시 한 번,이 점에 대한 귀하의 도움에 감사드립니다!
MehdiK

귀하의 답변에 투표했습니다. 이제 의견을 남길 수 있다고 가정합니다. 앞으로 답변 한 사람들이 알 수 있도록 답변 바로 아래에 댓글을 남겨주세요. 감사
예측 자

ETS와 모든 일 변량 시계열 모델은 과거의 행동이 미래의 행동을 예측한다고 가정합니다. 비정상적인 데이터 포인트 가있는 경우 모델에 이상이 있음을 알려야합니다. 모델은 값이 정상임을 알 수 없으므로 모델에서 값을 특이 값으로 지정해야합니다.
예측 자

답변:


10

@forecaster가 지적했듯이 이것은 시리즈의 끝 부분에있는 이상치에 의해 발생합니다. 예상 수준 구성 요소를 맨 위에 플롯하면 문제가 명확하게 나타납니다.

plot(forecast(fit2))
lines(fit2$states[,1],col='red')

시리즈가 끝나면 레벨이 증가합니다.

모형을 특이 치보다 더 견고하게 만드는 한 가지 방법은 매개 변수 공간을 줄여 평활화 매개 변수가 더 작은 값을 가져야하는 것입니다.

fit2 <- ets(train_ts, upper=c(0.3,0.2,0.2,0.98))  
plot(forecast(fit2))

여기에 이미지 설명을 입력하십시오


예측값 :: auto.arima는 특이 치를 처리하기위한 두 번째 제안과 동일합니까?
Brash Equilibrium

1
ARIMA 모델을 사용하면 문제가 발생한 시간에 더미 변수가 1로 설정된 이상 값을 처리 할 수 ​​있습니다. auto.arima 또는 Arima에서 xreg 인수를 사용하십시오.
Rob Hyndman

6

이것은 시리즈의 끝에 특이 치가 있고 의도하지 않은 결과 가 나타나는 교과서의 경우입니다 . 데이터의 문제는 마지막 두 점이 특이 치라는 것입니다 는 것입니다. 예측 알고리즘을 실행하기 전에 특이 치를 식별하고 처리 할 수 ​​있습니다. 오늘 나중에 특이점을 식별하는 몇 가지 전략에 대한 답변과 분석을 업데이트하겠습니다. 다음은 빠른 업데이트입니다.

마지막 두 데이터 포인트가 제거 된 상태에서 ets를 다시 실행하면 합리적인 예측을 얻습니다. 아래를 봐주세요:

values.clean <- c(27, 27, 7, 24, 39, 40, 24, 45, 36, 37, 31, 47, 16, 24, 6, 21, 
                  35, 36, 21, 40, 32, 33, 27, 42, 14, 21, 5, 19, 31, 32, 19, 36, 
                  29, 29, 24, 42, 15)## Last two points removed

train_ts.clean<- ts(values.clean, frequency=12)
fit2.clean<-ets(train_ts.clean)  
ets.f.clean <- forecast(fit2.clean,h=24)
plot(ets.f.clean)

여기에 이미지 설명을 입력하십시오


5

@forecaster추세와 계절 활동을 고려할 때 마지막 값이 특이 치이지만 38 (최후 값)이 특이 치가 아닌 것이 맞습니다. 이것은 대안적인 강력한 접근법을 테스트 / 평가하기위한 정의 / 교육의 순간입니다. 이상을 식별하고 조정하지 않으면 분산이 팽창되어 다른 항목을 찾을 수 없습니다. 기간 32도 특이 치입니다. 기간 3,32 및 1도 특이 치입니다. 처음 17 개 값의 계열에서 통계적으로 유의미한 추세가 있지만 그 이후 18주기부터 시작하여 줄어 듭니다. 따라서 데이터에는 실제로 두 가지 추세가 있습니다. 여기서 배울 교훈은 추세 나 특정 형태의 추세를 가정하지 않고 /거나 특정 형태의 자동 회귀 프로세스를 암묵적으로 가정하는 간단한 접근 방식이 심각하게 질문 될 필요가 있다는 것입니다. 앞으로 좋은 예측을하려면 궁극적 인 시점에서 발견 된 예외적 인 활동의 지속 가능성을 고려해야합니다 (기간 39). 데이터에서 이것을 추출하는 것은 불가능합니다.

이것은 아마도 유용한 모델입니다 :

여기에 이미지 설명을 입력하십시오최종 모델의 통계는 여기에 있습니다 여기에 이미지 설명을 입력하십시오. 실제 / 적합 및 예측 그래프는 예외적 인 활동을 강조하므로 흥미 롭습니다.여기에 이미지 설명을 입력하십시오


+1 당신의 대답은 항상 교육적이고 깨달음입니다. 펄스와 시간을 이해하고 고정 효과가 순수하게 결정적인 모델입니까?
예측 자

@forecaster 예 고정 효과 / 계절 펄스는 순수하게 결정적입니다. 펄스 / 레벨 이동 및 현지 시간 추세와 같습니다. 또한 8 월 (8) 달은 중요하지 않았으며 최종 목록에 포함되지 않았습니다.
IrishStat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.