Objetivo:

Esta avaliação tem como objetivo analisar séries temporais univariadas com possível ocorrência de quebras estruturais, utilizando metodologias discutidas em sala de aula. Os alunos deverão estimar modelos ARIMA e, quando apropriado, modelos GARCH, comparando seus desempenhos e interpretando o impacto da quebra estrutural no processo gerador da série.

Proposta da Avaliação

Cada aluno deverá escolher uma série temporal diária que apresente indícios de quebra estrutural, motivada por um evento econômico relevante. A escolha da série e do evento deve ser justificada com base em literatura ou fontes de dados confiáveis.

library(lubridate)

Ipea_taxa_cambio <- Ipea_taxa_cambio %>%
  mutate(Data = as.Date(Data, format = "%d/%m/%Y")) %>%  # Converte a coluna Data para o formato Date
  filter(Data >= as.Date('2010-01-01') 
         & Data <= as.Date('2024-12-31')) %>%  # #trabalhar com a série de 2010 para 2024
  na.omit()  # Remove todas as linhas com NA


str(Ipea_taxa_cambio)
## tibble [3,755 × 2] (S3: tbl_df/tbl/data.frame)
##  $ Data     : Date[1:3755], format: "2010-01-04" "2010-01-05" ...
##  $ valorTaxa: num [1:3755] 1.72 1.72 1.73 1.74 1.74 ...
##  - attr(*, "na.action")= 'omit' Named int [1:1724] 1 2 3 9 10 16 17 23 24 30 ...
##   ..- attr(*, "names")= chr [1:1724] "1" "2" "3" "9" ...

1) A partir da série original (“n”), segmentação em duas partes:

n1: Período anterior à quebra estrutural.

n2: Período posterior à quebra estrutural.

n = n1 + n2: Série completa, incluindo os períodos antes e depois da quebra.

2) Definir a data de quebra

data_quebra <- as.Date("2015-01-01")

3) Segmentação da série

n1 <- Ipea_taxa_cambio%>% 
  filter(Data < data_quebra) # Período anterior à quebra estrutural.

n2 <- Ipea_taxa_cambio%>%
  filter(Data >= data_quebra)# Exemplo: período posterior

4) Análose Exploratória

plot(Ipea_taxa_cambio$Data, Ipea_taxa_cambio$valorTaxa, type = "l", 
     main = "Taxa de Câmbio R$/US$", xlab = "Data", ylab = "Valor da Taxa")

5) Estatísticas Descritivas

summary(n1$valorTaxa)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   1.534   1.750   1.988   1.981   2.224   2.740
summary(n2$valorTaxa)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.575   3.482   4.182   4.372   5.217   6.199
Para o resumo das estatísticas n1 temos abaixo:

Mínimo (Min.): 1.534

Este é o valor mais baixo observado na série n1. Indica que, durante o período considerado, a taxa de câmbio chegou a 1.534 R\(/US\).

1º Quartil (1st Qu.): 1.750

Este valor representa o ponto abaixo do qual 25% das observações se encontram. Portanto, 25% dos valores de \(n1\) valorTaxa são inferiores a 1.750 R\(/US\).

Mediana (Median): 1.988

A mediana é o valor que divide a série ao meio. Isso significa que 50% das observações estão abaixo de 1.988 R\(/US\) e 50% estão acima, servindo como uma boa representação do “centro” da série.

Média (Mean): 1.981

A média aritmética dos valores é de 1.981 R\(/US\). Isso sugere que, em média, a taxa de câmbio durante o período foi ligeiramente inferior à mediana, o que pode indicar a presença de valores extremos ou assimetrias na distribuição.

3º Quartil (3rd Qu.): 2.224

Este valor indica que 75% das observações estão abaixo de 2.224 R\(/US\). É um sinal de que a maioria dos valores tende a ficar abaixo deste nível.

Máximo (Max.): 2.740

Este é o valor mais alto observado na série n1. Indica que a taxa de câmbio alcançou um pico de 2.740 R\(/US\) durante o período considerado.

Para o resumo das estatísticas n2 temos abaixo:

Mínimo (Min.): 2.575

Este é o valor mais baixo observado na série n2. Indica que, durante o período considerado, a taxa de câmbio chegou a 2.575 R\(/US\).

1º Quartil (1st Qu.): 3.482

Este valor representa o ponto abaixo do qual 25% das observações se encontram. Portanto, 25% dos valores de \(n2\) valorTaxa são inferiores a 3.482 R\(/US\).

Mediana (Median): 4.182

A mediana é o valor que divide a série ao meio. Isso significa que 50% das observações estão abaixo de 4.182 R\(/US\) e 50% estão acima, servindo como uma boa representação do “centro” da série.

Média (Mean): 4.372

