Como realizar um teste ljung-box em python
O teste Ljung-Box é um teste estatístico que verifica se existe autocorrelação em uma série temporal.
Ele usa as seguintes suposições:
H 0 : Os resíduos são distribuídos de forma independente.
HA : Os resíduos não são distribuídos de forma independente; eles exibem correlação serial.
Idealmente, gostaríamos de não rejeitar a hipótese nula. Ou seja, gostaríamos que o valor p do teste fosse maior que 0,05, pois isso significa que os resíduos do nosso modelo de série temporal são independentes, o que muitas vezes é uma suposição que fazemos ao criar um modelo.
Este tutorial explica como realizar um teste Ljung-Box em Python.
Exemplo: teste Ljung-Box em Python
Para realizar o teste Ljung-Box em uma série de dados em Python, você pode usar a função acorr_ljungbox() da biblioteca statsmodels que usa a seguinte sintaxe:
acorr_ljungbox(x, deslocamentos=Nenhum)
Ouro:
- x: a série de dados
- atrasos: número de atrasos a serem testados
Esta função retorna uma estatística de teste e um valor p correspondente. Se o valor p estiver abaixo de um determinado limite (por exemplo, α = 0,05), você pode rejeitar a hipótese nula e concluir que os resíduos não são distribuídos de forma independente.
O código a seguir mostra como usar esta função para realizar o teste Ljung-Box no conjunto de dados interno de statsmodels chamado “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
A estatística de teste é 107,86488 e o valor p do teste é 1,157710e-21 , que é muito menor que 0,05. Assim, rejeitamos a hipótese nula do teste e concluímos que os resíduos não são independentes.
Observe que optamos por usar um valor de deslocamento de 5 neste exemplo, mas você pode escolher qualquer valor que queira usar para o deslocamento. Por exemplo, poderíamos usar um valor de 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
A estatística de teste do teste é 343,634016 e o valor p do teste é 9,117477e-61 , que é muito menor que 0,05. Assim, rejeitamos mais uma vez a hipótese nula do teste e concluímos que os resíduos não são independentes.
Dependendo da sua situação específica, você pode escolher um valor menor ou maior para usar no deslocamento.