๐Ÿ” ๋ฐ์ดํ„ฐ ๋ถ„์„/04. Data Analysis

[ํ†ต๊ณ„์  ๋ชจ๋ธ๋ง] ์‹œ๊ณ„์—ด ๋ถ„์„ - ์˜ˆ์ธก

xod22 2022. 3. 21. 11:01
728x90

2022.03.18 - [๋ฐ์ดํ„ฐ ๋ถ„์„/04. Data Analysis] - [ํ†ต๊ณ„์  ๋ชจ๋ธ๋ง] ์‹œ๊ณ„์—ด ๋ถ„์„์™€ ๋ถ„ํ•ด

 

[ํ†ต๊ณ„์  ๋ชจ๋ธ๋ง] ์‹œ๊ณ„์—ด ๋ถ„์„

ํ•ญ์ƒ ์‹œ๊ณ„์—ด ๋ถ„์„์€ ์–ด๋ ต๊ณ  ๋ณต์žกํ•˜๋‹ค๋Š” ์ƒ๊ฐ์— ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ดํ•ดํ•˜๋ฉด์„œ ์ž‘์„ฑํ•˜๊ธฐ ํž˜๋“ค์—ˆ๋Š”๋ฐ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„๋ณด๋ฉด์„œ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ž€ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋Š” ์ผ์ •ํ•œ ์‹œ๊ฐ„

xod22.tistory.com

2022.03.19 - [๋ฐ์ดํ„ฐ ๋ถ„์„/04. Data Analysis] - [ํ†ต๊ณ„์  ๋ชจ๋ธ๋ง] ์‹œ๊ณ„์—ด ๋ถ„์„ - ์ •์ƒ์„ฑ(stationary)๊ณผ ์ฐจ๋ถ„

 

[ํ†ต๊ณ„์  ๋ชจ๋ธ๋ง] ์‹œ๊ณ„์—ด ๋ถ„์„ - ์ •์ƒ์„ฑ(stationary)๊ณผ ์ฐจ๋ถ„

2022.03.18 - [๋ฐ์ดํ„ฐ ๋ถ„์„/04. Data Analysis] - [ํ†ต๊ณ„์  ๋ชจ๋ธ๋ง] ์‹œ๊ณ„์—ด ๋ถ„์„ [ํ†ต๊ณ„์  ๋ชจ๋ธ๋ง] ์‹œ๊ณ„์—ด ๋ถ„์„ ํ•ญ์ƒ ์‹œ๊ณ„์—ด ๋ถ„์„์€ ์–ด๋ ต๊ณ  ๋ณต์žกํ•˜๋‹ค๋Š” ์ƒ๊ฐ์— ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ดํ•ดํ•˜๋ฉด์„œ ์ž‘์„ฑํ•˜๊ธฐ ํž˜๋“ค์—ˆ

xod22.tistory.com

์•ž์˜ ํฌ์ŠคํŒ…์—์„œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ดํŽด๋ณด์•˜๋‹ค๋ฉด ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์˜ˆ์ธกํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

 

์‹œ๊ณ„์—ด ์˜ˆ์ธก

 

์‹œ๊ณ„์—ด์„ ์˜ˆ์ธกํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ชจ๋ธ์ด ์žˆ์Œ
- AR : ์ž๊ธฐํšŒ๊ท€(์ถ”์„ธ ๋ฐ ๊ณ„์ ˆ์„ฑ๋ถ„ ์ œ์™ธ)
- MA : ์ด๋™ํ‰๊ท (์ถ”์„ธ ๋ฐ ๊ณ„์ ˆ์„ฑ๋ถ„ ์ œ์™ธ)
- ARMA : ์ž๊ธฐํšŒ๊ท€ ์ด๋™ํ‰๊ท (์ถ”์„ธ ๋ฐ ๊ณ„์ ˆ ์„ฑ๋ถ„ ์ œ์™ธ)
- ARIMA

- SARIMA

- ์ง€์ˆ˜ํ‰ํ™œ๋ฒ•

 

์‹ค์Šต

a10.csv
0.00MB
a10forecast.csv
0.00MB

~ํŒจํ‚ค์ง€ ์ž„ํฌํŠธ ๋ฐ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ~

import pandas as pd
forecast=pd.io.parsers.read_csv("a10forecast.csv")
original=pd.io.parsers.read_csv("a10.csv")

=> ๋ฐ‘์˜ ๋ชจํ˜•๊ตฌ์ถ•์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ž‘์„ฑํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!

 

 

 

- AR๋ชจํ˜•

1. ๋ชจ๋ธ fit

from statsmodels.tsa.ar_model import AutoReg
model=AutoReg(forecast['value'], lags=10)
model_fit=model.fit()

 

2. plot

import matplotlib.pyplot as plt

model_forecast=model_fit.predict(len(forecast), len(original)-1)
plt.figure(figsize=(6,6))
plt.plot(model_forecast, label="Forecast")
plt.plot(original.value[-18:], label="Actual")
plt.legend()

 

 

 

-MA ๋ชจํ˜•

1. ๋ชจ๋ธ fit

from statsmodels.tsa.arima.model import ARIMA
model=ARIMA(forecast['value'], order=(0,0,2))
model_fit=model.fit()

 

2. plot

-> ์œ„์˜ plot ์ฝ”๋“œ์™€ ๋™์ผ

 

 

 

-ARMA

: ARMA is combination of ARM and MA

 

1. ๋ชจ๋ธ fit

from statsmodels.tsa.arima.model import ARIMA
model=ARIMA(forecast['value'], order=(10,0,2))
model_fit=model.fit()

 

2. plot

 

 

 

-ARIMA

1. ๋ชจ๋ธ fit

from statsmodels.tsa.arima.model import ARIMA
model=ARIMA(forecast['value'], order=(10,2,2))
model_fit=model.fit()

 

2. plot

 

 

-SARIMA

1. ๋ชจ๋ธ fit

from statsmodels.tsa.statespace.sarimax import SARIMAX
model=SARIMAX(forecast['value'], order=(10,2,2), seasonal_order=(1,1,0,12))
#season๊ด€๋ จ ํŒŒ๋ผ๋ฏธํ„ฐ ์ƒ๊น€
model_fit=model.fit()

 

2. plot

=>์ž˜ ์˜ˆ์ธกํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

 

 

-์ง€์ˆ˜ํ‰ํ™œ๋ฒ•

: ๋„ˆ๋ฌด ๋จผ ๊ฐ€์ค‘์น˜๋Š” ๊ณ ๋ คํ•˜์ง€ ์•Š๊ฒ ๋‹ค!

 

1. ๋ชจ๋ธ fit

from statsmodels.tsa.holtwinters import ExponentialSmoothing
model=ExponentialSmoothing(forecast['value'], seasonal_periods=12, trend='add', seasonal='add')
model_fit=model.fit()

 

2. plot

728x90