A média aritmética dos valores é de 4.372 R\(/US\). Isso sugere que, em média, a taxa de câmbio durante o período foi superior à mediana, indicando uma tendência de valores mais altos.

3º Quartil (3rd Qu.): 5.217

Este valor indica que 75% das observações estão abaixo de 5.217 R\(/US\). Isso sugere que a maioria dos valores tende a ficar abaixo deste nível.

Máximo (Max.): 6.199

Este é o valor mais alto observado na série n2. Indica que a taxa de câmbio alcançou um pico de 6.199 R\(/US\) durante o período considerado.

6) Teste de Dickey-Fuller

adf.test(n1$valorTaxa)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  n1$valorTaxa
## Dickey-Fuller = -2.0699, Lag order = 10, p-value = 0.5487
## alternative hypothesis: stationary
adf.test(n2$valorTaxa)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  n2$valorTaxa
## Dickey-Fuller = -2.5682, Lag order = 13, p-value = 0.3378
## alternative hypothesis: stationary
Interpretação dos Resultados n1 Teste de Dickey-Fuller

Após rodarmos os testes do teste de Dickey-Fuller Aumentado (ADF) para a série n1 temos os seguintes resultados

Estatística do Dickey-Fuller: -2.0699

Este valor é comparado com os valores críticos para determinar se a série é estacionária ou não.

Lag Order: 10

Esse resultado nos mostra o número de defasagens utilizadas no teste para ajustar o modelo e considerar a autocorrelação nos dados, ou seja, foram defasados 10 períodos atrás de valores passados e availiar se a série é estacionária. Incluir defasagens ajuda a ajustar o modelo para levar em conta o impacto que os valores anteriores têm sobre o valor atual.Sigignifica que o teste está considerando os efeitos dos valores anteriores até 10 períodos atrás. Isso pode ser útil se a série tiver padrões de autocorrelação de longo prazo. Risco de Overfitting, No entanto, usar muitos lags pode resultar em um modelo que se ajusta demais aos dados, tornando difícil generalizar para novos dados.

Como funciona: - No teste ADF, a série é regredida em relação a suas defasagens e a uma constante (e, opcionalmente, uma tendência).

  • O modelo básico do teste ADF pode ser representado como:

\[ Y_t = \alpha + \beta t + \gamma Y_{t-1} + \sum_{i=1}^{p} \delta_i Y_{t-i} + \epsilon_t \]

Onde:

  • \(Y_t\) é o valor atual.
  • \(Y_{t-1}\) é o valor defasado.
  • \(Y_{t-i}\) são os valores defasados até \(p\) (neste caso, 10).
  • \(\epsilon_t\) é o erro aleatório.

p-value: 0.5487

O valor p é a probabilidade de observar a estatística do teste sob a hipótese nula (que a série possui uma raiz unitária e, portanto, não é estacionária). Um p-value alto (geralmente acima de 0.05) sugere que não podemos rejeitar a hipótese nula.

Conclusão

Com um p-value de 0.5487, não temos evidências suficientes para rejeitar a hipótese nula de que a série n1 possui uma raiz unitária. Isso indica que n1$valorTaxa não é estacionária e pode apresentar tendências ou sazonalidades. Como a série \(n1\) não estationária nos sugere que antes de modela-la com o ARIMA e outros métodos, temos que aplicar transformações como a diferenciação para torná-la estacionária, para garantir um bom modelo de previsão

Por que a Estacionaridade é Importante?

Previsibilidade:

Modelos de séries temporais, como ARIMA, pressupõem que a série é estacionária. Se a série não for estacionária, as previsões baseadas em tais modelos podem ser imprecisas.

Consistência Estatística:

Estacionaridade garante que os resultados estatísticos, como testes de hipótese e intervalos de confiança, sejam válidos e confiáveis ao longo do tempo.

Simplicidade do Modelo:

Quando uma série é estacionária, é mais fácil identificar padrões e relacionamentos nas dados, simplificando a modelagem.

Autocorrelação:

Em uma série estacionária, a autocorrelação é constante ao longo do tempo. Isso permite que os modelos capturem a estrutura temporal de forma mais eficaz.

Quando a série é Não Estacionária?

Uma série é considerada não estacionária quando suas propriedades estatísticas mudam ao longo do tempo. Isso pode ocorrer em situações como:

Tendências:

Se a média da série aumenta ou diminui ao longo do tempo.

Sazonalidade:

Se os padrões se repetem em intervalos regulares (como vendas que aumentam durante as festas). Mudanças Estruturais: Se há uma mudança radical na série devido a eventos externos.

Interpretação dos Resultados n2 Teste de Dickey-Fuller

Os resultados do teste de Dickey-Fuller Aumentado (ADF) para a série n2 são os seguintes:

Estatística do Dickey-Fuller: -2.5682

