Statsmodel ๊ธฐ์ดˆ

from statsmodels.tsa.filters.hp_filter import hpfilter

#ex)
from statsmodels.tsa.filters.hp_filter import hpfilter
  • ๊ณ„์ ˆ์„ฑ ๋ถ„์„์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜ธ์ถœ

cycle, trend = hpfilter(df[โ€™์—ด ์ด๋ฆ„โ€™], lambda)

  • cycle๊ณผ trend ํŒŒ์•…
  • lambda ๊ฐ’
    • ์›”๋ณ„: 14400
    • ๋ถ„๊ธฐ๋ณ„: 1600
    • ๋…„๋„๋ณ„: 1000
  • ex)
    ```python
    #ex)
    gdp_cycle, gdp_trend = hpfilter(df['realgdp'], lamb=1600)
    df['trend'] = gdp_trend
    df[['trend','realgdp']]['2005-01-01' : ].plot()
    ```

ETS Models (Error-Trend-Seasonality)

์ •์˜

  • ์ง€์ˆ˜ํ‰ํ™œ๋ฒ•, ETS ๋ถ„ํ•ด, ์ถ”์„ธ๋ชจํ˜•๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ชจ๋ธ ํฌํ•จํ•˜๋Š” ํ‘œํ˜„

  • Residual(Error) โ‡’ ์ž”์ฐจ(์˜ค์ฐจ)

    • ์ถ”์„ธ๋‚˜ ๊ณ„์ ˆ์„ฑ์œผ๋กœ๋Š” ์„ค๋ช…๋˜์ง€ ์•Š๋Š” ์š”์†Œ
    • ์žก์Œ (noise)์œผ๋กœ ํ•ด์„๋จ, ์žก์Œ์ด ๋งŽ์€ ๊ตฌ๊ฐ„์ด ์–ด๋””์ธ์ง€ ํŒ๋‹จ
  • ๋ง์…ˆ ๋ชจ๋ธ: ์ถ”์„ธ๊ฐ€ ์„ ํ˜•์— ๊ฐ€๊น๊ณ , ๊ณ„์ ˆ์„ฑ์ด ์ผ์ •ํ•  ๋•Œ ์ ์šฉ

    • ex) ๋งค๋…„ 1000๋ช…์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ๋น„ํ–‰๊ธฐ ํƒ‘์Šน๊ฐ ์ˆ˜
  • ๊ณฑ์…ˆ ๋ชจ๋ธ: ์ง€์ˆ˜์  ์ฆ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ (๋น„์„ ํ˜•์  ์ฆ๊ฐ)

    • ex) ์ „๋…„๋„์— ๋น„ํ•ด ๋‘๋ฐฐ๋กœ ๋Š˜์–ด๋‚˜๋Š” ๋น„ํ–‰๊ธฐ ํƒ‘์Šน๊ฐ ์ˆ˜
  • ETS ๋ถ„ํ•ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋Š” ๋ˆ„๋ฝ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ๋˜๋ฏ€๋กœ, dropna() ์‹คํ–‰

Ex)

Seasonality ๋ถ„์„

from statsmodels.tsa.seasonal import seasonal_decompose

Ex)

result = seasonal_decompose(airline['Thousands of Passengers'],model='multiplicative')
  • ๋ง์…ˆ ๋ชจ๋ธ: model = โ€˜additiveโ€™
  • ๊ณฑ์…ˆ ๋ชจ๋ธ: model = โ€˜multiplicativeโ€™

๊ทธ๋ž˜ํ”„ ํฌ๊ธฐ ์กฐ์ •

from pylab import rcParams
rcParams['figure.figsize'] = 12,5

result.plot();

SMA

  • SMA์˜ ๋‹จ์ 
    • ์งง์€ ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์„ ์ด์šฉํ•˜๋ฉด ์‹ ํ˜ธ๋ณด๋‹ค ์žก์Œ์ด ์ปค์งˆ ์ˆ˜ ์žˆ์Œ
    • ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„๋งŒํผ ์‹œ์ฐจ ๋ฐœ์ƒ
    • ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์ด ๋งค์šฐ ์งง๋”๋ผ๋„ ์›๋ž˜ ๋ฐ์ดํ„ฐ์˜ ๊ทน๋Œ€๊ฐ’๊ณผ ๊ทน์†Œ๊ฐ’์— ๋ชป ๋ฏธ์นจ
    • ๋ฏธ๋ž˜ ๋ณ€๋™์— ๋Œ€ํ•ด ์–ด๋– ํ•œ ์ •๋ณด๋„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์Œ โ†’ ํ˜„์žฌ์˜ ์ถ”์„ธ๋งŒ ๋ณด์—ฌ์คŒ
    • ๊ทน๋‹จ์ ์œผ๋กœ ํฌ๊ฑฐ๋‚˜ ์ž‘์€ ๊ฐ’์€ ์ „์ฒด ์ด๋™ ํ‰๊ท ๊ฐ’์„ ์™œ๊ณก์‹œํ‚ด

## SMA(๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ) Code
airline['6-month-SMA'] = airline['Thousands of Passengers'].rolling(window=6).mean()
airline['12-month-SMA'] = airline['Thousands of Passengers'].rolling(window=12).mean()
airline.plot()

EWMA

์ •์˜

  • EMWA ๋ชจ๋ธ: ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท 
  • ์ตœ๊ทผ ์ž๋ฃŒ๋“ค์— ์˜ค๋ž˜๋œ ์ž๋ฃŒ๋“ค๋ณด๋‹ค ๊ฐ€์ค‘์น˜ ๋ถ€์—ฌ
  • SMA(๋‹จ์ˆœ ์ด๋™ ํ‰๊ท )์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๋Š” ๋ชจ๋ธ

EWMA(์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท ) Code

airline['EWMA-12'] = airline['Thousands of Passengers'].ewm(span=12).mean()
airline[['Thousands of Passengers','EWMA-12']].plot(figsize=(8,5))

EWMA์˜ ๊ณต์‹

  • x: ์ž…๋ ฅ
  • y: ์ถœ๋ ฅ
  • w: ๊ฐ€์ค‘์น˜

EWMA์˜ ๋งค๊ฐœ๋ณ€์ˆ˜

adjust

  • adjust = True

alpha = 0~1 ์‚ฌ์ด์˜ ๊ฐ’์„ ๊ฐ€์ง

    โ†’ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค๋ž˜ ๋ ์ˆ˜๋ก ์ž‘์€ ๊ฐ€์ค‘์น˜๊ฐ€ ๊ณฑํ•ด์ง
    
  • adjust = False

์•„๋ž˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋“ค์„ ์ด์šฉํ•˜์—ฌ ๊ฐ€์ค‘์น˜ ์„ค์ • ๊ฐ€๋Šฅ

span

  • N์ผ ์ด๋™ ํ‰๊ท ์— ํ•ด๋‹น
  • ex) 7์ผ์— ๋Œ€ํ•œ ์ด๋™ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ, span=7๋กœ ์ง€์ •

center of mas(com)

  • c=(s-1)/2๋กœ span๊ณผ ์—ญ ๊ด€๊ณ„

halflife

  • ๋ฐ˜๊ฐ๊ธฐ, ์ง€์ˆ˜์  ๊ฐ€์ค‘์น˜๊ฐ€ ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“œ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ๊ธฐ๊ฐ„

0๊ฐœ์˜ ๋Œ“๊ธ€

Powered by GraphCDN, the GraphQL CDN