Come eseguire un test ljung-box in python


Il test Ljung-Box è un test statistico che verifica se esiste autocorrelazione in una serie temporale.

Utilizza le seguenti ipotesi:

H 0 : I residui sono distribuiti in modo indipendente.

H A : I residui non sono distribuiti in modo indipendente; mostrano una correlazione seriale.

Idealmente, vorremmo non rifiutare l’ipotesi nulla. Vorremmo cioè che il valore p del test fosse maggiore di 0,05, perché ciò significa che i residui del nostro modello di serie temporali sono indipendenti, che è spesso un’ipotesi che facciamo quando creiamo un modello.

Questo tutorial spiega come eseguire un test Ljung-Box in Python.

Esempio: test Ljung-Box in Python

Per eseguire il test Ljung-Box su una serie di dati in Python, puoi utilizzare la funzione acorr_ljungbox() dalla libreria statsmodels che utilizza la seguente sintassi:

acorr_ljungbox(x, offset=Nessuno)

Oro:

  • x: la serie di dati
  • ritardi: numero di ritardi da testare

Questa funzione restituisce una statistica di test e un valore p corrispondente. Se il valore p è inferiore ad una certa soglia (ad esempio α = 0,05), è possibile rifiutare l’ipotesi nulla e concludere che i residui non sono distribuiti in modo indipendente.

Il codice seguente mostra come utilizzare questa funzione per eseguire il test Ljung-Box sul set di dati statsmodels integrato chiamato “SUNACTIVITY”:

 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

La statistica del test è 107,86488 e il valore p del test è 1,157710e-21 , che è molto inferiore a 0,05. Pertanto, rifiutiamo l’ipotesi nulla del test e concludiamo che i residui non sono indipendenti.

Tieni presente che in questo esempio scegliamo di utilizzare un valore di offset pari a 5, ma puoi scegliere qualsiasi valore desideri utilizzare per l’offset. Ad esempio, potremmo invece utilizzare un valore pari a 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

La statistica del test è 343.634016 e il valore p del test è 9.117477e-61 , che è molto inferiore a 0,05. Pertanto, rifiutiamo ancora una volta l’ipotesi nulla del test e concludiamo che i residui non sono indipendenti.

A seconda della situazione particolare, è possibile scegliere un valore inferiore o superiore da utilizzare per l’offset.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *