๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ณต๋ถ€๊ธฐ๋ก/์‹œ๊ณ„์—ด

2. Statsmodels๋ฅผ ์ด์šฉํ•œ ์‹œ๊ณ„์—ด ๋ถ„์„

by kaizen_bh 2024. 1. 17.

ํ•ด๋‹น ๋‚ด์šฉ๋ถ€ํ„ฐ๋Š” ์ˆ˜ํ•™์ ์ธ ๋‚ด์šฉ๋“ค์ด ๋งŽ์ด ๋‚˜์˜ค๋Š”๋ฐ ์ˆ˜์‹์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด๋ณด๋‹จ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ ์œ„์ฃผ๋กœ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

 

 

2-1. ETS-Decomposition

์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋Š” ํŠน๋ณ„ํ•œ ์†์„ฑ๋“ค - ์š”์†Œ๋“ค์„ ๊ฐ€์ง„๋‹ค

  • ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋Š” ํŠธ๋ Œ๋“œ, ์ถ”์„ธ์ด๋‹ค.ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ์—์„œ ํ•œ๊ฐ€์ง€ ์ถ”์„ธ๋งŒ์„ ๋ณด์ด๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ถ”์„ธ๊ฐ€ ๋ณด์ผ ์ˆ˜๋„ ์žˆ๋‹ค. ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ๋“  ์ถ”์„ธ๋ฅผ ๊ฐ€์ง„๋‹ค.
    • ๋”ฐ๋ผ์„œ ๋ถ„์„ํ•˜๊ณ ์ž ํ•˜๋Š” ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ์ถ”์„ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”์ง€ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๋ณด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค
    • ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋Š” ๊ฒฝํ–ฅ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์œ„๋กœ ๊ฐ€๋Š” ์ถ”์„ธ, ํ˜น์€ ์ค‘๊ฐ„์— ์ˆ˜ํ‰๋ฐฉํ–ฅ์ด๋‚˜ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ถ”์„ธ, ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€๋Š” ์ถ”์„ธ๊ฐ€ ์žˆ๋‹ค
  • ๋‘๋ฒˆ์งธ ์š”์†Œ๋Š” ๊ณ„์ ˆ์„ฑ์ด๋‹ค.ํ•ด๋‹น ๊ฐ•์˜์—์„œ๋Š” ์Šค๋…ธ์šฐ๋ณด๋“œ์™€ ์Šค๋…ธ์šฐ๋ณด๋”ฉ์˜ ๊ฒ€์ƒ‰ ๊ธฐ๋ก๊ณผ ๊ณ„์ ˆ์˜ ๊ด€๊ณ„๋ฅผ ์˜ˆ์‹œ๋กœ ๋“ค์—ˆ๋Š”๋ฐ ๋งค ๊ฒจ์šธ๋งˆ๋‹ค ํ•ด๋‹น ํ‚ค์›Œ๋“œ์˜ ๊ฒ€์ƒ‰๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๊ณ  ์—ฌ๋ฆ„๋งˆ๋‹ค ๊ฐ์†Œํ•˜๋Š” ๊ฒฝํ–ฅ์„ ๋ณด์ด๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋Ÿฌํ•œ ๊ฒฝํ–ฅ์„ฑ์„ ๋ฐ˜๋ณต์  ์ถ”์„ธ๋ฅผ ๊ณ„์ ˆ์„ฑ์ด๋ผ ํ•œ๋‹ค. ๋ฐ˜๋ณต์ ์ธ ํŒจํ„ด ์™ธ์—๋„ ๊ทธ๋ž˜ํ”„ ์ „์ฒด์˜ ์ถ”์„ธ๊ฐ€ ์–ด๋– ํ•œ์ง€๋„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
    • ๊ณ„์ ˆ์„ฑ์€ ์ด๋ฆ„์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ๊ณ„์ ˆ๋งˆ๋‹ค ๋ณ€ํ™”๊ฐ€ ์กด์žฌํ•˜๋Š” ๋˜๋Š” ์ผ์ • ์ฃผ๊ธฐ๋ฅผ ์ง€๋‹ˆ๊ณ ์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋ณด์ด๋Š” ์ถ”์„ธ์ด๋‹ค.
  • ์„ธ๋ฒˆ์งธ ์š”์†Œ๋Š” ๋ฐ˜๋ณต์„ฑ์ด ์—†๋Š” ์š”์†Œ์ธ ์ˆœํ™˜ ์š”์†Œ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์š”์†Œ๋ฅผ ์ˆœํ™˜, ์ˆœํ™˜์  ์š”์†Œ๋ผ ํ•˜๋ฉฐ ํŠน์ • ๊ธฐ๊ฐ„๋™์•ˆ ๋ฐ˜๋ณต์  ์ถ”์„ธ๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค.
    • ์ƒ์Šน์„ ํ•˜๋‹ค๊ฐ€ ๋˜ ํ•˜๋ฝ์„ ํ•˜๊ธฐ๋„ ํ•˜์ง€๋งŒ ๊ณ„์ ˆ์„ฑ๊ณผ ๊ฐ™์€ ๋ฐ˜๋ณต์  ์ถ”์„ธ๊ฐ€ ๋ณด์ด์ง€ ์•Š์„ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ๋งค๋…„ ํ˜น์€ ์–ด๋–ค ์ฃผ๊ธฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์˜ˆ์ธกํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค. ์ฃผ๊ธฐ๊ฐ€ ๋šœ๋ ทํ•˜๊ฒŒ ๋ณด์ธ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๊ณ„์ ˆ์„ฑ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์–ด๋–ค ๋ฐ์ดํ„ฐ์…‹์—์„œ๋Š” ๋šœ๋ ทํ•œ ์ฃผ๊ธฐ๊ฐ€ ๋ณด์ด์ง€ ์•Š๊ธฐ๋„ ํ•œ๋‹ค. ํ˜„์‹ค์˜ ๋งŽ์€ ๋ฐ์ดํ„ฐ์…‹์ด ์ด๋Ÿฐ ๊ฒฝ์šฐ์— ์†ํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•  ๋•Œ ๋ฐ์ดํ„ฐ์— ์–ด๋–ค ์‹œ๊ณ„์—ด ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

 

 

