import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['font.family'] = 'Noto Sans KR'
df = pd.read_csv('_data/foot.csv')자기귀모형
확률 통계
시계열 분석
![]()
- 자기회귀과정: 예측값이 이전 값에만 선형적으로 의존한다고 가정
from statsmodels.tsa.stattools import adfuller
ADF_result = adfuller(df['foot_traffic'])
ADF_result[0], ADF_result[1](np.float64(-1.1758885999240747), np.float64(0.683880891789619))
- 비 정상성 발견. 차분 진행
foot_diff = np.diff(df['foot_traffic'], n=1)
ADF_result = adfuller(foot_diff)
ADF_result[0], ADF_result[1](np.float64(-5.268231347422044), np.float64(6.369317654781239e-06))
from statsmodels.graphics.tsaplots import plot_acf
plot_acf(foot_diff, lags=20)
plt.show()
from statsmodels.tsa.arima_process import ArmaProcess
ma2 = np.array([1, 0, 0])
ar2 = np.array([1, -0.33, -0.50])
AR2_process = ArmaProcess(ar2, ma2).generate_sample(nsample=1000)from statsmodels.graphics.tsaplots import plot_pacf
plot_pacf(AR2_process, lags=20)
plt.show()
plot_pacf(foot_diff, lags=20)
plt.show()
df_diff = pd.DataFrame({'foot_traffic_diff': foot_diff})
train = df_diff.iloc[:-52]
test = df_diff.iloc[-52:]