R의 tsoutliers 패키지를 사용하여 시계열 (LS / AO / TC)의 특이 값 탐지 방정식 형식으로 특이 치를 표현하는 방법은 무엇입니까?


35

코멘트 : 첫째로 나는 큰이에게 감사의 말씀을 전합니다 저자 새로운의 tsoutliers의 어떤 구현 패키지 첸 리우의 오픈 소스 소프트웨어 1993 년 미국의 통계 협회 저널에 발표 된 시계열 이상치 탐지 .R

이 패키지는 시계열 데이터에서 5 가지 유형의 특이 치를 반복적으로 감지합니다.

  1. 첨가제 이상치 (AO)
  2. 혁신 이상치 (IO)
  3. 레벨 시프트 (LS)
  4. 임시 변경 (TC)
  5. 계절별 이동 (SLS)

더 좋은 점은이 패키지가 예측 패키지에서 auto.arima를 구현하므로 특이 치를 탐지하는 것이 원활하다는 것입니다. 또한이 패키지는 시계열 데이터를 더 잘 이해하기위한 훌륭한 도표를 생성합니다.

아래는 내 질문입니다 :

이 패키지를 사용하여 몇 가지 예제를 실행하려고 시도했지만 훌륭하게 작동했습니다. 첨가제 이상치 및 레벨 이동은 직관적입니다. 그러나 나는 이해할 수없는 임시 변경 이상치 및 혁신적 이상 치를 전달하는 것과 관련하여 두 가지 질문을했습니다.

임시 변경 이상치 예 :

다음 예제를 고려하십시오.

library(tsoutliers)
library(expsmooth)
library(fma)

outlier.chicken <- tsoutliers::tso(chicken,types = c("AO","LS","TC"),maxit.iloop=10)
outlier.chicken
plot(outlier.chicken)

이 프로그램은 다음 위치에서 레벨 이동 및 임시 변경을 올바르게 감지합니다.

Outliers:
  type ind time coefhat tstat
1   LS  12 1935   37.14 3.153
2   TC  20 1943   36.38 3.350

아래는 줄거리와 내 질문입니다.

  • 방정식 형식으로 임시 변경을 작성하는 방법은 무엇입니까? (레벨 이동은 1935 / Obs 12 이전에 언제라도 1935 이후 및 이후에 1 인 이진 변수로 쉽게 쓸 수 있습니다.)

패키지 매뉴얼과 기사의 임시 변경에 대한 방정식은 다음과 같습니다.

L(B)=11δB

δ

  • 두 번째 질문은 혁신적 특이점에 관한 것이며
    , 실제로 혁신적 특이점을 본 적이 없습니다 . 어떤 수학적 사례 나 사례도 도움이 될 것입니다.

특이 치

편집 : @Irishstat, tsoutliers 함수는 특이 치를 식별하고 적절한 ARIMA 모델을 제안하는 데 탁월합니다. Nile 데이터 세트를 살펴보면 아래 auto.arima 적용 후 tsoutliers 적용 (auto.arima를 포함하는 기본값)을 참조하십시오.

auto.arima(Nile)
Series: Nile 
ARIMA(1,1,1)                    

Coefficients:
         ar1      ma1
      0.2544  -0.8741
s.e.  0.1194   0.0605

sigma^2 estimated as 19769:  log likelihood=-630.63
AIC=1267.25   AICc=1267.51   BIC=1275.04

tsoutliers 함수를 적용한 후 LS 특이 치 및 추가 특이 치를 식별하고 ARIMA 차수 (0,0,0)를 권장합니다.

nile.outliers <- tso(Nile,types = c("AO","LS","TC"))
nile.outliers
Series: Nile 
ARIMA(0,0,0) with non-zero mean 

Coefficients:
      intercept       LS29       AO43
      1097.7500  -242.2289  -399.5211
s.e.    22.6783    26.7793   120.8446

