본문 바로가기

Statistics

Time Series Analysis 13 - Seasonality

원문 : http://www.itl.nist.gov/div898/handbook/pmc/section4/pmc443.htm


많은 시계열은 계절성을 띈다. 계절성이라는 것은 주기적인 변동을 의미한다. 예를들어 소매업은 크리스마스 시즌에 절정이다가 그 후에 감소세로 돌아선다. 따라서 소매업의 시계열들은 전형적으로 10월에서 12월까지 증가를 보이다가 1월과 2월에 감소한다.


계절성은 경제시계열에서는 꽤 일반적이고 공학과 과학데이터에서는 덜 일반적이다. 만약 계절성이 있다면 이것은 반드시 시계열모델로 다뤄야한다. 이 섹션에서, 우리는 계절성을 찾는 기술들을 논의한다. 계절성을 모델링하는것은 다음 섹션들로 미루겠다.


Graphical technique들이 계절성을 찾는데 사용되어 질수 있다.


1. Run Sequence Plot 


Run sequence plot은 단변량 데이터를 그래픽하게 요약하는 하나의 쉬운 방법이다. 단변량 데이터의 일반적 가정은 고정된 분포로부터 랜덤하게 그려지며 공통적인 location 과 scale을 가저야 한다. run sequence plot으로 특정 크기와 위치로의 이동은 전형적으로 꽤 명확하게 보인다. 또한 이상치도 쉽게 관측된다.



이 run sequence plot은 데이터의 마지막 1/3 에서 location이 올라갔음을 보여준다. run seqeunce plot은 다음에 의해 형성된다.


          • 수직축 : 반응(종속)변수 
          • 수평축 : Index i (i=1, 2, 3)

run sequence plot은 다음 질문들에 답할 수 있다.


1. location에서 어떠한 변동이 있는가?
2. variation에서 어떠한 변동이 있는가?
3. outlier가 있는가?


run sequence plot은 분석가에게 데이터에 대한 좋은 직관을 가져다 준다. 단변량 데이터에 대해서 기본모델은 다음과 같다.


error는 고정된 분포에서, 고정된 location과 scale을 가지며, random 하다고 가정된다.  이 모델의 유효성은 이러한 가정들의 유효성에 달렸다. run sequence plot은 고정된 location과 scale을 찾는데 유용하다. 더 복잡한 모델들에 대해서도, error term에 대한 가정들은 여전히 같다. 다시말해, 비록 매우 복잡한 모델이라도 잔차들에 대한 run sequence plot은 여전히 outlier와 location과 scale의 변동을 확인하는데 중요한 역활을 한다.


이러한 종류의 plot들은 Scatter Plot ,Histogram ,Autocorrelation Plot ,Lag Plot 등이 있다.


2. Seasonal subseries plot

 seasonality를 보여주는데 특화된 테크닉이다. 이 plot은 seasonality의 주기가 알려졌을때만, 유용하다. 많은 사례들에서, 사실 이 주기는 주어졌을 것이다. 예를들어 월별 데이터가 전형적으로 12의 주기를 갖는다. 만약 그 주기가 알려지지 않았다면, autocorelation plot 혹은 spectral plot이 계절성 유무를 결정하는데 사용될 수 있다. 


이산화탄소 농도에 대한 월별 데이터를 담고 있는 이 seasonal subseries plot은 강력한 계절성패턴을 드러낸다. 5월에 이산화탄소 농도가 최고조이고 9월달 까지 점차적으로 줄어든다. 그리고 그 다음에, 5월까지 다시 오르기 시작한다. 이 plot은 분석가가 그룹간 그리고 그룹내 패턴들 둘다를 확인할 수 있게 해준다. 만약 관찰치 개수가 많다면 boxplot을 사용하는것을 추천한다.

Seasonal subseries plot 은 수직축은 종속변수, 수평축은 계절순으로 정렬된 시간, 예를들어 월별데이터로, 모든 1월의 값은 연대순으로 그려지고 그 후에 다시 2월의 값이 연대순으로 그려지고 이러한 과정이 12월 까지 반복된다.

덧붙여, reference line(위에서 보이는 가로선)은 각월의 평균들에서 그려진다. 이 plot을 생성하기 전에 계절성패턴의 길이는 분석가가 지정해줘야만 한다. 대부분의 경우에, 분석가는 데이터모음과 문제의 문맥으로부터 이를 알아낼 수 있다. 때때로, 시계열은 plot을 생성하기전에 trend를 빼줘야 할 필요가 있다. 

seasonal subseries plot은 다음과 같은 질문에 답할수 있다.


1. 데이터는 계절성패턴을 띄는가?

2. 계절성의 특징이 뭔가?

3. 그룹내(해당월)패턴이 있는가? (예를들어 1월과 7월달이 비슷한 패턴을 보이는가?)

4. 계절성을 설명하는 어느 이상치들이 있는가?


만약  확연한 계절성효과가 있다면, 어느때 시계열 분석을 해야하는지를 아는것이 중요하다. seasonal subseries plot은 계절성 패턴이 있는지 없는지를 결정하는데 휼륭한 툴이다.


3. Multiple Box plot


계절성을 찾아내는 seasonal subseries plot를 대체하여 사용될 수 있다. boxplot은 dataset에서 location과 variation 정보 특히 다른 데이터그룹들간의 location과 variation 변화를 보여주고 찾는데 좋은 툴이다.



이 box plot은 4개의 기계의 에너지 산출을 비교한것이다. 이것은 location과 variation을 통해서, 에너지에 대한 막대한 효과를 가지는 기계를 뵤여준다. machine 3은 가장 높은 에너지산출을 낸다. (약 72.5) machine4는 이것의 해석은 한 에너지단위에서 이것의 약 50%로 가장 작은 변동에너지산출(즉 분산이 작다는 말임)을 낸다.

boxplot은 수직축은 반응변수, 수평축은 관심 요인이 온다. 더 자세히, 우리는 median과 quartiles(하위 25번째 상위 75번째)를 계산하고, median에 선이나 특정 symbol로 표시를 한다.그리고 lower 와 upper quartiles 사이에 박스를 그린다. 이박스는 데이터의 중앙 50%를 나타낸다. 혹은 이를 데이터의 몸통(body)라고 한다. 그다음 lower quartile에서 최소값 포인트까지 선을 긋고, upper quartile에서 최대값 포인트 까지 선을 긋는다. 그리고 이건 선택적이지만 최대, 최소값에 symbol을 그린다.

그러므로 boxplt은 데이터의 중앙 50%, 중앙값(median) 그리고 극소,극대값을 알 수 있다.

하나의 단일 boxplot은 다른 구별된 그룹없이 하나의 데이터 뭉치(batch)로 그릴 수 있다. 대안으로, multiple box plots은 한 데이터셋에서 그룹들을 비교하거나 다양한 데이터셋들을 비교하기 위해 그려진다. 단일 boxplot에서 box의 너비는 임의적이다. multiple box plots 에서는, box plot의 너비는 주어진 그룹 혹은 샘플들에서 데이터 포인트들의 수에 비례하여 정했다. (몇몇 소프트웨어에서는 모두 동일한 너비로 그린다.)

box plot의 유용한 변환이 있다. 바로 outlier들을 더 구체적으로 구별할 수 있다. 이러한 변화를 만들기 위해서,


1. median과 lower 그리고 upper quartiles를 계산한다.

2. lower와 upper quartile 사이에 box를 그리고 median에는 symbol을 그려라.

3. interquartile 범위를 계산 그리고 이것을 IQ라 부른다.

4. 다음의 포인트들을 계산한다.

    L1 = lower quartile - 1.5*IQ
    L2 = lower quartile - 3.0*IQ
    U1 = upper quartile + 1.5*IQ
    U2 = upper quartile + 3.0*IQ

5. LOWER QUARTILE에서 최소값까지의 선은 LOWER QUARTILE에서 L1 보다 더 작은 포인트까지 그린다. 반대도 마찬가지이다.
6. L1과 L2 사이 혹은 U1과 U2 사이의 점들은 작은 원들로 그려진다. L2보다 작거나 U2 보다 큰 점들은 큰 원으로 그려진다.

BOX PLOT은 다음과 같은 질문에 대답할 수 있다.

1. 한 요인이 유의한가?
2. 하위 그룹간에 LOCATION이 다른가?
3. 하위 그룹간 VARIATION이 다른가?
4. OUTLIER가 있는가?

BOX PLOT은 한 요인이 LOCATION 혹은 VARIATION에 대해 반응변수에 유의한 효과를 미치는지를 결정해주는 중요한 EDA 툴이다. 
BOX PLOT은 또한 방대한 양의 정보를 요약하는데 효과적인 툴이다. 

4. Autocorrelation

Autocorrelation plot들은 데이터에서 임의성(randomness)를 확인하기 위해 일반적으로 사용되는 툴이다. 이 임의성은 변화하는 time lag들에서 데이터 값에 대한 자기상관성(autocorrelations)을 계산하여 얻어진다. 만약 임의적이라면, 이러한 자기상관성은 어느 모든 분리된 시차(time-lag)에서 거의 0이 되어야만 한다.(임의적이라면 time lag가 달라져도 자기상관성은 0이 된다는말) 만약 임의적이지 않다면 한개 이상의 자기상관성들이 유의하게 0이 아닐것이다. 덧붙여 자기상관성 plot은 box-jenkins autoregressive, moving average time series 모델에 대한 모델 검증에서 사용된다.
uncorrelated하는 것이 반드시 임의적인 것을 의미하지는 않는다는 것을 명심해라. 유의한 자기상관성을 가진 데이터는 비 임의적(non-randomness)이다. 그러나 유의한 자기상관성을 보이지 않는 데이터도 여전히 다른 방식으로 비 임의성(non-randomness)을 보일 수 있다. 자기상관성은 단지 임의성의 한 측정일 뿐이다. 모델 평가의 맥락에서, 자기상관성을 확인하는것은 일반적으로 임의성에 대한 테스트로 충분하다. 왜냐하면 잘 적합되지 못한 모델로부터의 잔차들은 확실한 임의성을 보여주기 때문이다. 그러나 몇몇 어플리케이션들은 임의성에 대해 더 엄격한 결정을 요구한다. 이러한 상황에서, 데이터가 많은 다양하고 미묘한 방식으로 임의성이 없을수 있기 때문에, 자기상관성에 대한 검증을 포함한 많은 테스트들이 적용된다.

임의성에 대한 엄격한 검증이 필요한 예는 난수생성기를 테스트 할때 있을 것이다.


이 예제 Autocorrelation plot은 시계열이 random 하지 않다는것을 보여준다. 오히려 밀접한 관찰치들 사이에서 높은 자기상관성을 가진다.


  • Autocorrelation plot의 수직축은 자기상관계수 


는 자기공분산 함수이다.



는 분산 함수이다.



는 -1 과 1 사이이다.

때로는 다른 자기공분산 함수 공식을 쓰기도 한다.



비록 이 정의는 덜 편향되었을지라도, 1/N 을 사용한 공식이 더 선호되는 통계적 특성이고 통계학계에서 일반적으로 가장 많이 쓰인다. 


  • 수평축은 Time lag h (h =1, 2, 3,...)


위쪽선은 몇몇 horizontal reference line들을 갖는다. 중간선은 0에 있고, 다른 4개의 선은 95% 와 99% 신뢰구간이다. 신뢰구간을 만들기 위해 두개의 특정 공식이 있음을 명심해라.


1. 만약 autocorrelation plot이 임의성을 테스트하기위해 사용되고 있다면 (즉 데이터에 시간의존성이 없다.) 다음 공식을 사용해라.



N은 표본의 크기, 는 유의수준,z는 표준정규분포의 누적분포함수이다. 이상황에서, 신뢰구간은 표본크기에 따른 고정된 너비(분산)를 가진다. 위의 plot에서, 이 공식은 신뢰구간을 생성하는데 사용된다.


2. 자기상관 plot은 또한 ARIMA 모델을 적합시키기 위해 모델검증에서 사용된다. 이 케이스는, moving average model은 데이터에 대해 가정되었고 다음 신뢰구간이 만들어져야 한다.



k는 lag, N은 표본의 크기, z는 표준정규분포의 누적분포함수 그리고 는 유의수준이다. 이 상황에서, 신뢰구간은 lag가 증가할수록 커진다.


autocorelation plot은 다음과 같은 질문에 대답할 수 있다.


1. 데이터가 임의성을 가지는가?

2. 한 관측치가 이전 혹은 이후 관찰치와 연관되어 있는가?

3. 한 관측치가 twice-removed 된 관찰치와 연관이 있는가? (2번 smoothing을 했다는건가?)

4. white noise가 시계열에서 관측되는가?

5. 시계열이 사인파모형(sinusoidal)을 띄는가?

6. 시계열이 자기회귀를 띄는가?

7. 관찰된 시계열에 대해서 적절한 모델이 무엇인가?

8. y= constant +error 모델로 유효하고 충분한가?

9. 이 성립하는가?


시계열에서 고정된 분포, 고정된 분산, 고정된 모델과 더불어 임의성은 모든 측정 프로세스에 일반적으로 깔려있는 4가지 가정중 1개이다. 임의성가정은 다음의 3가지 이유 때문에 결정적으로 중요하다.


1. 가장 표준적인 통계적 검증은 임의성에 의존한다.(임의성이 많은 검증에 기준이 된다는 말) 검증의 유효성은 임의성 가정의 유효성으로 이어진다.


2.  많은 일반적으로 사용되는 통계적 공식들은 임의성가정에 따른다. 즉 표본평균의 표준편차를 결정하는 공식이 가장 일반적으로 쓰이는 공식이다.

s는 데이터의 표준편차이다. 비록 이 공식이 많이 쓰일지라도, 임의성가정이 뒷받침되지 않는다면, 이 공식을 사용하는것은 쓸모가 없다.


3. 단변량 데이터에서, 기본적인 모델은 y= constant +error 이다. 만약 데이터가 임의성을 가지고 있지 않다면, 이 모델은 적합하지 않다. 그리고 파라미터(e.g. constant)들에 대한 추정치들또한 유효하지않은 값들이다.


요약하자면, 만약 분석가가 randomness를 검증하지 않았다면, 많은 통계적 결론들이 의심을 받게 된다. autocorrelation plot은 이러한 임의성을 확인하는 휼륭한 하나의 방법이다. 몇몇 공통적인 상황에 대하여 autocorrelation plot의 예제들이 다음 것들에 있다.

Random (= White Noise)

Weak autocorrelation

Strong autocorrelation and autoregressive model 

Sinusoidal mode


이렇게 계절성을 찾는 Graphical technique들을 알아봤다.


각 4개의 plot의 예제는 아래에 나올것이다.


run sequence plot은 어느 시계열 분석에서든 처음에 하도록 권고한다. 비록 계절성이 이 plot으로 나타날수 있을지라도, 계절성은 seasonal subseries plot 또는 boxplot으로 더 명확히 드러날 수 있다. seasonal subseries plot은 seasonal differences(그룹간 패턴들) 그리고 그룹내의 패턴들 둘 다를 보여주는데 훌륭한 툴이다. box plot은 seasonal difference(그룹간 패턴들)를 보여주는데는 좋으나 그룹내의 패턴을 보여주는데는 좋지 못하다. 그러나 큰 데이터셋에서는, box plot이 seasonal subseries plot 보다 더 일기 쉽다.


seasonal subseries plot과 box plot 둘다는 계절성 주기들을 알고있다는 가정을한다. 대부분의 케이스에서, 분석가는 실제로 이를 알고 있을것이다. 예를 들어 월별데이터에서, 1년에 12개월이기 때문에 주기는 12이다. 그러나 만약 주기가 알려지지 않았다면, autocorrelation plot이 도움이 된다. 만약 유의한 계절성이 있다면, autocorrelation plot은 주기와 같은 lag에서 spike를 보여야 한다. 만약 계절성 효과가 있다면, 우리는 lag 12 와 24, 36 등등에서 계속 유의한 급상승을 볼것으로 예상된다. (비록 강도는 더 갈수록 줄어들수도 있을지라도.)


다음 plot들은 엘니뇨 예측에 대한 data set of southern oscillations으로부터의 plot이다. 이 데이터는 seasonality가 없다.

Run Sequence Plot



run sequence plot에서는 명확한 주기적 패턴들이 보이지 않는다.

Seasonal Subseries Plot


각달의 평균들은 상대적으로 가깝고 특정 패턴을 보이진 않는다.

Box Plot



Seasonal subseries plot에서와 같이, 명확한 계절적 패턴이 없다. 오히려 많은 수의 관찰치 때문에 box plot이 각 월간 차이를 seasonal subseries plot 보터 더 잘 보여준다.


다음데이터는 월별 이산화탄소 농도 데이터로부터의 plot들 이라. linear trend는 제거했다. 이 예제는 seasonality가 있다.

Run Seqeunce Plot



이 plot은 주기성을 띈다. 그러나 이 plot으로 부터 계절성을 띈다고 결정하기는 무리가 있다.


Seasonal Subseries Plot


seasonal subseries plot은 계절적 패턴을 더 명확히 보여준다. 이 사오항에서, 이산화탄소 농도는 9월, 10월에 최소를 그이후 천천히 농도가 6월달 까지 올라가고 그리고 다시 9월까지 감소하기 시작한다.


Box Plot



seasonal subseries plot과 마찬가지로 계절성패턴이 box plot에서 꽤 명확하게 보인다.