Este valor é comparado com os valores críticos para determinar se a série é estacionária ou não.

Lag Order: 13

No teste tivesmo um número de defasagens utilizadas de 13 períodos, isso indica que o teste considera os efeitos dos valores passados até 13 períodos atrás.

p-value: 0.3378

O valor p representa a probabilidade de observar a estatística do teste sob a hipótese nula (que a série possui uma raiz unitária e, portanto, não é estacionária). Um p-value alto (geralmente acima de 0.05) sugere que não podemos rejeitar a hipótese nula.

Conclusão

Com um p-value de 0.3378, não temos evidências suficientes para rejeitar a hipótese nula de que a série n2 possui uma raiz unitária. Isso indica que \(n2\) valorTaxa também não é estacionária e pode apresentar tendências ou sazonalidades.

Como não há estacionaridade da série n2 sugere que, assim como em n1, pode ser necessário aplicar transformações, como diferenciação, antes de modelar a série com abordagens como ARIMA, para garantir que os modelos de previsão sejam válidos e eficazes.

7) ACF e PACF

par(mfrow = c(1, 2))  # Configura o gráfico para 2 plots
acf(n1$valorTaxa, main = "ACF - n1") #variável em primeira diferença já corrige no auto.arima
pacf(n1$valorTaxa, main = "PACF - n1")

Análise ACF e PACF para n2
par(mfrow = c(1,2))
acf(n2$valorTaxa, main ='ACF - n2')
pacf(n2$valorTaxa, main = "PACF - n2")

8) Modelagem ARIMA - Identificação do Modelo

# Modelagem ARIMA para n1
modelo_n1 <- auto.arima(n1$valorTaxa)
summary(modelo_n1)
## Series: n1$valorTaxa 
## ARIMA(2,1,2) with drift 
## 
## Coefficients:
##          ar1      ar2      ma1     ma2  drift
##       1.0175  -0.6417  -0.9114  0.5532  7e-04
## s.e.  0.1718   0.1233   0.1793  0.1419  4e-04
## 
## sigma^2 = 0.0002232:  log likelihood = 3500.27
## AIC=-6988.53   AICc=-6988.46   BIC=-6957.72
## 
## Training set error measures:
##                        ME       RMSE        MAE         MPE      MAPE      MASE
## Training set 3.192732e-06 0.01490312 0.01048375 -0.00611335 0.5241739 0.9940053
##                      ACF1
## Training set -0.003994898
# Modelagem ARIMA para n2
modelo_n2 <- auto.arima(n2$valorTaxa)
summary(modelo_n2)
## Series: n2$valorTaxa 
## ARIMA(0,1,1) with drift 
## 
## Coefficients:
##          ma1   drift
##       0.0614  0.0014
## s.e.  0.0204  0.0009
## 
## sigma^2 = 0.001842:  log likelihood = 4319.82
## AIC=-8633.64   AICc=-8633.63   BIC=-8616.17
## 
## Training set error measures:
##                       ME       RMSE        MAE          MPE      MAPE      MASE
## Training set 1.00798e-06 0.04288889 0.03057907 -0.004430129 0.6939802 0.9978483
##                      ACF1
## Training set -0.001276037
# Modelagem ARIMA para a série completa
modelo_n <- auto.arima(Ipea_taxa_cambio$valorTaxa) # n = n1 + n2 série completa, incluindo os períodos antes e depois da quebra.
summary(modelo_n)
## Series: Ipea_taxa_cambio$valorTaxa 
## ARIMA(0,1,1) with drift 
## 
## Coefficients:
##          ma1   drift
##       0.0643  0.0012
## s.e.  0.0166  0.0006
## 
## sigma^2 = 0.0013:  log likelihood = 7147.28
## AIC=-14288.57   AICc=-14288.56   BIC=-14269.88
## 
## Training set error measures:
##                        ME       RMSE        MAE          MPE      MAPE
## Training set 4.551643e-07 0.03604513 0.02387267 -0.008709876 0.6381737
##                   MASE         ACF1
## Training set 0.9979257 -0.001228199

Identificação do melhor modelo ARIMA para cada uma das três séries (n1, n2 e n) e Justificativa para a escolha do modelo

Para identificarmos o modelo ARIMA que se ajusta melhor \(n1\), \(n2\) e a série completa \(n\), devemos considerar o valor do AIC (Critério de Informação de Akaike). Através dessa medida se busca o melhor equilíbrio entre ajuste e simplicidade. Modelos usando AIC com o menor valor de AIC é considerado o melhor.

Comparação dos Modelos

Modelo para n1 :

ARIMA(2,1,2) AIC : -6988,53

Modelo para n2 :

ARIMA(0,1,1) AIC : -8633,64

Modelo para n :

ARIMA(0,1,1) AIC : -14288,57

