
시각화의 용이성, 통합 및 병합, 정 기간에 대한 데이터 필터링의 장점이 있다.
df['Month'] = pd.to_datetime(df['Month'])
df2 = df.set_index(['Month'])

분포의 정상화
비대칭적 분포에서 반복되는 차이의 값을 어느정도 일정하게 맞춰줄 수 있다.
이상치의 영향 감소
비율적 변화 분석 가능
예를 들어, 10에서 20으로의 변화와 100에서 200으로의 변화를 동일한 비율로 볼 수 있게 도와준다.
데이터의 스케일 조정
df2_log = np.log(df2)

-> 점점 커지던 진폭이 어느정도 일정해졌다.(분포의 정상화)
이동평균
이동평균은 시계열 데이터의 노이즈를 줄이고 데이터의 일반적인 추세를 파악하기 위해 사용
시계열데이터의 지정된 윈도우 범위 내에서 평균을 계산
rol_mean = df2.rolling(window=12).mean()
이동표준편차
주어진 윈도우 크키 내에서 데이터의 변동성을 측정하는 지표
rol_std = df2.rolling(window=12).std()
df3_logavg= df2_log - movingavg
df3_logavg.(inplace = True)

-> 각 값에서 이동평균을 제거
wats=df2_log.ewm(halflife=12, min_periods=0, adjust=True).mean()
plt.plot(df2_log)
plt.plot(wats)

shift=df2_log-df2_log.shift(4)
plt.plot(shift)

그래프를 보고 자기회귀(AR) 모형의 차수, 이동평균(MA)의 차수를 구한다. 여기까지 몇번 차분했는지에 따라 차분(Differencing)의 차수를 구할 수 있다.


이 과정을 반복하여 최적의 자기회귀(AR) 모형의 차수, 이동평균(MA)의 차수, 차분(Differencing)의 차수 조합을 찾는다.
odel = ARIMA(df2_log, order=(5,4,4))
model_fit = model.fit()
forecast = model_fit.forecast(steps=12)
print(forecast)
plt.figure(figsize=(10,6))
plt.plot(df2_log, label='Original')
plt.plot(forecast, label='Forecast', color='red')
plt.legend(loc='best')
plt.title('Air Passenger Forecast')
plt.show()
