원시 데이터(Raw Data)
잔차(residual)
확률과정(stochastic process)
표본(sample)
강한 가정(strong assumption)
탐색적 데이터 분석(Exploratory Data Analysis)
평균(mean)
편차(deviation)
분산(variance)
표준편차(Standard deviation)
1949년 1월 ~ 1960년 12월 승객 수 데이터
추세(trend)
계절성(seasonal)
주기성(Cycle)
observed
: raw data(원본 값)trend
: 확정적 추세만 뽑아 시각화seasonal
: 비슷한 모양이 -> 구간별 12번 반복(1년마다 반복)random
: == 잔차, trend와 seasonal을 뺀 나머지, 더이상 뽑을 수 있는 시계열 기본 성질이 없어야 함!t
일 경우t-10 ~ t-1
까지의 관측 시계열 특징 ≠ t ~ t+10
statsmodels
라이브러리 kpss
사용kpss_stat
, p_value
, lags
, crit
from statsmodels.tsa.stattools import kpss
time_series_data_test = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# KPSS 검정
kpss_outputs = kpss(time_series_data_test)
print('KPSS test 결과 : ')
print('--'*15)
print('KPSS Statistic:', kpss_outputs[0])
print('p-value:', kpss_outputs[1])
statsmodels
라이브러리 adfuller
사용 adf
, pvalue
, usedlag
, nobs
, critical values
from statsmodels.tsa.stattools import adfuller
time_series_data_test = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# ADF 검정
adf_outputs = adfuller(time_series_data_test)
print('ADF Test 결과 : ')
print('--'*15)
print('ADF Statistic:', adf_outputs[0])
print('p-value:', adf_outputs[1])
시각적으로도 stationary한지 파악해야함
time_series_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 시계열 데이터 로그변환
time_series_data_log = np.log(time_series_data)
time_series_data
time_series_data_log
time_series_data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
time_series_data = [random.randint(1, 100) for _ in range(50)]
time_series_data_log = np.log(time_series_data)
time_series_data
time_series_data_log
df0 = pd.DataFrame({'orig_value': [random.uniform(0, 100) for _ in range(100)]})
df1 = pd.DataFrame({'orig_value': [random.uniform(0, 100) for _ in range(100)]})
df0['smoothed_value'] = df0['orig_value'].rolling(5).mean()
# 잡음 포함 시계열 데이터
df0.plot(legend=True, title='original')
# 잡음 제거 시계열 데이터
df0.plot(legend=True, subplots=True, title='smoothed')
df1.plot(title='original')
# 차분 적용
df1['diff_value'] = df1['orig_value'].diff()
df1.plot(legend=True, subplots=True, title='diff')
정리
- 비정상적 시계열 -> 누적 과정(Integrated Process)
- 정상적 시계열의 누적으로 비정상적 시계열이 이루어짐
- 즉, 그 누적을 차분해주면 -> 정상적 과정을 볼 수 있는 원리!