O modelo para a série completa \(modelo_n\) (ARIMA(0,1,1)) tem o menor AIC de -14288.57 , destacando que é o melhor ajuste entre os três modelos.

Componentes do Modelo ARIMA(p, d, q)

p (Ordem AR) : Representa o número de termos autorregressivos. No caso do modelo_n série completa ARIMA(0,1,1), o valor é 0, o que significa que não há termos autorregressivos no modelo.

d (Diferença) : Indica o número de vezes que a série deve ser diferenciada para se tornar estacionária. No ARIMA(0,1,1), o valor é 1, o que significa que a série foi diferenciada uma vez. Isso é feito para remover tendências e tornar a série estacionária.

q (Ordem MA) : Representa o número de termos de mídia móvel. Com um valor de 1 em ARIMA(0,1,1), o modelo inclui um termo de média móvel. Isso significa que a previsão é influenciada pelo erro da previsão do período anterior.

9) Diagnóstico dos resíduos para avaliar a adequação do modelo.

Diagnóstico dos resíduos para n1
checkresiduals(modelo_n1)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(2,1,2) with drift
## Q* = 3.2213, df = 6, p-value = 0.7806
## 
## Model df: 4.   Total lags used: 10

Resultados do Teste de Ljung-Box

  • Teste Q *: 3.2213
  • Graus de Liberdade (df) : 6
  • Valor de p : 0,7806

Interpretação Hipóteses do Teste :

  • Hipótese Nula (H0) : Os resíduos são independentes (não há autocorrelação).
  • Hipótese Alternativa (H1) : Os resíduos não são independentes (há autocorrelação).

Valores do Teste :

  • O valor Q* de 3.2213 indica a estatística do teste.
  • O valor p de 0,7806 é muito alto.

Conclusão : Considerando que temos um \(p\) > que 0,05 rejeitamos a hipótese nula os resíduos são independentes, significa que não existe evidências suficientes para afirmar que os resíduos apresentam autocorrelação significativa. É um bom modelo, o resultado do teste de Ljung-Box indicam que o modelo ARIMA foi ajustado para \(n1\) ser protegido. Os resíduos não apresentam padrões significativos, indicando que o modelo é adequado para a previsão.

Diagnóstico dos resíduos para n2
checkresiduals(modelo_n2)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,1) with drift
## Q* = 8.4179, df = 9, p-value = 0.4926
## 
## Model df: 1.   Total lags used: 10

Resultados do Teste de Ljung-Box

Interpretação: Hipóteses do Teste :

  • Hipótese Nula (H0) : Os resíduos são independentes (não há autocorrelação).
  • Hipótese Alternativa (H1) : Os resíduos não são independentes (há autocorrelação).

Valores do Teste :

  • O valor Q* de 8.4179 indica a estatística do teste.
  • O valor p de 0,4926 indica um valor alto > que 0.05

Conclusão: Também o resultado do teste de Ljung-Box para o modelo ajustado para n2indicar que o modelo é adequado. Os amostras não mostram padrões significativos, indicando que o modelo ARIMA(0,1,1) fornece um bom ajuste para a variação.

Diagnóstico dos resíduos para toda série completa modelo n
checkresiduals(modelo_n)

## 
##  Ljung-Box test
## 
## data:  Residuals from ARIMA(0,1,1) with drift
## Q* = 11.713, df = 9, p-value = 0.23
## 
## Model df: 1.   Total lags used: 10

Resultados do Teste de Ljung-Box

  • O valor de Teste Q *: 11.713
  • Graus de Liberdade (df) : 9
  • valor de p : 0,23

Interpretação Hipóteses do Teste :

  • Hipótese Nula (H0) : Os resíduos são independentes (não há autocorrelação).
  • Hipótese Alternativa (H1) : Os resíduos não são independentes (há autocorrelação).

Valores do Teste :

  • O valor Q* de 11.713 indica a estatística do teste.
  • O valor p de 0,23 indica que é relativamente alto se comparado ao nível de significância de 0.05

Conclusão Podemos perceber que a análise dos resíduos e o resultado do teste da Ljung-Box para o modelo ajustado indicam que o modelo é seguro. Os amostras não mostram padrões significativos, indicando que o modelo ARIMA(0,1,1) fornece um bom ajuste para a variação.

Como podemos perceber no teste anterior de Ljung-Box que não houve correlação significativa de ambos os modelos, logo temos a certeza de existencia de heterocedasticidade , vamos usar ajustar o modelo GARCH. Abaixo outra visão para melhor interpretar esses resíduos:
residuos_n1 <- residuals(modelo_n1)
residuos_n2 <- residuals(modelo_n2)
residuos_n  <- residuals(modelo_n)

Teste de Ljung-Box

lb_test_n1 <- Box.test(residuos_n1, type = "Ljung-Box")
lb_test_n2 <- Box.test(residuos_n2, type = "Ljung-Box")
lb_test_n  <- Box.test(residuos_n, type = "Ljung-Box")

# Resultados
lb_test_n1
## 
##  Box-Ljung test
## 
## data:  residuos_n1
## X-squared = 0.020109, df = 1, p-value = 0.8872
lb_test_n2
## 
##  Box-Ljung test
## 
## data:  residuos_n2
## X-squared = 0.0040723, df = 1, p-value = 0.9491
lb_test_n
## 
##  Box-Ljung test
## 
## data:  residuos_n
## X-squared = 0.0056688, df = 1, p-value = 0.94

Interpretação dos Resultados

Hipótese Nula do Teste de Ljung-Box : A hipótese nula afirma que não há autocorrelação significativa nos resíduos do modelo. Em outras palavras, os resíduos são aleatórios e independentes.

Valores de p :

Verificamos que para todos os modelos ( n1, n2e n), os valores de p são muito altos (todos acima de 0,05).

Isso indica que não há evidências suficientes para rejeitar a hipótese nula. Assim, podemos concluir que não há autocorrelação significativa nos resíduos desses modelos.

A ausência de autocorrelação nos resíduos não implica diretamente que não haja heterocedasticidade. Podemos então ter heterocedasticidade, que é a variação não constante da variação dos resíduos ao longo do tempo, logo podemos modeladar usando GARCH.

justar o modelo GARCH - Um modelo GARCH (Heterocedasticidade Condicional Autorregressiva Generalizada) é usado para modelar séries temporais que apresentam heterocedasticidade, ou seja, uma variância dos erros varia ao longo do tempo. Este modelo é útil em finanças e econometria, onde a volatilidade dos dados acontece.
Verificar heterocedasticidade nos resíduos de n1
library(rugarch)

model_garch_n1 <- ugarchspec(variance.model = list(model = "sGARCH"), mean.model = list(armaOrder = c(1, 1)))

fit_garch_n1 <- ugarchfit(model_garch_n1, data = residuos_n1)
fit_garch_n1
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(1,1)
## Mean Model   : ARFIMA(1,0,1)
## Distribution : norm 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error  t value Pr(>|t|)
## mu     -0.000319    0.000302 -1.05589 0.291018
## ar1     0.176964    0.545003  0.32470 0.745405
## ma1    -0.211289    0.540444 -0.39096 0.695830
## omega   0.000002    0.000002  1.02953 0.303232
## alpha1  0.107453    0.022321  4.81389 0.000001
## beta1   0.891544    0.021415 41.63227 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu     -0.000319    0.000350 -0.91321  0.36113
## ar1     0.176964    0.389196  0.45469  0.64933
## ma1    -0.211289    0.393415 -0.53707  0.59122
## omega   0.000002    0.000010  0.22612  0.82111
## alpha1  0.107453    0.067382  1.59468  0.11078
## beta1   0.891544    0.072530 12.29205  0.00000
## 
## LogLikelihood : 3656.517 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -5.8083
## Bayes        -5.7838
## Shibata      -5.8083
## Hannan-Quinn -5.7991
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic  p-value
## Lag[1]                      2.342 0.125900
## Lag[2*(p+q)+(p+q)-1][5]     5.222 0.001524
## Lag[4*(p+q)+(p+q)-1][9]     7.979 0.058718
## d.o.f=2
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.9333  0.3340
## Lag[2*(p+q)+(p+q)-1][5]    1.3216  0.7836
## Lag[4*(p+q)+(p+q)-1][9]    1.7056  0.9371
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]    0.1719 0.500 2.000  0.6784
## ARCH Lag[5]    0.6750 1.440 1.667  0.8311
## ARCH Lag[7]    0.8166 2.315 1.543  0.9414
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  8.6255
## Individual Statistics:             
## mu     1.7805
## ar1    0.1172
## ma1    0.1111
## omega  3.0009
## alpha1 0.1469
## beta1  0.2659
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.49 1.68 2.12
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value    prob sig
## Sign Bias          1.21584 0.22427    
## Negative Sign Bias 1.46427 0.14337    
## Positive Sign Bias 0.09107 0.92745    
## Joint Effect       9.08656 0.02816  **
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     52.23    6.115e-05
## 2    30     63.07    2.524e-04
## 3    40     74.20    5.738e-04
## 4    50     85.04    1.075e-03
## 
## 
## Elapsed time : 0.271112
summary(fit_garch_n1)
##    Length     Class      Mode 
##         1 uGARCHfit        S4
Resultados dos parâmetros n1
library(DT)

parametro_n1 <- data.frame(
  Parameter = c("mu", "ar1", "ma1", "omega", "alpha1", "beta1"),
  Estimate = c(-0.000319, 0.176964, -0.211289, 0.000002, 0.107453, 0.891544),
  Std_Error = c(0.000302, 0.545003, 0.540444, 0.000002, 0.022321, 0.021415),
  t_value = c(-1.05589, 0.32470, -0.39096, 1.02953, 4.81389, 41.63227),
  p_value = c(0.291018, 0.745405, 0.695830, 0.303232, 0.000001, 0.000000)
)

# Adicionando uma coluna de significância
parametro_n1$Significativo <- ifelse(parametro_n1$p_value < 0.05, "Sim", "Não")

# Tabela de parâmetros interativa
datatable(parametro_n1, options = list(pageLength = 10), 
          caption = 'Parâmetros do Modelo GARCH n1 ')
Resultados do Teste de Ljung-Box n1
teste_ljung_box_n1 <- data.frame(
  Test = c("Ljung-Box (Lag 1)", "Ljung-Box (Lag 5)", "Ljung-Box (Lag 9)"),
  Statistic = c(2.342, 5.222, 7.979),
  p_value = c(0.125900, 0.001524, 0.058718),
  Significativo = c("Não", "Sim", "Quase")
)

# Tabela do Teste de Ljung-Box interativa
datatable(teste_ljung_box_n1, options = list(pageLength = 10),
          caption = "Teste de Ljung-Box")
Resultados do Teste ARCH n1
arch_test_n1 <- data.frame(
  Lag = c("Lag 3", "Lag 5", "Lag 7"),
  Statistic = c(0.1719, 0.6750, 0.8166),
  p_value = c(0.6784, 0.8311, 0.9414),
  Significativo = c("Não", "Não", "Não")
)

# Tabela do Teste ARCH interativa
datatable(arch_test_n1, options = list(pageLength = 10),
          caption = "Teste ARCH")
Verificar heterocedasticidade nos resíduos de n2
model_garch_n2 <- ugarchspec(variance.model = list(model = "sGARCH"), mean.model = list(armaOrder = c(1, 1)))

fit_garch_n2 <- ugarchfit(model_garch_n2, data = residuos_n2)
fit_garch_n2
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(1,1)
## Mean Model   : ARFIMA(1,0,1)
## Distribution : norm 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error   t value Pr(>|t|)
## mu      0.000036    0.000690  0.051516 0.958915
## ar1    -0.712706    0.291125 -2.448110 0.014361
## ma1     0.736899    0.280301  2.628950 0.008565
## omega   0.000025    0.000007  3.774815 0.000160
## alpha1  0.082333    0.012279  6.705286 0.000000
## beta1   0.907772    0.013116 69.209144 0.000000
## 
## Robust Standard Errors:
##         Estimate  Std. Error   t value Pr(>|t|)
## mu      0.000036    0.000786  0.045223 0.963929
## ar1    -0.712706    0.292393 -2.437493 0.014790
## ma1     0.736899    0.280813  2.624165 0.008686
## omega   0.000025    0.000017  1.459833 0.144336
## alpha1  0.082333    0.025093  3.281121 0.001034
## beta1   0.907772    0.026666 34.042902 0.000000
## 
## LogLikelihood : 4581.899 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -3.6636
## Bayes        -3.6497
## Shibata      -3.6637
## Hannan-Quinn -3.6586
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                    0.00455  0.9462
## Lag[2*(p+q)+(p+q)-1][5]   0.21666  1.0000
## Lag[4*(p+q)+(p+q)-1][9]   2.39779  0.9605
## d.o.f=2
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.5382  0.4632
## Lag[2*(p+q)+(p+q)-1][5]    0.5809  0.9445
## Lag[4*(p+q)+(p+q)-1][9]    1.0202  0.9854
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]  0.002263 0.500 2.000  0.9621
## ARCH Lag[5]  0.031825 1.440 1.667  0.9974
## ARCH Lag[7]  0.113708 2.315 1.543  0.9992
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  1.1824
## Individual Statistics:              
## mu     0.03293
## ar1    0.12618
## ma1    0.12249
## omega  0.03725
## alpha1 0.05650
## beta1  0.10125
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.49 1.68 2.12
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value    prob sig
## Sign Bias           2.1417 0.03231  **
## Negative Sign Bias  0.7172 0.47330    
## Positive Sign Bias  0.1530 0.87844    
## Joint Effect        6.4421 0.09197   *
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     73.34    2.542e-08
## 2    30     93.89    9.069e-09
## 3    40    102.86    1.162e-07
## 4    50    107.52    2.863e-06
## 
## 
## Elapsed time : 0.554615
summary(fit_garch_n2)
##    Length     Class      Mode 
##         1 uGARCHfit        S4
Resultados dos parâmetros n2
parametro_n2 <- data.frame(
  Parameter = c("mu", "ar1", "ma1", "omega", "alpha1", "beta1"),
  Estimate = c(0.000036, -0.712706, 0.736899, 0.000025, 0.082333, 0.907772),
  Std_Error = c(0.000690, 0.291125, 0.280301, 0.000007, 0.012279, 0.013116),
  t_value = c(0.051516, -2.448110, 2.628950, 3.774815, 6.705286, 69.209144),
  p_value = c(0.958915, 0.014361, 0.008565, 0.000160, 0.000000, 0.000000)
)

# Adicionando uma coluna de significância
parametro_n2$Significativo <- ifelse(parametro_n2$p_value < 0.05, "Sim", "Não")

# Tabela de parâmetros interativa
datatable(parametro_n2, options = list(pageLength = 10), 
          caption = "Parâmetros do Modelo GARCH para n2")
Resultados do Teste de Ljung-Box n2
ljung_box_n2 <- data.frame(
  Test = c("Ljung-Box (Lag 1)", "Ljung-Box (Lag 5)", "Ljung-Box (Lag 9)"),
  Statistic = c(0.00455, 0.21666, 2.39779),
  p_value = c(0.9462, 1.0000, 0.9605)
)

# Tabela do Teste de Ljung-Box interativa
datatable(ljung_box_n2, options = list(pageLength = 10), 
          caption = "Teste de Ljung-Box em Resíduos Padronizados para n2")
Resultados do Teste ARCH n2
arch_test_n2 <- data.frame(
  Lag = c("Lag 3", "Lag 5", "Lag 7"),
  Statistic = c(0.002263, 0.031825, 0.113708),
  p_value = c(0.9621, 0.9974, 0.9992)
)

# Tabela do Teste ARCH interativa
datatable(arch_test_n2, options = list(pageLength = 10), 
          caption = "Teste ARCH para n2")
Verificar heterocedasticidade nos resíduos de n
model_garch_n <- ugarchspec(variance.model = list(model = "sGARCH"), mean.model = list(armaOrder = c(1, 1)))

fit_garch_n <- ugarchfit(model_garch_n, data = residuos_n)
fit_garch_n
## 
## *---------------------------------*
## *          GARCH Model Fit        *
## *---------------------------------*
## 
## Conditional Variance Dynamics    
## -----------------------------------
## GARCH Model  : sGARCH(1,1)
## Mean Model   : ARFIMA(1,0,1)
## Distribution : norm 
## 
## Optimal Parameters
## ------------------------------------
##         Estimate  Std. Error   t value Pr(>|t|)
## mu     -0.000046    0.000302  -0.15054  0.88034
## ar1    -0.369145    0.478733  -0.77109  0.44066
## ma1     0.393122    0.473416   0.83039  0.40632
## omega   0.000002    0.000002   1.49967  0.13370
## alpha1  0.079279    0.007554  10.49549  0.00000
## beta1   0.919721    0.007840 117.30846  0.00000
## 
## Robust Standard Errors:
##         Estimate  Std. Error  t value Pr(>|t|)
## mu     -0.000046    0.000437 -0.10421 0.917007
## ar1    -0.369145    0.449445 -0.82134 0.411455
## ma1     0.393122    0.443653  0.88610 0.375562
## omega   0.000002    0.000007  0.31335 0.754014
## alpha1  0.079279    0.020791  3.81308 0.000137
## beta1   0.919721    0.024246 37.93364 0.000000
## 
## LogLikelihood : 8194.22 
## 
## Information Criteria
## ------------------------------------
##                     
## Akaike       -4.3612
## Bayes        -4.3513
## Shibata      -4.3612
## Hannan-Quinn -4.3577
## 
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.1978  0.6565
## Lag[2*(p+q)+(p+q)-1][5]    0.2728  1.0000
## Lag[4*(p+q)+(p+q)-1][9]    1.9567  0.9863
## d.o.f=2
## H0 : No serial correlation
## 
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
##                         statistic p-value
## Lag[1]                     0.3288  0.5664
## Lag[2*(p+q)+(p+q)-1][5]    0.4581  0.9639
## Lag[4*(p+q)+(p+q)-1][9]    0.7423  0.9945
## d.o.f=2
## 
## Weighted ARCH LM Tests
## ------------------------------------
##             Statistic Shape Scale P-Value
## ARCH Lag[3]    0.1515 0.500 2.000  0.6971
## ARCH Lag[5]    0.2069 1.440 1.667  0.9639
## ARCH Lag[7]    0.2803 2.315 1.543  0.9938
## 
## Nyblom stability test
## ------------------------------------
## Joint Statistic:  27.1452
## Individual Statistics:             
## mu     5.2274
## ar1    0.1409
## ma1    0.1407
## omega  5.3014
## alpha1 0.6170
## beta1  0.4298
## 
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic:          1.49 1.68 2.12
## Individual Statistic:     0.35 0.47 0.75
## 
## Sign Bias Test
## ------------------------------------
##                    t-value     prob sig
## Sign Bias           2.8062 0.005039 ***
## Negative Sign Bias  0.4544 0.649539    
## Positive Sign Bias  0.2807 0.778927    
## Joint Effect       11.1105 0.011143  **
## 
## 
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
##   group statistic p-value(g-1)
## 1    20     84.96    2.556e-10
## 2    30    125.66    5.348e-14
## 3    40    136.12    1.102e-12
## 4    50    153.08    1.218e-12
## 
## 
## Elapsed time : 0.61166
summary(fit_garch_n)
##    Length     Class      Mode 
##         1 uGARCHfit        S4
Resultados dos parâmetros para n
parametro_n <- data.frame(
  Parameter = c("mu", "ar1", "ma1", "omega", "alpha1", "beta1"),
  Estimate = c(-0.000046, -0.369145, 0.393122, 0.000002, 0.079279, 0.919721),
  Std_Error = c(0.000302, 0.478733, 0.473416, 0.000002, 0.007554, 0.007840),
  t_value = c(-0.15054, -0.77109, 0.83039, 1.49967, 10.49549, 117.30846),
  p_value = c(0.88034, 0.44066, 0.40632, 0.13370, 0.00000, 0.00000)
)

# Adicionando uma coluna de significância
parametro_n$Significativo <- ifelse(parametro_n$p_value < 0.05, "Sim", "Não")

# Tabela de parâmetros interativa
datatable(parametro_n, options = list(pageLength = 10), 
          caption = "Parâmetros do Modelo GARCH para n")
Resultados do Teste de Ljung-Box para n
ljung_box_n <- data.frame(
  Test = c("Ljung-Box (Lag 1)", "Ljung-Box (Lag 5)", "Ljung-Box (Lag 9)"),
  Statistic = c(0.1978, 0.2728, 1.9567),
  p_value = c(0.6565, 1.0000, 0.9863)
)

# Tabela do Teste de Ljung-Box interativa
datatable(ljung_box_n, options = list(pageLength = 5), 
          caption = "Teste de Ljung-Box em Resíduos Padronizados para n")
Resultados do Teste ARCH para n
arch_test_n <- data.frame(
  Lag = c("Lag 3", "Lag 5", "Lag 7"),
  Statistic = c(0.1515, 0.2069, 0.2803),
  p_value = c(0.6971, 0.9639, 0.9938)
)

# Tabela do Teste ARCH interativa
datatable(arch_test_n, options = list(pageLength = 5), 
          caption = "Teste ARCH para n")
Resumo dos Resultados dos Parâmetros

Modelo n1: Os parâmetros alpha1 (0.107453) e beta1 (0.891544) são significativos, indicando que a volatilidade é influenciada por enventos passados e sua persistência, com beta1 próximo de 1 mostrando alta persistência.

Outros parâmetros não são significativos, sugerindo que a média do modelo não é afetada.

Modelo n2: Os parâmetros alpha1 (0.082333) e beta1 (0.907772) também são significativos, confirmando a influência da estrutura GARCH na volatilidade. O parâmetro ar1 é significativo, indicando que os valores passados impactam a média do modelo.

Modelo n: Os parâmetros alpha1 (0.079279) e beta1 (0.919721) são significativos, mostrando uma volatilidade,os parâmetros mu, ar1 e ma1 não são significativos, indicando que a média do modelo não é fortemente influenciada por eles.

Resumindo

os modelos GARCH se mostraram eficazes em capturar a dinâmica da volatilidade nos dados analisados, importantes para a modelagem e previsão de séries temporais financeiras.

Comparar AIC e BIC dos modelos ajustados

aic_valores <- c(AIC(modelo_n1), AIC(modelo_n2), AIC(modelo_n))
bic_valores <- c(BIC(modelo_n1), BIC(modelo_n2), BIC(modelo_n))

comparacao <- data.frame(
  Modelo = c("n1", "n2", "n"),
  AIC = round(aic_valores,4),
  BIC = round(bic_valores,4))

comparacao
##   Modelo        AIC        BIC
## 1     n1  -6988.532  -6957.718
## 2     n2  -8633.638  -8616.170
## 3      n -14288.567 -14269.876
# Tabela do Teste ARCH interativa
datatable(comparacao, options = list(pageLength = 5), 
          caption = "Comparação dos modelos AIC e BIC ")

Conclusão

Os critérios AIC e BIC sugerem que o modelo n é o melhor entre os três, n possui o menor valor AIC e BIC, indicando que ele se ajusta melhor aos dados em comparação com os modelos n1 e n2