sigma^2 estimated as 14401:  log likelihood=-620.65
AIC=1249.29   AICc=1249.71   BIC=1259.71

Outliers:
  type ind time coefhat  tstat
1   LS  29 1899  -242.2 -9.045
2   AO  43 1913  -399.5 -3.306

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


8
패키지가 유용하다는 것을 알게되어 기쁩니다. 감사합니다! BTW 나는 패키지의 다음 릴리스에서 y 축이 원본 및 조정 된 시리즈의 범위를 포괄하도록 결과를 플롯하는 기능에 오타를 수정했습니다.
javlacalle

2
패키지의 마지막 버전 에서 package에서 같은 이름의 함수와 충돌하지 않도록 함수 tsoutliers이름이 바뀌 었습니다 . tsoforecast
javlacalle

1
@ javlacalle 나는 여전히 tsoutliers가 tso가 아닌 최신 tsoutliers 패키지를 다운로드했습니다. 패키지가 언제 업데이트되는지 확실하지 않습니다. 다른 기능 이름이있어서 다행입니다.
예측 자

업데이트에 대해 조금 알려주었습니다. CRAN에서 업데이트 될 때까지 시간이 걸립니다. 방금 CRAN에서 최신 버전 0.4를 다운로드 할 수 있음을 확인했습니다.
javlacalle

@ javlacalle 나는 tsoutliers가 내 Mac에 설치하기가 정말 어렵다는 것을 알았습니다. 설치된 gsl을 양조 clang하고 gccand 를 사용하여 컴파일하려고했지만 작동 하지 않습니다 . 나는 그것이 멋진 패키지라고 생각하지만 설치는 정말 내 마음을 아프게했다.
B.Mr.W.

답변:


19

filterδ=0δ=1

tc <- rep(0, 50)
tc[20] <- 1
tc1 <- filter(tc, filter = 0, method = "recursive")
tc2 <- filter(tc, filter = 0.3, method = "recursive")
tc3 <- filter(tc, filter = 0.7, method = "recursive")
tc4 <- filter(tc, filter = 1, method = "recursive")
par(mfrow = c(2,2))
plot(tc1, main = "TC delta = 0")
plot(tc2, main = "TC delta = 0.3")
plot(tc3, main = "TC delta = 0.7")
plot(tc4, main = "TC delta = 1", type = "s")

획기적인 변화

예를 들어, 함수 outliers.effects를 사용 하여 관측 된 계열에 대해 탐지 된 이상치의 효과를 나타낼 수 있습니다 .

# unit impulse
m1 <- ts(outliers.effects(outlier.chicken$outliers, n = length(chicken), weights = FALSE))
tsp(m1) <- tsp(chicken)
# weighted by the estimated coefficients
m2 <- ts(outliers.effects(outlier.chicken$outliers, n = length(chicken), weights = TRUE))
tsp(m2) <- tsp(chicken)

혁신적인 특이 치, IO가 더 독특합니다. 에서 고려 된 다른 유형의 특이 치와 달리 tsoutliersIO의 영향은 선택한 모형과 모수 추정치에 따라 다릅니다. 이 사실은 많은 특이 치와 연속적으로 문제가 될 수 있습니다. 알고리즘의 첫 번째 반복 (일부 이상치의 영향이 감지 및 조정되지 않았을 수 있음)에서 ARIMA 모델의 추정 품질이 IO를 정확하게 정의하기에 충분하지 않을 수 있습니다. 또한 알고리즘이 진행됨에 따라 새로운 ARIMA 모델이 선택 될 수 있습니다. 따라서 ARIMA 모델을 사용하여 예비 단계에서 IO를 감지 할 수 있지만 결국 동적은 마지막 단계에서 선택한 다른 ARIMA 모델에 의해 정의됩니다.

이 문서 에서는 일부 상황에서 IO가 발생 날짜가 과거에 멀어짐에 따라 IO의 영향이 증가 할 수 있음을 보여줍니다. 이는 해석하거나 추측하기 어려운 것입니다.

IO는 계절별 특이 치를 포착 할 수 있으므로 흥미로운 잠재력을 가지고 있습니다. 고려되는 다른 유형의 특이 치는 tsoutliers계절 패턴을 포착 할 수 없습니다. 그럼에도 불구하고 경우에 따라 IO 대신 가능한 계절별 레벨 시프트 (SLS)를 검색하는 것이 좋습니다 (앞서 언급 한 문서 참조).

IO에는 매력적인 해석이 있습니다. 교란 항에 영향을 미치고 ARIMA 모델의 동역학에 따라 계열로 전파되는 가산 적 이상치로 이해되는 경우가 있습니다. 이런 의미에서 IO는 부가적인 특이 치와 같으며 둘 다 단일 관측에 영향을 미치지 만 IO는 교란 항의 임펄스이지만 AO는 ARIMA 모델 또는 데이터 생성 프로세스에서 생성 된 값에 직접 추가 된 임펄스입니다. . 특이 치가 혁신에 영향을 미치는지 또는 외란 조건 밖에 있는지 여부는 토론의 문제 일 수 있습니다.

이전 참조에서 IO가 감지되는 실제 데이터의 예를 찾을 수 있습니다.


자세한 답변 감사합니다. 정말 감사. 추가 질문이 거의 없습니다. auto.arima를 사용하고 p, d, q를 식별 한 다음 arima를 tsmethod로 사용하여 tsoutlier를 사용하면 어떤 이점이 있습니까?
예측 자

1
forecast::auto.arima함께 사용하면 얻을 수있는 가장 큰 장점은 tsoutliers모든 것이 자동화된다는 것입니다. 그러나 다른 옵션으로 자동 절차를 실행하는 것이 좋습니다. 예를 들어 먼저 ACF 또는 단위 루트 테스트를보고에 전달할 ARIMA 모델을 선택할 수 있습니다 tsoutliers. 제안 된 모델에 대한 특이 치가 발견되면 조정 된 계열에 대한 분석을 다시 반복 할 수 있습니다. 반복적 인 과정입니다. 자동 절차는 유용한 가이드를 제공하지만 반드시 궁극적이거나 고유 한 솔루션을 제공하지는 않습니다.
javlacalle

1
특이 치를 찾는 절차는 반복적입니다. 안전을 위해 허용 가능한 반복 횟수에 제한이 설정됩니다. 경고를 관찰하면 인수 maxit.iloop를 5-6으로 늘리는 알고리즘을 실행 하여 결과가 변경되는지 확인할 수 있습니다. 경고가 큰 것 maxit.iloop(예 : 20 이상) 으로 반환 되면 무언가가 올바르게 모델링되지 않았다는 신호일 수 있습니다. 고려할 이상치 유형에서 IO를 제거하는 것이 좋은 옵션 일 수 있습니다. 대부분의 경우 경고를 무시할 수 있습니다. 당신은 suppressWarnings그들을 피하기 위해 사용할 수 있습니다 .
javlacalle 2016 년

2
@ mugen 나는이 문제를 철저히 다루는 교과서를 모른다. 이 글에서 논의 된 접근 방식이 개입 분석과 관련되어 있으므로이 문제에 관한 장이있는 교과서 (Econometrics 또는 시계열)가 도움이 될 것입니다. 예를 들어 시계열 분석. R의 응용 프로그램으로 . 자세한 내용은 Chen 및 Liu (1993) 와이 문서 에서 참조한 내용을 참조 하여이 문제를 다루는 많은 저널 기사 중 일부를 검토해야합니다 .
javlacalle

2
@ mugen, 나는 또한 Tsay의 기사를 확인할 것 입니다. 또한, 나는 특이점에 대해 잘 다루는 Pankratz의 고전 서적을 확인할 것 입니다.
예측 자
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.