Statsmodels์— ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์„ ํ†ตํ•ด ์š”์†Œ๋“ค์„ ํ™•์ธํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค. statsmodels๋Š” ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์˜ ์š”์†Œ ๋ถ„ํ•ด๋ฅผ ์œ„ํ•œ ๊ณ„์ ˆ์„ฑ ์š”์†Œ ๋ถ„ํ•ด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๋ถ„ํ•ด๋˜๋Š” ์š”์†Œ๋กœ๋Š” ๊ณ„์ ˆ์„ฑ ์š”์†Œ์™€ ์˜ค์ฐจ์š”์†Œ, ์ถ”์„ธ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค

ETS ๋ชจ๋ธ์€ ์˜ค์ฐจ(E), ์ถ”์„ธ(T), ๊ณ„์ ˆ์„ฑ(S) ์„ธ ์š”์†Œ๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๊ณฑํ•˜๊ฑฐ๋‚˜ ํ˜น์€ ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ํ‰ํ™œํ™” ํ•œ๋‹ค

์–ด๋–ค ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์˜ ์ผ๋ฐ˜์  ํŠน์„ฑ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์˜ค์ฐจ, ์ถ”์„ธ, ๊ณ„์ ˆ์„ฑ์— ๊ธฐ๋ฐ˜ํ•ด ์‹œ๊ฐํ™”๋ฅผ ํ•˜๋ฉด ์ข‹๋‹ค

 

++ ETS๋ชจ๋ธ์€ ์˜ค์ฐจ(Error) + ์ถ”์„ธ(Trend) + ๊ณ„์ ˆ์„ฑ(Seasonality Models)์˜ ์ค„์ž„๋ง๋กœ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•(Exponential Smoothing)๊ณผ ETS๋ถ„ํ•ด(ETS Decomposition), ์ถ”์„ธ ๋ชจํ˜•(Trend Methods Models)๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ชจ๋ธ์„ ํฌํ•จํ•˜๋Š” ์ผ๋ฐ˜์  ํ‘œํ˜„์ด๋‹ค.

 

 

 

< ์—ฐ๊ฐ„ ํ•ญ๊ณต๊ธฐ ํƒ‘์Šน๊ฐ ๋ฐ์ดํ„ฐ >

 

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

from statsmodels.tsa.seasonal import seasonal_decompose

result = seasonal_decompose(airline['Thousands of Passengers'], model='multiplicative')  # model='mul' also works
result.plot();

 

  • seasonal_decompose์—์„œ ETS๋ถ„ํ•ด๋ฅผ ํ•  ๋•Œ ETS ๋ชจ๋ธ์—๋Š” ๋‘ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ ํ•˜๋‚˜๋Š” ๋ง์…ˆ ๋ชจ๋ธ์ด๊ณ  ํ•˜๋‚˜๋Š” ๊ณฑ์…ˆ ๋ชจ๋ธ์ด๋‹ค
    • ๋ง์…ˆ ๋ชจ๋ธ์€ ๋งค๋…„ ๋งŒ๋ช…์˜ ์Šน๊ฐ์ด ์ฆ๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์ถ”์„ธ๊ฐ€ ์„ ํ˜•์— ๋” ๊ฐ€๊น๊ณ  ๊ณ„์ ˆ์„ฑ์ด ๊ฑฐ์˜ ์–ผ์ •ํ•ด๋ณด์ผ ๋•Œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
    • ๊ณฑ์…ˆ ๋ชจ๋ธ์€ ๋งค๋…„ ์Šน๊ฐ์˜ ์ˆ˜๊ฐ€ ์ „๋…„๋„์— ๋น„ํ•ด ๋‘๋ฐฐ๋กœ ๋Š˜์–ด๋‚˜๋Š”, ์ง€์ˆ˜์  ์ฆ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ๋‚˜ ๋น„์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ ํ˜น์€ ๊ฐ์†Œํ•˜๋Š” ๊ฒฝ์šฐ์— ๋” ์ ํ•ฉํ•˜๋‹ค
    • ์•„๋ž˜ ETS ๋ถ„ํ•ด์—์„œ๋Š” model='multiplicative', ์ฆ‰ ๊ณฑ์…ˆ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ๋ง์…ˆ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด 'additive' ๋˜๋Š” 'add'๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค.
    • result์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ’๋“ค์ด ๋‹ด๊ฒจ ์žˆ์œผ๋ฉฐ trend๋กœ ์ถ”์„ธ ์š”์†Œ ๊ฐ’๋“ค์„, ๋˜๋Š” ๊ณ„์ ˆ์„ฑ ์š”์†Œ ๊ฐ’๋“ค์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋˜๋Š” resid๋กœ ์ž”์ฐจ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค

 

 

 

  • statsmodels์˜ seasonal_decompose์— ๋ถ„ํ•ดํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ๊ฐ’์„ ๋„ฃ๊ณ  ETS๋ถ„ํ•ด๋ฅผ ํ•ด๋ณด๋ฉด ์‹œ๊ฐ„์ˆœ์— ๋”ฐ๋ผ ๊ทธ๋ ค์ง„ 4๊ฐœ์˜ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์ฒซ๋ฒˆ์งธ๋Š” ์›๋ณธ ๊ทธ๋ž˜ํ”„์ด๋‹ค
  • ๋‘๋ฒˆ์งธ๋Š” ์ถ”์„ธ ๊ทธ๋ž˜ํ”„์ด๋‹ค. ์‹ค์ œ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์˜ ์ „๋ฐ˜์ ์ธ ์ƒ์Šน ๋˜๋Š” ํ•˜๊ฐ•์„ธ๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉฐ ๋น„ํ–‰๊ธฐ ์Šน๊ฐ์ˆ˜ ๋ฐ์ดํ„ฐ์˜ ๊ฒฝ์šฐ ์ „๋ฐ˜์ ์œผ๋กœ ์ƒ์Šนํ•˜๋Š” ์ถ”์„ธ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์œผ๋ฉฐ ๊ทธ๋ž˜ํ”„์˜ ๋ชจ์–‘์„ ๋ณด๊ณ  ์ด ์ถ”์„ธ๊ฐ€ ์ง€์ˆ˜ํ˜•์ธ์ง€ ์„ ํ˜•์ธ์ง€ ๋” ํ™•์‹คํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์„ธ ๋ฒˆ์งธ๋Š” ๊ณ„์ ˆ์„ฑ ๋ณ€๋™ ๊ทธ๋ž˜ํ”„์ด๋‹ค. ํ•ด๋‹น ๊ทธ๋ž˜ํ”„๋Š” ๋ฐ˜๋ณต๋˜๋Š” ๊ณ„์ ˆ์„ฑ ์š”์†Œ๋“ค์„ ์ง์„ ํ™”ํ•œ๊ฒƒ, ์ถ”์„ธ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.
  • ๋„ค ๋ฒˆ์งธ๋Š” ์ž”์ฐจ ์š”์†Œ ๊ทธ๋ž˜ํ”„์ด๋‹ค. ์ž”์ฐจ ์š”์†Œ๋Š” ์ถ”์„ธ๋‚˜ ๊ณ„์ ˆ์„ฑ์œผ๋กœ ์„ค๋ช…๋˜์ง€ ์•Š๋Š” ๊ฒƒ๋“ค์„ ์˜๋ฏธํ•œ๋‹ค. ์ถ”์„ธ๋‚˜ ๊ณ„์ ˆ์„ฑ์œผ๋กœ ์„ค๋ช…๋˜์ง€ ์•Š๋Š” ์ž”์ฐจ๋‚˜ ์˜ค์ฐจ๋“ค์ด ์ž”์ฐจํ•ญ์— ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์žก์Œ๊ณผ๋„ ๊ฐ™๋‹คํ•˜์—ฌ White Nosise๋ผ๊ณ ๋„ ํ•œ๋‹ค.
    • ์ž”์ฐจ๋Š” ๋ฐ์ดํ„ฐ์…‹์˜ ์–ด๋”” ๋ถ€๋ถ„์— ๋…ธ์ด์ฆˆ๊ฐ€ ๋งŽ์€์ง€ ์•„๋‹Œ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ธฐ๋„ ํ•œ๋‹ค
    • ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ฐ์ดํ„ฐ์…‹์˜ ์•ž๋ถ€๋ถ„์ด ์ค‘๊ฐ„๋ถ€๋ถ„๋ณด๋‹ค ์žก์Œ์ด ๋” ๋งŽ์€, ์˜ค์ฐจ๋‚˜ ์ž”์ฐจ๊ฐ€ ๋” ํฐ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค

 


 

