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.

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *