아직 본격적인 Time Series에 대한 포스팅은 않았지만, 그래도 중요할 것 같은 2개의 이론을 소개하고, 다음 포스팅에서 파이썬으로 어떻게 구현하지에 대한 포스팅을 시작하겠다
보통 현업에서 데이터를 분석할 때, 많이 사용하는 것 중에 하나가 SMA(Simple Moving Average)다. 단순히 Window(데이터의 갯수)를 정해서 그 갯수만큼 평균을 내는것인데, 예를들어 window=6인 SMA라고 하면, 6일치의 평균을 일별데이터가 업데이트 할 때마다 계속 구하는 것이다.
가장 구하기 쉽고 직관적이라고 많이들 사용하는데, 이것의 대한 단점은
1. 최근의 Shock(데이터의 충격 = 갑자기 크게 증폭하거나 감소하는 것)을 반영할 수 없다는 점
2. Sample Period(Window)를 얼마로 해야되는지 의문
3. 특정 시점이 Sample에 들어가는 지에 의해 굉장히 다른 값이 나옴(특정시점에 따라 변동성이 심각하게 달라짐)
4. 변동성 Clustering 효과를 잡아줄 수 없다 (변동성은 결코 시간에 대한 독립은 아니기 때문에)
그래서 이러한 단점을 완벽하게는 아니더라도 어느정도는 보완하기 위해 나온것이 EWMA(Exponentially Weighted Moving Average)다. EWMA란 시계열 데이터를 지수적 가중치를 둬서, 최근 데이터에는 가장 큰 비중을 두게 하고, 시간이 오래된 데이터에는 지수적으로 가중치를 가장 적게 주는 방식이다. SMA의 경우 모든 데이터에 시간의 상관없이 같은 비중을 뒀다면, EWMA는 시간의 따른 지수적 가중치를 부여했다고 할 수 있다.
여기서 EWMA 공식을 살펴봐도 알 수 있지만, EWMA에 들어가는 변수는 Smoothing Factor인 '알파'만 들어가있다. 즉 지수적으로 데이터 움직임을 설명할 수 있지만 시계열 데이터의 계절성이나 트랜드는 잡아내지 못한다는 뜻이다. 그래서 이러한 계절성과 트랜드를 잡아내기 위해 공식이 이러한 것들을 설명할 수 있는 Factor이 필요하고 그것의 대한 방법론이 'Holt -Winters Methods'다.
방식은 EWMA 방식과 비슷한데,
위의 식에서 보면 알 수 있지만, 레벨을 제거한 나머지에서 트랜드를 다시 지수적으로 구한거고, 마찬가지로 트랜드를 제거한 나머지에서 다시 같은 방식으로 적용하여 지수적으로 계절성을 구한 것이다
즉 단순히 EWMA에서 지수적으로 감소하는 부분들을 각각의 팩터별로 설정한 것이기 때문에 저들을 설명하는 파라미터인 알파, 베타, 감마를 설정하는 것이 중요할 수 있겠다.
'Python > Time Series with Python' 카테고리의 다른 글
TimeSeries with Python _ Holt-Winters _ Prediction(Foresasting) _ Python (0) | 2019.12.29 |
---|---|
TimeSeries with Python _ EWMA & Holt-Winters _ Python (0) | 2019.12.28 |
TimeSeries with Python _ ETS Model (0) | 2019.12.25 |
TimeSeries with Python _ Pandas 6 _ 년별 데이터 평균, idxmax (0) | 2019.12.25 |
TimeSeries with Python _ Pandas 5 _ info, set_index, boxplot (0) | 2019.12.25 |