Python에서 ljung-box 테스트를 수행하는 방법
Ljung-Box 검정은 시계열에 자기 상관이 있는지 여부를 확인하는 통계 검정입니다.
다음과 같은 가정을 사용합니다.
H 0 : 잔차가 독립적으로 분포됩니다.
H A : 잔차는 독립적으로 분배되지 않습니다. 그들은 계열 상관관계를 나타냅니다.
이상적으로는 귀무가설을 기각하지 않는 것이 좋습니다. 즉, 테스트의 p-값이 0.05보다 커야 합니다. 이는 시계열 모델의 잔차가 독립적이라는 것을 의미하며, 이는 종종 모델을 생성할 때 가정하는 가정입니다.
이 튜토리얼에서는 Python에서 Ljung-Box 테스트를 수행하는 방법을 설명합니다.
예: Python의 Ljung-Box 테스트
Python의 데이터 시리즈에 대해 Ljung-Box 테스트를 수행하려면 다음 구문을 사용하는 statsmodels 라이브러리의 acorr_ljungbox() 함수를 사용할 수 있습니다.
acorr_ljungbox(x, 오프셋=없음)
금:
- x: 데이터 시리즈
- lags: 테스트할 지연 수
이 함수는 검정 통계량과 해당 p-값을 반환합니다. p-값이 특정 임계값(예: α = 0.05)보다 낮으면 귀무 가설을 기각하고 잔차가 독립적으로 분포되지 않는다는 결론을 내릴 수 있습니다.
다음 코드는 이 함수를 사용하여 “SUNACTIVITY”라는 내장 statsmodels 데이터세트에 대해 Ljung-Box 테스트를 수행하는 방법을 보여줍니다.
import statsmodels.api as sm #load data series data = sm.datasets.sunspots.load_pandas().data #view first ten rows of data series data[:5] YEAR SUNACTIVITY 0 1700.0 5.0 1 1701.0 11.0 2 1702.0 16.0 3 1703.0 23.0 4 1704.0 36.0 #fit ARMA model to dataset res = sm. tsa . ARMA (data[" SUNACTIVITY "],(1,1)). fit (disp=-1) #perform Ljung-Box test on residuals with lag=5 sm. stats . acorr_ljungbox (res. resid , lags=[5], return_df= True ) lb_stat lb_pvalue 5 107.86488 1.157710e-21
검정 통계량은 107.86488 이고 검정 p-값은 1.157710e-21 로 0.05보다 훨씬 작습니다. 따라서 검정의 귀무가설을 기각하고 잔차가 독립적이지 않다는 결론을 내립니다.
이 예에서는 오프셋 값 5를 사용하도록 선택했지만 오프셋에 사용하려는 값을 선택할 수 있습니다. 예를 들어 값 20을 대신 사용할 수 있습니다.
#perform Ljung-Box test on residuals with lag=20 sm. stats . acorr_ljungbox (res. resid , lags=[20], return_df= True ) lb_stat lb_pvalue 20 343.634016 9.117477e-61
테스트의 테스트 통계량은 343.634016 이고 테스트의 p-값은 9.117477e-61 로 0.05보다 훨씬 작습니다. 따라서 우리는 검정의 귀무 가설을 다시 한 번 기각하고 잔차가 독립적이지 않다는 결론을 내립니다.
특정 상황에 따라 오프셋에 사용할 더 낮거나 높은 값을 선택할 수 있습니다.