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.