[ํต๊ณ์ ๋ชจ๋ธ๋ง] ์๊ณ์ด ๋ถ์ - ์์ธก
2022.03.18 - [๋ฐ์ดํฐ ๋ถ์/04. Data Analysis] - [ํต๊ณ์ ๋ชจ๋ธ๋ง] ์๊ณ์ด ๋ถ์์ ๋ถํด
[ํต๊ณ์ ๋ชจ๋ธ๋ง] ์๊ณ์ด ๋ถ์
ํญ์ ์๊ณ์ด ๋ถ์์ ์ด๋ ต๊ณ ๋ณต์กํ๋ค๋ ์๊ฐ์ ์ฝ๋๋ฅผ ํ๋ํ๋ ์ดํดํ๋ฉด์ ์์ฑํ๊ธฐ ํ๋ค์๋๋ฐ ํ๋ํ๋ ์ฐพ์๋ณด๋ฉด์ ๊ณต๋ถ๋ฅผ ํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ์๊ณ์ด ๋ฐ์ดํฐ๋ ์๊ณ์ด ๋ฐ์ดํฐ๋ ์ผ์ ํ ์๊ฐ
xod22.tistory.com
[ํต๊ณ์ ๋ชจ๋ธ๋ง] ์๊ณ์ด ๋ถ์ - ์ ์์ฑ(stationary)๊ณผ ์ฐจ๋ถ
2022.03.18 - [๋ฐ์ดํฐ ๋ถ์/04. Data Analysis] - [ํต๊ณ์ ๋ชจ๋ธ๋ง] ์๊ณ์ด ๋ถ์ [ํต๊ณ์ ๋ชจ๋ธ๋ง] ์๊ณ์ด ๋ถ์ ํญ์ ์๊ณ์ด ๋ถ์์ ์ด๋ ต๊ณ ๋ณต์กํ๋ค๋ ์๊ฐ์ ์ฝ๋๋ฅผ ํ๋ํ๋ ์ดํดํ๋ฉด์ ์์ฑํ๊ธฐ ํ๋ค์
xod22.tistory.com
์์ ํฌ์คํ ์์ ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ์ดํด๋ณด์๋ค๋ฉด ์ด๋ฒ ๊ธ์์๋ ์์ธกํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๊ณต๋ถํด๋ณด๊ฒ ์ต๋๋ค!
์๊ณ์ด ์์ธก
์๊ณ์ด์ ์์ธกํ๋ ๋ค์ํ ๋ชจ๋ธ์ด ์์
- AR : ์๊ธฐํ๊ท(์ถ์ธ ๋ฐ ๊ณ์ ์ฑ๋ถ ์ ์ธ)
- MA : ์ด๋ํ๊ท (์ถ์ธ ๋ฐ ๊ณ์ ์ฑ๋ถ ์ ์ธ)
- ARMA : ์๊ธฐํ๊ท ์ด๋ํ๊ท (์ถ์ธ ๋ฐ ๊ณ์ ์ฑ๋ถ ์ ์ธ)
- ARIMA
- SARIMA
- ์ง์ํํ๋ฒ
์ค์ต
~ํจํค์ง ์ํฌํธ ๋ฐ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ~
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