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보다 훨씬 작습니다. 따라서 우리는 검정의 귀무 가설을 다시 한 번 기각하고 잔차가 독립적이지 않다는 결론을 내립니다.

특정 상황에 따라 오프셋에 사용할 더 낮거나 높은 값을 선택할 수 있습니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다