2-2. MA - Moving-Average

 

(1) SMA - Simple Moving Average

์ผ์ • ์ฃผ๊ธฐ๋ฅผ ์ด๋™์‹œํ‚ค๋ฉด์„œ ํ‰๊ท ๊ฐ’์„ ๊ตฌํ•˜์—ฌ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์˜ ํŠน์ง•์„ ๋ถ„์„ํ•˜๋Š” ๋ฐฉ๋ฒ•, MA(Moving Averages).

์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ด์ „์— ํŒ๋‹ค์Šค์˜ rolling์„ ์ด์šฉํ•˜์—ฌ MA๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ํŒ๋‹ค์Šค์˜ rolling์„ ์ด์šฉํ•ด ์œˆ๋„์šฐ ์ฐฝ์„ ์ด๋™ํ•˜๋ฉด์„œ ํ‰๊ท ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ์„ ํ†ตํ•ด ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์˜ ์ถ”์„ธ๋ฅผ ์–ด๋А์ •๋„ ๋ณผ ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ•˜์˜€๋‹ค.

 

airline['6-month-SMA'] = airline['Thousands of Passengers'].rolling(window=6).mean()
airline['12-month-SMA'] = airline['Thousands of Passengers'].rolling(window=12).mean()

 

๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ์„ ์‚ฌ์šฉ์‹œ ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์— ๋”ฐ๋ฅธ ๊ทธ๋ž˜ํ”„ ๋น„๊ต๋ฅผ ์œ„ํ•ด 6๊ฐœ์›”, 12๊ฐœ์›”์— ๋”ฐ๋ฅธ ์ด๋™ ํ‰๊ท ๊ฐ’ ์ปฌ

๋Ÿผ์„ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋‹ค.

 

Month Thousands of
Passengers
6-month-SMA 12-month-SMA
1949-01-01 112 NaN NaN
1949-02-01 118 NaN NaN
1949-03-01 132 NaN NaN
1949-04-01 129 NaN NaN
1949-05-01 121 NaN NaN
1949-06-01 135 124.500000 NaN
1949-07-01 148 130.500000 NaN
1949-08-01 148 135.500000 NaN
1949-09-01 136 136.166667 NaN
1949-10-01 119 134.500000 NaN
1949-11-01 104 131.166667 NaN
1949-12-01 118 128.833333 126.666667
1950-01-01 115 123.333333 126.916667
1950-02-01 126 119.666667 127.583333
1950-03-01 141 120.500000 128.333333

 

 

 

  • 1000๋ช… ๋‹จ์œ„์˜ ์Šน๊ฐ ์ˆ˜ ๋ฐ์ดํ„ฐ์…‹์„ ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ํ•˜๋ฉด ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„(์œˆ๋„์šฐ ์ฐฝ)์— ๋”ฐ๋ผ ๋‹ค๋ฅด์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ์ „๋ฐ˜์ ์ธ ํŠน์ง•์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์„ 12๊ฐœ์›”๋กœ ๊ธธ๊ฒŒ ์žก๋Š”๋‹ค๋ฉด ์ „๋ฐ˜์ ์ธ ์ถ”์„ธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๊ณ  ๋ฐ˜๋Œ€๋กœ ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์ด ์งง์„ ๋•Œ๋Š” ์•„๋ž˜์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์–ด๋А์ •๋„ ๊ณ„์ ˆ์„ฑ์ด ํฌํ•จ๋œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์˜ ํŠน์ง•์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค
=> ์ด๋ ‡๊ฒŒ ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ์„ ์ด์šฉํ•ด ๋ถ„์„ํ•˜๊ณ ์ž ํ•˜๋Š” ์‹ค์ œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์„ค๋ช…ํ•˜๋Š” ์ผ๋ฐ˜์  ๋ชจ๋ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

  • ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ์˜ ๋ฌธ์ œ์ 
    • ์ „์ฒด ๋ชจ๋ธ์ด ๊ฐ™์€ ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์œผ๋กœ ์ œํ•œ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์„ 12๊ฐœ์›”์ด๋“  6๊ฐœ์›”๋กœ ์ฃผ๋“  ๊ฐ™์€ ๋ฐ์ดํ„ฐ์…‹ ๋‚ด์—์„œ๋Š” ์ด๋™ํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ๋™์ผํ•˜๋‹ค๋Š” ๊ฒƒ.
    • ๋ชจ๋“  TimeStamp์— ๋Œ€ํ•ด ๊ฐ™์€ ์ค‘์š”๋„๋ฅผ ๊ฐ€์ง„๋‹ค. ์ตœ๊ทผ์˜ ๋ฐ์ดํ„ฐ๋“ค์ด ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ณด๋‹ค ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜์˜ํ•  ํ™•๋ฅ ์ด ๋†’์œผ๋ฏ€๋กœ ์ตœ์‹  ๋ฐ์ดํ„ฐ์—๊ฒŒ ์ข€ ๋” ๋†’์€ ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋ณด๋‹ค ๋” ์ •ํ™•ํ•œ ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋‹ค. 
    • ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ์˜ ํ•œ๊ณ„์ ์œผ๋กœ ์งง์€ ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์„ ์ด์šฉํ•˜๋ฉด (์œˆ๋„์šฐ ์ฐฝ์ด ์ž‘์•„์ง€๋ฉด) ์ ์šฉํ•œ ๋ฐ์ดํ„ฐ์…‹์— ๋„ˆ๋ฌด fitํ•˜๊ฒŒ ๋˜์–ด ์‹ ํ˜ธ๋ณด๋‹ค ์žก์Œ์ด ๋” ์ปค์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์กด์žฌํ•œ๋‹ค.
    • ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์ด ์งง์•„์งˆ์ˆ˜๋ก ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ, ์ ์šฉํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋” ์ž˜ ์„ค๋ช…ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ๊ทธ์— ๋น„๋ก€ํ•˜์—ฌ ์žก์Œ์˜ ํฌ๊ธฐ(์˜ค์ฐจ)๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜๋ฏ€๋กœ ์ ์ ˆํ•œ ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์„ ์ฐพ๋Š”๊ฒƒ์€ ๊ต‰์žฅํžˆ ์–ด๋ ต๋‹ค. 
    • ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ์„ ํ•˜๊ฒŒ๋˜๋ฉด ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„๋งŒํผ์˜ ์‹œ์ฐจ๊ฐ€ ์ƒ๊ธด๋‹ค.
    • ํ‰๊ท ๊ฐ’์„ ๊ตฌํ•จ์œผ๋กœ์จ ์›๋ž˜ ๋ฐ์ดํ„ฐ์…‹์˜ ๊ทน๋Œ€, ๊ทน์†Œ๊ฐ’์—๋„ ๋ชป ๋ฏธ์นœ๋‹ค๋Š” ๋‹จ์ ๋„ ์กด์žฌํ•œ๋‹ค. ์ด ์ ์€ ๊ทธ๋ž˜ํ”„์—์„œ ๊ทน์†Œ ๊ทน๋Œ€๊ฐ’์— ๋ชป๋ฏธ์น˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์ง€๋‚˜์น˜๊ฒŒ ๋†’๊ฑฐ๋‚˜ ๋‚ฎ์€ ์ด์ƒ์น˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์™œ๊ณก๋œ ์ถ”์„ธ๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค. 
    • ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ์€ ์ ์šฉํ•œ ๋ฐ์ดํ„ฐ์˜ ์ผ๋ฐ˜์  ์ถ”์„ธ๋งŒ ๋‚˜ํƒ€๋‚ผ๋ฟ ์‹ค์ œ๋กœ ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์— ๋Œ€ํ•œ ๋ถ„์„๋งŒ ํ•  ๋ฟ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ์ ๋“ค์„ ๋ณด์™„ํ•˜๊ณ ์ž ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท , EWMA๊ฐ€ ๋‚˜์˜ค๊ฒŒ๋˜์—ˆ๋‹ค. 

 

 


 

(2) EWMA - Exponentially Weighted Moving Average

 

  • ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ์˜ ํ•œ๊ณ„์ , ๋ฌธ์ œ์ 
    • ์ž‘์€ ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์ด ๋” ํฐ ์žก์Œ์„ ์œ ๋ฐœ
    • ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์— ๋ฌด๊ด€ํ•˜๊ฒŒ ์‹œ์ฐจ๊ฐ€ ์กด์žฌ
    • ํ‰๊ท ์œผ๋กœ ์ธํ•ด ๊ทน๋Œ€-๊ทน์†Œ๊ฐ’์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•จ
    • ๋ฏธ๋ž˜ ์–‘์ƒ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ฃผ์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ „๋ฐ˜์  ์ถ”์„ธ๋งŒ ๋ณด์—ฌ์คŒ
  • ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท , EWMA๋Š” ์ตœ๊ทผ ๊ฐ’๋“ค์— ๊ฐ€์ค‘์น˜๋ฅผ ์ ์šฉํ•˜์—ฌ - ์ตœ๊ทผ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ์— ๊ณผ๊ฑฐ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ณด๋‹ค ๋” ํฐ ๊ฐ€์ค‘์น˜๋ฅผ ์คŒ์œผ๋กœ์จ ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ์—์„œ์˜ ์‹œ์ฐจ ํšจ๊ณผ๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
  • ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท ์˜ ์ธ์ž๋“ค
    • span : N์ผ ์ด๋™ ํ‰๊ท . N์ผ ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท ์„ ํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด span์ธ์ž๋ฅผ ํ†ตํ•ด ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์„ ์ •ํ•ด์ฃผ๋ฉด ์›ํ•˜๋Š” ๊ธฐ๊ฐ„๋งŒํผ ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท ์„ ํ•  ์ˆ˜ ์žˆ์Œ
    • com (center of mass) : C=(1-s)/2, span๊ณผ ์—ญ๊ด€๊ณ„.
    • halfilfe : ๋ฐ˜๊ฐ๊ธฐ. ์ง€์ˆ˜์  ๊ฐ€์ค‘์น˜๊ฐ€ ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“œ๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ๊ธฐ๊ฐ„
    • => ์‚ฌ์‹ค ์ˆ˜ํ•™์ ์ธ ์„ค๋ช…์—๋Š” ์ดํ•ด๊ฐ€ ๋งŽ์ด ๋ถ€์กฑํ•จ. ๊ทธ๋Ÿฌ๋‹ˆ ๊ฐ€์žฅ ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด span ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์œ„์ฃผ๋กœ ๋‹ค๋ฃฐ๊ฑฐ์ž„.
