Como realizar um teste de causalidade granger em r
O teste de causalidade de Granger é usado para determinar se uma série temporal é ou não útil para prever outra.
Este teste usa as seguintes hipóteses nulas e alternativas:
Hipótese nula (H 0 ): a série temporal x não causa a série temporal y para Granger
Hipótese alternativa ( HA ): Série temporal x Série temporal de Granger causa y
O termo “causas de Granger” significa que conhecer o valor da série temporal x com um certo atraso é útil para prever o valor da série temporal y em um período posterior.
Este teste produz uma estatística de teste F com um valor p correspondente. Se o valor p estiver abaixo de um certo nível de significância (ou seja, α = 0,05), então podemos rejeitar a hipótese nula e concluir que temos evidências suficientes para afirmar que a série temporal x Granger causa a série temporal y.
Para realizar um teste de Granger-Causalidade em R, podemos usar a função grangertest() do pacote lmtest , que usa a seguinte sintaxe:
grangertest(x, y, ordem = 1)
Ouro:
- x: a primeira série temporal
- y: a segunda série temporal
- ordem: número de deslocamentos a serem usados na primeira série temporal. O valor padrão é 1.
O exemplo passo a passo a seguir mostra como usar esta função na prática.
Etapa 1: definir as duas séries temporais
Para este exemplo, usaremos o conjunto de dados ChickEgg pré-carregado no pacote lmtest. Este conjunto de dados contém valores para o número de ovos produzidos, bem como para o número de galinhas nos Estados Unidos de 1930 a 1983:
#load lmtest package library (lmtest) #load ChickEgg dataset data(ChickEgg) #view first six rows of dataset head(ChickEgg) chicken egg [1,] 468491 3581 [2,] 449743 3532 [3,] 436815 3327 [4,] 444523 3255 [5,] 433937 3156 [6,] 389958 3081
Etapa 2: realizar o teste de causalidade de Granger
A seguir, usaremos a função grangertest() para realizar um teste de causalidade de Granger para ver se o número de ovos produzidos é preditivo do número futuro de galinhas. Executaremos o teste usando três deslocamentos:
#perform Granger-Causality test grangertest(chicken ~ egg, order = 3 , data = ChickEgg) Granger causality test Model 1: chicken ~ Lags(chicken, 1:3) + Lags(egg, 1:3) Model 2: chicken ~ Lags(chicken, 1:3) Res.Df Df F Pr(>F) 1 44 2 47 -3 5.405 0.002966 ** --- Significant. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Veja como interpretar o resultado:
- Modelo 1: Este modelo tenta prever o número de galinhas usando o número de galinhas nos três anos anteriores e o número de ovos nos três anos anteriores como variáveis preditoras.
- Modelo 2: Este modelo tenta prever o número de galinhas usando apenas o número de galinhas nos três anos anteriores como variáveis preditoras.
- F: Esta é a estatística do teste F. Acontece que é 5.405.
- Pr(>F): Este é o valor p que corresponde à estatística do teste F. Acontece que é 0,002966.
Como o valor p é inferior a 0,05, podemos rejeitar a hipótese nula do teste e concluir que conhecer o número de ovos é útil para prever o número futuro de galinhas.
Etapa 3: execute o teste de causalidade Granger ao contrário
Embora tenhamos rejeitado a hipótese nula do teste, é de fato possível que possa ocorrer um caso de causalidade reversa. Em outras palavras, é possível que o número de galinhas provoque uma alteração no número de ovos.
Para descartar essa possibilidade, precisamos realizar o teste de Granger-Causalidade ao contrário, usando galinhas como variável preditora e ovos como variável resposta :
#perform Granger-Causality test in reverse grangertest(egg ~ chicken, order = 3 , data = ChickEgg) Granger causality test Model 1: egg ~ Lags(egg, 1:3) + Lags(chicken, 1:3) Model 2: egg ~ Lags(egg, 1:3) Res.Df Df F Pr(>F) 1 44 2 47 -3 0.5916 0.6238
O valor p do teste é 0,6238. Como não é inferior a 0,05, não podemos rejeitar a hipótese nula. Em outras palavras, o número de galinhas não prevê o número futuro de ovos.
Assim, podemos concluir que conhecer o número de ovos é útil para prever o número futuro de galinhas.