airline['EWMA12'] = airline['Thousands of Passengers'].ewm(span=12,adjust=False).mean()
airline[['Thousands of Passengers','EWMA12','12-month-SMA']].plot(figsize=(12,8)).autoscale(axis='x',tight=True);

 

< SMA์™€ EWMA ๊ทธ๋ž˜ํ”„ ๋น„๊ต >

 

  • SMA๋Š” rolling์„ ์ด์šฉํ•ด 1๋…„ ๋‹จ์œ„๋กœ ๊ตฌํ•œ ๊ฐ’์œผ๋กœ ๊ณ„์ ˆ์„ฑ์ด ๊ฑฐ์˜ ๋ฐ˜์˜๋˜์ง€ ์•Š๊ณ  ์žˆ๋‹ค.
  • EWMA๋ฅผ ์ ์šฉํ•˜์—ฌ ๊ทธ๋ฆฐ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด ์‹œ์ž‘๋ถ€๋ถ„๊ณผ ๋๋ถ€๋ถ„์˜ ์ฐจ์ด๊ฐ€ ๋‘๋“œ๋Ÿฌ์ง€๋Š”๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค
  • ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ดˆ๋ฐ˜ ๋ถ€๋ถ„์—์„œ๋Š” ์ฃผ๊ธฐ์˜ ํญ์ด ์ž‘๋‹ค๊ฐ€ ๊ฐˆ์ˆ˜๋ก ๋„“์–ด์ง€๋Š”๋ฐ ์ด๋Ÿฌํ•œ ํŠน์ง•์„ EWMA์—์„œ ์ž˜ ๋ฐ˜์˜ํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•œ๋งˆ๋””๋กœ ๊ณ„์ ˆ์„ฑ ์ถ”์„ธ๊ฐ€ ์‹œ์ž‘๋ถ€๋ถ„์—์„œ ๋ ๋ถ€๋ถ„์œผ๋กœ ๊ฐˆ์ˆ˜๋ก ๋” ์ž˜ ๋ณด์ธ๋‹ค.
  • .ewm(span=12)๋กœ 1๋…„์— ํ•ด๋‹นํ•˜๋Š” 12๊ฐœ์›” ์ง€์ˆ˜ ๊ฐ€๋™ ์ด๋™ ํ‰๊ท ์œผ๋กœ ๊ฐ’์„ ๊ตฌํ•ด์„œ ์ด๋™ ํ‰๊ท  ๊ธฐ๊ฐ„์ด 12๊ฐœ์›”์ธ ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ๊ณผ ๋น„๊ต๋ฅผ ํ•ด๋ณด๋ฉด ๊ณ„์ ˆ์„ฑ์˜ ๋ฐ˜์˜ ์ฐจ์ด๊ฐ€ ํผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 


 

2-3. Holt-Winters-Methods

  • ์ด์ „์—๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•˜๋‚˜์˜ ํ‰ํ™œ์ธ์ž, ์•ŒํŒŒ๊ฐ’์„ ์ด์šฉํ•ด ์ง€์ˆ˜ ํ‰ํ™œ์„ ํ•˜๋Š” ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท , EWMA์— ๋Œ€ํ•ด ๋ฐฐ์› ๋‹ค
  • ํ•˜์ง€๋งŒ EWMA๋Š” ๊ณ„์ ˆ์„ฑ์ด ๋ฐ˜์˜๋˜๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์–ด๋””๊นŒ์ง€๋‚˜ SMA์— ๋น„ํ•ด์„œ ๋น„๊ต์  ๋ฐ˜์˜๋  ๋ฟ ๊ณ„์ ˆ์„ฑ๊ณผ ์ „๋ฐ˜์  ์ถ”์„ธ๋ฅผ ์ œ๋Œ€๋กœ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ•œ๋‹ค. ์ง€์ˆ˜ ํ‰ํ™œ์„ ํ•  ๋•Œ ํ•˜๋‚˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋–„๋ฌธ์ด๋‹ค
  • ํ™€ํŠธ-์œˆํ„ฐ์Šค ๊ณ„์ ˆ์„ฑ ๊ธฐ๋ฒ•์€ ์˜ˆ์ธก์‹์— ๋”ํ•ด ์„ธ ๊ฐœ์˜ ํ‰ํ™œ์‹์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค
    • ์ฒซ ๋ฒˆ์งธ๋Š” ์ˆ˜์ค€์œผ๋กœ lt๋ฅผ ์‚ฌ์šฉ, ํ‰ํ™œ ๋งค๊ฐœ ๋ณ€์ˆ˜ ์•ŒํŒŒ์™€ ๋Œ€์‘
    • ๋‘ ๋ฒˆ์งธ๋Š” ์ถ”์„ธ์š”์†Œ๋กœ bt๋ฅผ ์“ฐ๊ณ , ํ‰ํ™œ ๋งค๊ฐœ ๋ณ€์ˆ˜ ๋ฒ ํƒ€์™€ ๋Œ€์‘
    • ์„ธ ๋ฒˆ์งธ๋Š” ๊ณ„์ ˆ์„ฑ ์š”์†Œ๋กœ st๋ฅผ ์”€, ํ‰ํ™œ ๋งค๊ฐœ ๋ณ€์ˆ˜ ๊ฐ๋งˆ์™€ ๋Œ€์‘
    • ์—ฌ๊ธฐ์„œ lt, bt, st๋‚˜ ํ‰ํ™œ ๋งค๊ฐœ ๋ณ€์ˆ˜ ์•ŒํŒŒ ๋ฒ ํƒ€, ๊ฐ๋งˆ์™€ ๊ฐ™์€ ์–ด๋ ค์šด ๋‹จ์–ด๋“ค์ด ์žˆ์ง€๋งŒ ์•ž์—์„œ ์ด์•ผ๊ธฐํ•œ ์ถ”์„ธ์™€ ๊ณ„์ ˆ์„ฑ ์š”์†Œ๊ฐ€ ๋ฐ˜์˜๋˜๋А๋ƒ์— ๋”ฐ๋ผ ๋‹จ์ผ, ์ด์ค‘, ์‚ผ์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ• 3๊ฐ€์ง€๋กœ ๋‚˜๋ˆ ์ง„๋‹ค๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์ดํ•ดํ•ด๋„ ์ถฉ๋ถ„ํ•˜๋‹ค
  • ์ด ๋ฐฉ๋ฒ•์€ ๊ณ„์ ˆ์„ฑ ์š”์†Œ์˜ ์„ฑ์งˆ์— ๋”ฐ๋ผ ๋‘๊ฐ€์ง€๋กœ ๋ฐ”๋€๋‹ค. ์•ž์—์„œ ETS ๋ถ„ํ•ด์—์„œ ๋ง์…ˆ ๊ธฐ๋ฒ•๊ณผ ๊ณฑ์…ˆ ๊ธฐ๋ฒ• ๋‘๊ฐ€์ง€๊ฐ€ ์‚ฌ์šฉ๋œ ๊ฒƒ์„ ๊ธฐ์–ตํ•˜๋ฉด ๋œ๋‹ค. ๊ณ„์ ˆ์„ฑ ์š”์†Œ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ
    • ์ฒซ ๋ฒˆ์งธ๋Š” ๋ง์…ˆ ๊ธฐ๋ฒ•. ๊ณ„์ ˆ์„ฑ ์š”์†Œ๊ฐ€ ์ „์ฒด ๋ฐ์ดํ„ฐ์—์„œ ์ผ์ •ํ•œ ํญ์œผ๋กœ ๋‚˜ํƒ€๋‚  ๋•Œ ์ด์šฉ (ETS์—์„œ๋Š” ์„ ํ˜•์ ์ผ๋•Œ)
    • ๋‘ ๋ฒˆ์งธ๋Š” ๊ณฑ์…ˆ ๊ธฐ๋ฒ•. ๊ณ„์ ˆ์  ๋ณ€๋™ํญ์ด ๋ฐ์ดํ„ฐ์˜ ์ˆ˜์ค€์— ๋น„๋ก€ํ•ด ๋‚˜ํƒ€๋‚  ๋•Œ ์‚ฌ์šฉ๋จ. (ETS์—์„œ๋Š” ์ง€์ˆ˜์ ์ผ๋•Œ)

 


 

(1) Simple Exponential Smoothing

  • ๋‹จ์ผ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•. SimpleExpSmoothing์ด ์žˆ๊ณ  ๋˜ ์ด์ „์— ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท ๋ฒ•๊ณผ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ™๋‹ค๊ณ  ์ดํ•ดํ•˜๋ฉด ๋œ๋‹ค. ์‹ค์ œ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด๋ฉด ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท , EWMA๊ณผ ๊ฑฐ์˜ ํก์‚ฌํ•˜๊ฒŒ ๊ทธ๋ ค์ง„๋‹ค.
  • ์ด ์‹์—์„œ ์ถ”์„ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒˆ๋กœ์šด ํ‰ํ™œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฒ ํƒ€๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•(ํ™€ํŠธ ๊ธฐ๋ฒ•)์œผ๋กœ ์ „๊ฐœํ•œ๋‹ค.
  • ์ง€๊ธˆ์€ ๋‹จ์ˆœ ์ด๋™ ํ‰๊ท ๋ฒ•์œผ๋กœ ๋ชจ๋ธ์ด ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์‹œ๊ณ„์—ด ์š”์†Œ๋“ค์ด ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€๋ ์ˆ˜๋ก ๋ชจ๋ธ์˜ ๋ณต์žก๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ„๋‹ค
from statsmodels.tsa.holtwinters import SimpleExpSmoothing

span = 12
alpha = 2/(span+1)
# ์™œ span์ด 1๋ณด๋‹ค ๊ฐ™๊ฑฐ๋‚˜ ์ปค์•ผํ•˜๊ณ  ์•ŒํŒŒ ๊ฐ’์ด 2/(span+1)์ธ์ง€๋Š” ์ด์ „ ๊ฐ•์˜ ์ฐธ๊ณ .

df['EWMA12'] = df['Thousands of Passengers'].ewm(alpha=alpha,adjust=False).mean()
df['SES12']=SimpleExpSmoothing(df['Thousands of Passengers']).fit(smoothing_level=alpha,optimized=False).fittedvalues.shift(-1)
# optimized=False๋กœ ์„ค์ •ํ•˜๋ฉด fitted_model ๊ฒฐ๊ณผ๊ฐ’์ด ํ•œ์นธ์”ฉ ์•„๋ž˜๋กœ ๋ฐ€๋ ค์„œ shitf(-1) ํ•ด์คŒ

 

 

์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท ๊ณผ ๋‹จ์ผ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•, ์ด์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•, ์›๋ณธ ๊ทธ๋ž˜

 

 

SimpleExpSmoothing์€ SES12๋กœ, ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท ์€ EWMA12๋กœ ๋‘˜์ด ๊ฑฐ์˜ ์™„์ „ํžˆ ๊ฒน์ณ ๋ณด์ด๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 


(2) Double Exponential Smoothing

  • ํ™€ํŠธ ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ์ด์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ์‹์œผ๋กœ ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท (EWNA)์—์„œ ์•ŒํŒŒ ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ์ˆ˜์ค€ ์š”์†Œ์— ์ถ”์„ธ ์š”์†Œ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฒ ํƒ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค(trend)
    • ์ˆ˜์ค€ ์š”์†Œ๋งŒ ์‚ฌ์šฉํ•˜๋ฉด Simple Exponential Smoothing
    • ์ˆ˜์ค€ + ์ถ”์„ธ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Double Exponential Smoothing
  • ํ™€ํŠธ ๊ธฐ๋ฒ•์€ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์งˆ์ ์ธ ๊ฐ’์ธ ์ˆ˜์ค€ ์š”์†Œ์™€ ์ถ”์„ธ ๋‘๊ฐ€์ง€๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค.
  • ์ด์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ”์—์„œ ์ถ”์„ธ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ์šธ์–ด์ง„ ์ง์„  ๋ชจ์–‘์˜ ์ถ”์„ธ(์„ ํ˜•์ )๋ฅผ ๋ณด์—ฌ์ค€๋‹ค๋ฉด ๋ง์…ˆ ๋ชจํ˜•(add)๋ฅผ, ์ง€์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ณก์„ ํ˜• ์ถ”์„ธ๋ฅผ ๋ณด์ธ๋‹ค๋ฉด ๊ณฑ์…ˆ ๋ชจํ˜•(mul)์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

from statsmodels.tsa.holtwinters import ExponentialSmoothing

df['DESadd12'] = ExponentialSmoothing(df['Thousands of Passengers'], trend='add').fit().fittedvalues.shift(-1)
df[['Thousands of Passengers','EWMA12','DESadd12']].iloc[:24].plot(figsize=(12,6)).autoscale(axis='x',tight=True);

 

 

1949-1950๋…„ ๊ทธ๋ž˜ํ”„ (์ขŒ)  /  1959-1960๋…„ ๊ทธ๋ž˜ํ”„ (์šฐ)

  • 1949-1950๋…„์€ ๋ฐ์ดํ„ฐ์…‹์˜ ๋งจ ์ฒ˜์Œ 2๋…„ ๋ฐ์ดํ„ฐ์ด๊ณ  1959-1960๋…„์€ ๋ฐ์ดํ„ฐ์…‹์˜ ๋งจ ๋์—์„œ 2๋…„๊ฐ„์˜ ๋ฐ์ดํ„ฐ์ด๋‹ค.
  • ๋‹จ์ผ ์ง€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ง€์ˆ˜ ๊ฐ€์ค‘ ์ด๋™ ํ‰๊ท (EWMA)๊ณผ ์ด์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•(DES; Double Exponential Smoothing ) ๊ทธ๋ž˜ํ”„๋ฅผ ๋น„๊ตํ•˜์˜€์„ ๋•Œ ์ถ”์„ธ๋ผ๋Š” ํ•ญ์ด ์ถ”๊ฐ€๋˜์—ˆ์„ ๋•Œ ๋‹จ์ผ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•์˜ ๊ณก์„ ๋ณด๋‹ค ์›๋ณธ์— ํ›จ์”ฌ ๋” ์ž˜ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค

 

์ด์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ• ๋ง์…ˆ ๋ชจ๋ธ๊ณผ ๊ณฑ์…ˆ ๋ชจ๋ธ ๋น„๊ต.

 

  • ๋ฐ์ดํ„ฐ์˜ ์ถ”์„ธ๊ฐ€ ์„ ํ˜•์ ์ธ์ง€(๋ง์…ˆ๋ชจ๋ธ) ์ง€์ˆ˜์ ์ธ์ง€(๊ณฑ์…ˆ๋ชจ๋ธ) ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ธ์œผ๋‚˜ ์ „์ฒด์ ์œผ๋กœ ๋ดค์„ ๋• ๋‘˜ ๋‹ค ์˜ˆ์ธก์„ ์ž˜ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. ์ด๋Ÿด ๋• ์ผ๋ถ€๋ฅผ ์ž˜๋ผ์„œ ํ™•๋Œ€ํ•ด์„œ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ข‹๋‹ค
  • ์ด๋ ‡๊ฒŒ ์•ž์—์„œ 2๋…„ ๋‹จ์œ„๋กœ ์งค๋ผ์„œ ํ™•๋Œ€ํ•ด๋ดค์„ ๋•Œ ๊ณฑ์…ˆ ๋ชจํ˜•์ด ๋ง์…ˆ ๋ชจํ˜•์— ๋น„ํ•ด ๋” ์ž˜ ๋งž๋Š”๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค

(3) Triple Exponential Smoothing

  • ์‚ผ์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•์—์„œ๋Š” ์ถ”์„ธ ๋ฟ ์•„๋‹ˆ๋ผ ๊ณ„์ ˆ์„ฑ ์š”์†Œ๊นŒ์ง€ ๋ฐ˜์˜ํ•˜๊ธฐ์— seasonal๋ผ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ถ”์„ธ ์š”์†Œ๊ฐ€ ์„ ํ˜•์ , ์ง€์ˆ˜์  ์ฆ๊ฐ€์ธ์ง€์— ๋”ํ•ด ๊ณ„์ ˆ์„ฑ ์š”์†Œ๊ฐ€ ์‹œ๊ฐ„์˜ ์ง€๋‚จ์— ๋”ฐ๋ผ ์„ ํ˜•์ ์ธ์ง€ ํ˜น์€ ๋ณ€ํ™”ํ•˜๋Š”์ง€ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค
  • ์›์‹œ ๋ฐ์ดํ„ฐ๋งŒ์œผ๋กœ๋Š” ๋ง์…ˆ ๋ชจ๋ธ๊ณผ ๊ณฑ์…ˆ ๋ชจ๋ธ ์ค‘ ์–ด๋–ค ๊ฒƒ์ด ๋” ์ ํ•ฉํ•  ์ง€ ์•Œ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ฆฐ๋’ค์— ๋น„๊ตํ•˜์—ฌ ๋” ์ž˜ ์˜ˆ์ธกํ•˜๋Š” ๋ชจ๋ธ๋กœ ์„ ํƒํ•œ๋‹ค.
df['TESadd12'] = ExponentialSmoothing(df['Thousands of Passengers'],trend='add',seasonal='add',seasonal_periods=12).fit().fittedvalues
# ์ด์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•๊ณผ ๋‹ฌ๋ฆฌ seasonal, seasonal_periods๋ผ๋Š” ์ถ”๊ฐ€์ธ์ž๊ฐ€ ์žˆ์–ด์„œ shfit(-1)์„ ํ•˜์ง€ ์•Š์•„๋„ ๋จ
df['TESmul12'] = ExponentialSmoothing(df['Thousands of Passengers'],trend='mul',seasonal='mul',seasonal_periods=12).fit().fittedvalues
df[['Thousands of Passengers','TESadd12','TESmul12']].plot(figsize=(12,6)).autoscale(axis='x',tight=True);

 

 

์‚ผ์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ• ๊ณฑ์…ˆ ๋ชจ๋ธ๊ณผ ๋ง์…ˆ ๋ชจ๋ธ ๋น„๊ต

 

์ „์ฒด์ ์œผ๋กœ ๋ณด๊ธฐ์—” ์‚ผ์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ•์— ๊ณฑ์…ˆ, ๋ง์…ˆ ๋ชจ๋ธ ๋ชจ๋‘ ์ž˜ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. ์ด๋Ÿด ๋• ๊ณ„์ ˆ์„ฑ์˜ ํŒจํ„ด์— ๋”ฐ๋ผ ์ผ์ • ์ฃผ๊ธฐ๋กœ, ์ผ์ • ์›”์ด๋‚˜ ์—ฐ๋‹จ์œ„๋กœ ๋Š์–ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ํ™•๋Œ€ํ•ด๋ณด๋ฉด ๋” ์ •ํ™•ํžˆ ๋น„๊ตํ•  ์ˆ˜ ์žˆ

 

df[['Thousands of Passengers','TESadd12','TESmul12']].iloc[:24].plot(figsize=(12,6)).autoscale(axis='x',tight=True);

 

 

1949-1950๋…„ ์‚ผ์ค‘ ์ง€์ˆ˜ ํ‰ํ™œ๋ฒ• ๊ณฑ์…ˆ ๋ชจ๋ธ๊ณผ ๋ง์…ˆ ๋ชจ๋ธ ๋น„๊ต

 

ํ™•๋Œ€ํ•ด์„œ ๋น„๊ต์‹œ ๊ณฑ์…ˆ ๋ชจ๋ธ์ด ๋” ์ž˜ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์‚ฌ์šฉํ•  ๋ชจ๋ธ๋กœ ๊ณฑ์…ˆ ๋ชจ๋ธ์„ ์„ ํƒํ•˜๋ฉด ๋œ๋‹ค. 

 


 

์ง€๊ธˆ๊นŒ์ง€ ETS๋ถ„ํ•ด๋ฅผ ํ†ตํ•ด ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ 3๊ฐ€์ง€ ์š”์†Œ๋กœ ๋ถ„ํ•ดํ•˜๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์ด๋™ ํ‰๊ท  ๋ชจ๋ธ(MA)์™€ ํ™€ํŠธ-์œˆํ„ฐ์Šค ๊ธฐ๋ฒ•์— ์‹œ๊ณ„์—ด ์š”์†Œ๋“ค์„ ๋ฐ˜์˜ํ•˜์—ฌ ์–ด๋–ป๊ฒŒ ์‹œ๊ณ„์—ด ์˜ˆ์ธก์„ ์ง„ํ–‰ํ•˜๋Š”์ง€ ๋ฐฐ์› ๋‹ค. ๋‹ค์Œ์œผ๋กœ๋Š” ์‹œ๊ณ„์—ด ์˜ˆ์ธก์˜ ๋Œ€ํ‘œ์ ์ธ ํ†ต๊ณ„ ๋ชจ๋ธ ARIMA์™€ ์—ฌ๋Ÿฌ ์‹œ๊ณ„์—ด ์˜ˆ์ธก ๋ชจ๋ธ๊ณผ ๋ฐ์ดํ„ฐ ํŒ๋ณ„๋ฒ• ๋ฐ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•, ๋ชจ๋ธ ์˜ˆ์ธก ๋ฐฉ๋ฒ•๋“ค์„ ์ง„ํ–‰ํ•ด๋ณผ ๊ฒƒ์ด๋‹ค. 

 

 

 


์—ฌ๋‹ด์œผ๋กœ ์ด์ „์— ๋ฏธ๊ตญ์—์„œ ํŒจ์…˜ ๊ด€๋ จ ์‹œ๊ณ„์—ด ๋ฐ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋กœ forecasting์„ ํ•˜์‹œ๋Š” ๋ฐ์ดํ„ฐ์‚ฌ์ด์–ธํ‹ฐ์ŠคํŠธ๋ถ„๊ณผ ์ปคํ”ผ์ฑ—์„ ๋‚˜๋ˆ„์—ˆ๋Š”๋ฐ ํ˜„์—…์—์„œ ์‹œ๊ณ„์—ด ์˜ˆ์ธก์— ์ฃผ๋กœ ์–ด๋–ค ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€ ์—ฌ์ญค๋ดค๋”๋‹ˆ XGBoost์™€ ๊ฐ™์€ ํŠธ๋ฆฌ๊ณ„์—ด์˜ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ์ฃผ๋กœ ์“ด๋‹ค๊ณ  ํ•˜์…จ๊ณ  ๊ทธ๋Ÿผ ARIMA์™€ ๊ฐ™์€ ๋ชจ๋ธ์€ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๊ฐ€ ์—ฌ์ญค๋ดค๋”๋‹ˆ Timestamp์™€ ๋ฐ์ดํ„ฐ๋งŒ ์กด์žฌํ•˜๋Š” ๋‹จ๋ณ€๋Ÿ‰ ๋ฐ์ดํ„ฐ์ผ ๊ฒฝ์šฐ ์–ด์ฉ” ์ˆ˜ ์—†์ด ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•˜์‹ ๋‹ค. ํ”ผ์ณ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์˜ˆ์ธก์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋“ค์ด ๋งŽ์•„์ง€๋ฏ€๋กœ ํ”ผ์ณ๊ฐ€ ๋งŽ๋‹ค๋ฉด ํŠธ๋ฆฌ๊ณ„์—ด ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด๋‚˜ ๋”ฅ๋Ÿฌ๋‹์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ๋ง์”€ํ•˜์…จ๋‹ค.
์ฃผ์‹์ด๋‚˜ ๊ธˆ์œต ๊ด€๋ จ ๋„๋ฉ”์ธ์—์„œ๋Š” ARIMA์™€ ๊ฐ™์€ ์ „ํ†ต ํ†ต๊ณ„ ๋ชจ๋ธ์„ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š”๋ฐ ์‹œ๊ณ„์—ด ์˜ˆ์ธก ๊ฐ•์˜๋ฅผ ๋ณด๋Š” ๋‚ด ๋ชฉ์ ์€ ํ˜„์—…์—์„œ ์ „๋ ฅ์†Œ๋น„๋Ÿ‰์„ ์˜ˆ์ธกํ•˜๋Š” ํƒœ์Šคํฌ์— ์ ์šฉํ•˜๊ณ ์žํ•จ์ด๋‹ค.
์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ์—ฌ๊ธฐ์—์„œ ๋ฐฐ์šด ๋‚ด์šฉ์ด ํ™•์žฅ๋˜์–ด ์‹œ๊ณ„์—ด ์˜ˆ์ธก์— ์‚ฌ์šฉ๋  ๊ฒƒ์ด๋‹ค. ์‹ค์ œ ์—…๋ฌด์—์„œ๋Š” LSTM๊ณผ ๊ฐ™์€ ๋”ฅ๋Ÿฌ๋‹๊ณผ ํŠธ๋ฆฌ ๊ณ„์—ด ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ ์œ„์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ฒ ์ง€๋งŒ ๊ธฐ์ดˆ๋Š” ๊ผญ ํ•œ๋ฒˆ ์ž˜ ๋‹ค์ง€๊ณ  ๋„˜์–ด๊ฐ€์ž.