·
Ciências Atuariais ·
Econometria
· 2023/2
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
Texto de pré-visualização
Parte 2 Raphael 2023-12-11 Parte 2: Use os arquivos file1 (dados nacionais) e file2 (dados estaduais) Questão 1 Letra a library(tidyverse) ## Warning: package 'tidyverse' was built under R version 4.3.2 ## Warning: package 'ggplot2' was built under R version 4.3.2 ## Attaching core tidyverse packages tidyverse 2.0.0 ── ──────────────────────── ── ## dplyr 1.1.3 readr 2.1.4 ✔ ✔ ## forcats 1.0.0 stringr 1.5.0 ✔ ✔ ## ggplot2 3.4.4 tibble 3.2.1 ✔ ✔ ## lubridate 1.9.2 tidyr 1.3.0 ✔ ✔ ## purrr 1.0.2 ✔ ## Conflicts tidyverse_conflicts() ── ────────────────────────────────────────── ── ## dplyr::filter() masks stats::filter() ✖ ## dplyr::lag() masks stats::lag() ✖ ## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors # Converter a variável X para fator dados1$disease <- as.factor(dados1$disease) # Filtrar dados para uma característica específica de X (por exemplo, X == "A") dados_mort <- dados1 %>% filter(disease == "total") # Criar uma série temporal anual mortalidade <- ts(dados_mort$m_rate, start = c(1925, 01), frequency = 12) plot(mortalidade) # Filtrar dados para uma característica específica de X (por exemplo, X == "A") dados_cancer <- dados1 %>% filter(disease == "câncer") # Criar uma série temporal anual câncer <- ts(dados_cancer$m_rate, start = c(1925, 01), frequency = 12) plot(câncer) # Filtrar dados para uma característica específica de X (por exemplo, X == "A") dados_tub <- dados1 %>% filter(disease == "tuberculose") # Criar uma série temporal anual tubercolise <- ts(dados_tub$m_rate, start = c(1925, 01), frequency = 12) plot(tubercolise) # Filtrar dados para uma característica específica de X (por exemplo, X == "A") dados_pne <- dados1 %>% filter(disease == "pneumonia") # Criar uma série temporal anual pneumonia <- ts(dados_pne$m_rate, start = c(1925, 01), frequency = 12) plot(pneumonia) Há uma tendência geral na queda da mortalidade para todas as doenças analisadas Letra b é notavel uma queda significate na mortalidade por tuberculose a partir de 1937. Letra c Sim, com a introdução da Sulfa houve uma queda na doença analisada (colocar a doença). Questão 2 pos37 <- dados1 %>% mutate(dummy = ifelse(dados1$year >= 1937, 1, 0)) modelo1 <- lm(dados1$lnm_rate ~ dados1$year + pos37$dummy) summary(modelo1) ## ## Call: ## lm(formula = dados1$lnm_rate ~ dados1$year + pos37$dummy) ## ## Residuals: ## Min 1Q Median 3Q Max ## -5.3445 -0.5910 0.1742 1.4362 2.7701 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 38.56887 105.50045 0.366 0.715 ## dados1$year -0.01760 0.05465 -0.322 0.748 ## pos37$dummy -0.17530 0.62052 -0.282 0.778 ## ## Residual standard error: 2.021 on 149 degrees of freedom ## Multiple R-squared: 0.007457, Adjusted R-squared: -0.005866 ## F-statistic: 0.5597 on 2 and 149 DF, p-value: 0.5726 Conforme evidenciado pelo resumo estatístico do modelo, observamos que o modelo não atinge significância estatística. Essa constatação sugere que, com base nos dados disponíveis, não há evidência estatística suficiente para afirmar que o sulfa tenha um efeito significativo sobre a taxa de mortalidade. Questão 3 pos37 <- dados1 %>% mutate(dummy = ifelse(dados1$year >= 1937, 1, 0)) trat <- dados2$statenum tratamento <- trat[1:152] modelo2 <- lm(dados1$lnm_rate ~ dados1$year + pos37$dummy + tratamento + pos37$dummy*tratamento) summary(modelo2) ## ## Call: ## lm(formula = dados1$lnm_rate ~ dados1$year + pos37$dummy + tratamento + ## pos37$dummy * tratamento) ## ## Residuals: ## Min 1Q Median 3Q Max ## -5.3222 -0.5916 0.1774 1.4602 2.7533 ## ## Coefficients: (1 not defined because of singularities) ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 35.32430 112.89942 0.313 0.755 ## dados1$year -0.01592 0.05848 -0.272 0.786 ## pos37$dummy -0.16902 0.62721 -0.269 0.788 ## tratamentoArizona -0.04790 0.57958 -0.083 0.934 ## pos37$dummy:tratamentoArizona NA NA NA NA ## ## Residual standard error: 2.028 on 148 degrees of freedom ## Multiple R-squared: 0.007503, Adjusted R-squared: -0.01262 ## F-statistic: 0.3729 on 3 and 148 DF, p-value: 0.7727 Também não apresentou efeito nas doenças trataveis Questão 4 pos37 <- dados1 %>% mutate(dummy = ifelse(dados1$year >= 1937, 1, 0)) trat <- dados2$statenum tratamento <- trat[1:152] modelo3 <- lm(dados1$lnm_rate ~ dados1$year + pos37$dummy + pos37$dummy*tratamento) summary(modelo3) ## ## Call: ## lm(formula = dados1$lnm_rate ~ dados1$year + pos37$dummy + pos37$dummy * ## tratamento) ## ## Residuals: ## Min 1Q Median 3Q Max ## -5.3222 -0.5916 0.1774 1.4602 2.7533 ## ## Coefficients: (1 not defined because of singularities) ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 35.32430 112.89942 0.313 0.755 ## dados1$year -0.01592 0.05848 -0.272 0.786 ## pos37$dummy -0.16902 0.62721 -0.269 0.788 ## tratamentoArizona -0.04790 0.57958 -0.083 0.934 ## pos37$dummy:tratamentoArizona NA NA NA NA ## ## Residual standard error: 2.028 on 148 degrees of freedom ## Multiple R-squared: 0.007503, Adjusted R-squared: -0.01262 ## F-statistic: 0.3729 on 3 and 148 DF, p-value: 0.7727 Não apresentou mudanças. TRABALHO FINAL – ATUALIZAÇÃO EM ECONOMIA 2023-12-11 Parte 1: Modelo de Previsão para o ADR da Vale e Relação entre o preço do minério e o preço da ação da Vale Considere as séries da ADR da Vale (Pt) e o preço do minério de ferro (Ot) de 2009M1 a 2020M12. Ignore as 24 observações finais para realizar o teste de seleção do modelo. A amostra de estimação vai de 2009M1 a 2018M12. a) Apresente um gráfico das séries da Vale e do minério de ferro. As séries apresentam # a) Gráfico das séries par(mfrow = c(2, 1)) plot(Pt, type = "l", col = "blue", main = "ADR da Vale (Pt)") plot(Ot, type = "l", col = "red", main = "Preço do Minério de Ferro (Ot)") b) tendência linear ou estocástica? As séries apresentam sazonalidade? # b) teste de Tendência e Szonalidade par(mfrow = c(1, 1)) plot(decompose(Pt)) Decomposition of additive time series Time observed trend random seasonal plot(decompose(Ot)) ## vale ### teste de Tendência c <- (length(Pt))/2 metade1 <- Pt[1:(length(Pt-c)/2)] metade1 ## [1] 10.353828 9.458601 9.759454 12.284701 14.249063 13.118068 14.680625 ## [8] 14.293707 17.210489 19.129721 21.516243 21.786419 19.354864 20.908356 ## [15] 24.157932 23.140425 20.548273 18.402002 21.009266 20.215752 23.631647 ## [22] 24.537048 24.185863 26.392218 26.731087 26.270605 25.595224 25.940336 ## [29] 25.054939 24.814186 25.194746 22.410761 18.093672 20.187408 18.471359 ## [36] 17.041321 20.100016 19.972902 18.534916 18.064768 14.899364 16.152508 ## [43] 14.687795 13.320732 14.565737 15.157709 14.421338 17.342009 16.688375 ## [50] 15.712058 14.305504 14.205600 11.969611 10.930583 11.404380 11.977923 ## [57] 12.975390 13.359801 12.776039 12.717664 metade2 <- Pt[(c+1):length(Pt)] metade2 ## [1] 11.341654 11.817001 11.533461 11.335646 10.932637 11.344218 12.304577 ## [8] 11.198451 9.440654 8.760536 7.822837 7.102199 6.103723 6.442337 ## [15] 4.905553 6.886059 5.648720 5.281105 4.716233 4.438280 3.765814 ## [22] 3.986632 3.081410 3.008261 2.240195 2.688234 3.849478 5.184450 ## [29] 3.593455 4.626688 5.257600 4.818705 5.029008 6.327407 7.762960 ## [36] 7.009296 9.364125 9.520501 8.738624 8.157325 7.957669 8.318950 ## [43] 9.535892 10.524659 9.573922 9.307716 10.172887 11.751009 12.577328 ## [50] 13.192261 12.359420 13.447670 13.214474 12.456584 14.244425 13.200000 ## [57] 14.840000 15.100000 13.700000 13.190000 sinais <- NULL for(i in 1:length(metade1)) sinais[i] = ifelse(metade1[i]<metade2[i],"p","n") T2 <- sum(sinais=="p") n <- length(metade1)-sum(metade1==metade2) t <- qnorm(0.975,mean = n*0.5, sd=sqrt(n*0.5*0.5)) print(paste("T2=",T2,"n*-t=",round(n-t,4))) ## [1] "T2= 11 n*-t= 22.4091" #### T2 < n*-t -> A série não possuí tendência ### Teste de Sazonalidade s1 <- spectrum(Pt) periodo <- 1/(s1$freq) spec1 <- s1$spec #plotar plot(periodo,spec1,type="o",xlab='Periodos',ylab='Valores do Periodograma',xaxt = "n") axis(1,seq(0,150, by=12)) cbind(periodo,spec1) ## periodo spec1 ## [1,] 10.0000000 5.693789e+01 ## [2,] 5.0000000 6.598663e+00 ## [3,] 3.3333333 2.395716e+01 ## [4,] 2.5000000 1.386199e+00 ## [5,] 2.0000000 4.010540e-01 ## [6,] 1.6666667 7.774106e-01 ## [7,] 1.4285714 1.529666e+00 ## [8,] 1.2500000 1.513302e-02 ## [9,] 1.1111111 6.792410e-01 ## [10,] 1.0000000 1.369975e+00 ## [11,] 0.9090909 6.207468e-01 ## [12,] 0.8333333 4.194692e-01 ## [13,] 0.7692308 9.171861e-01 ## [14,] 0.7142857 2.568829e-01 ## [15,] 0.6666667 9.845760e-02 ## [16,] 0.6250000 1.303072e-01 ## [17,] 0.5882353 1.166799e-01 ## [18,] 0.5555556 3.192658e-01 ## [19,] 0.5263158 1.084073e-02 ## [20,] 0.5000000 2.795698e-02 ## [21,] 0.4761905 1.567796e-02 ## [22,] 0.4545455 2.262115e-01 ## [23,] 0.4347826 3.269002e-01 ## [24,] 0.4166667 2.570770e-02 ## [25,] 0.4000000 1.217558e-01 ## [26,] 0.3846154 2.574289e-01 ## [27,] 0.3703704 6.759097e-02 ## [28,] 0.3571429 8.091508e-03 ## [29,] 0.3448276 1.394748e-04 ## [30,] 0.3333333 8.363565e-02 ## [31,] 0.3225806 2.453137e-02 ## [32,] 0.3125000 1.413494e-01 ## [33,] 0.3030303 2.695569e-02 ## [34,] 0.2941176 8.310110e-02 ## [35,] 0.2857143 1.044589e-01 ## [36,] 0.2777778 1.257141e-01 ## [37,] 0.2702703 4.914455e-02 ## [38,] 0.2631579 8.593353e-02 ## [39,] 0.2564103 7.091187e-02 ## [40,] 0.2500000 2.005517e-01 ## [41,] 0.2439024 3.264461e-02 ## [42,] 0.2380952 4.252705e-02 ## [43,] 0.2325581 1.132789e-01 ## [44,] 0.2272727 2.012266e-02 ## [45,] 0.2222222 3.066336e-02 ## [46,] 0.2173913 8.672168e-02 ## [47,] 0.2127660 3.918855e-02 ## [48,] 0.2083333 6.572032e-02 ## [49,] 0.2040816 2.221895e-02 ## [50,] 0.2000000 5.777742e-02 ## [51,] 0.1960784 1.711454e-02 ## [52,] 0.1923077 4.636525e-02 ## [53,] 0.1886792 5.259997e-03 ## [54,] 0.1851852 2.293379e-02 ## [55,] 0.1818182 1.250707e-02 ## [56,] 0.1785714 8.775670e-03 ## [57,] 0.1754386 5.014230e-02 ## [58,] 0.1724138 1.110603e-02 ## [59,] 0.1694915 8.190267e-02 ## [60,] 0.1666667 4.718979e-02 sum(spec1) ## [1] 99.43014 max(spec1) ## [1] 56.93789 g <- max(spec1)/sum(spec1) g ## [1] 0.5726422 alpha <- 0.05 n0 <- length(Pt)/2 n0 ## [1] 60 zalpha <- 1-(alpha/n0)^(1/(n0-1)) zalpha ## p-valor ## [1] 0.113231 g ## [1] 0.5726422 #### g > zalpha -> a série tem sazonalidade ## Preço do Minério ### teste de Tendência c <- (length(Ot))/2 metade1 <- Ot[1:(length(Ot-c)/2)] metade1 ## [1] 72.50909 75.59000 64.07273 59.78182 62.69048 71.65909 83.95217 ## [8] 97.66667 80.71364 86.78636 99.25714 105.24783 125.91429 127.61500 ## [15] 139.76957 172.46818 161.34762 143.63182 126.36364 145.34091 140.62727 ## [22] 148.48095 160.55000 168.52609 179.63000 187.18000 169.35652 179.26111 ## [29] 177.09500 170.87727 172.97619 177.45000 177.22727 150.43333 135.54091 ## [36] 136.45500 140.34762 140.39524 144.66364 147.64737 136.27273 134.62105 ## [43] 127.93636 107.79545 99.47000 113.94783 120.34545 128.87368 150.49091 ## [50] 154.63889 139.87000 137.39091 124.00952 114.81500 127.19130 137.05500 ## [57] 134.19000 132.57000 136.32000 135.79000 metade2 <- Ot[(c+1):length(Ot)] metade2 ## [1] 128.12 121.37 111.83 114.58 100.56 92.74 96.05 92.61 82.38 81.06 ## [11] 73.73 68.39 68.23 62.75 58.05 52.28 60.30 62.63 52.39 56.19 ## [21] 56.95 53.12 46.86 40.50 41.88 46.83 56.20 60.92 55.13 51.98 ## [31] 57.26 60.89 57.79 59.09 73.10 80.02 80.41 89.44 87.65 70.22 ## [41] 62.43 57.48 67.74 76.07 71.53 61.66 64.24 72.25 76.34 77.46 ## [51] 70.35 65.75 66.10 65.04 64.56 67.15 68.44 73.41 73.26 69.15 sinais <- NULL for(i in 1:length(metade1)) sinais[i] = ifelse(metade1[i]<metade2[i],"p","n") T2 <- sum(sinais=="p") n <- length(metade1)-sum(metade1==metade2) t <- qnorm(0.975,mean = n*0.5, sd=sqrt(n*0.5*0.5)) print(paste("T2=",T2,"n*-t=",round(n-t,4))) ## [1] "T2= 8 n*-t= 22.4091" #### T2 < n*-t -> A série não possuí tendência ### Teste de Sazonalidade s1 <- spectrum(Ot) periodo <- 1/(s1$freq) spec1 <- s1$spec #plotar plot(periodo,spec1,type="o",xlab='Periodos',ylab='Valores do Periodograma',xaxt = "n") axis(1,seq(0,150, by=12)) cbind(periodo,spec1) ## periodo spec1 ## [1,] 10.0000000 1.637157e+03 ## [2,] 5.0000000 5.744472e+02 ## [3,] 3.3333333 7.889075e+02 ## [4,] 2.5000000 3.200089e+02 ## [5,] 2.0000000 3.019658e+01 ## [6,] 1.6666667 3.783609e+01 ## [7,] 1.4285714 2.156568e+01 ## [8,] 1.2500000 2.178265e+01 ## [9,] 1.1111111 4.459943e+01 ## [10,] 1.0000000 9.504421e+01 ## [11,] 0.9090909 2.478183e+01 ## [12,] 0.8333333 2.546553e+01 ## [13,] 0.7692308 6.882903e+01 ## [14,] 0.7142857 3.656600e+01 ## [15,] 0.6666667 7.074864e+01 ## [16,] 0.6250000 7.344399e-01 ## [17,] 0.5882353 2.164903e-01 ## [18,] 0.5555556 5.435062e+00 ## [19,] 0.5263158 5.313175e-01 ## [20,] 0.5000000 1.394866e+01 ## [21,] 0.4761905 1.428591e-01 ## [22,] 0.4545455 1.490532e+01 ## [23,] 0.4347826 2.620065e+00 ## [24,] 0.4166667 3.485241e+00 ## [25,] 0.4000000 2.854676e+00 ## [26,] 0.3846154 2.270166e+00 ## [27,] 0.3703704 1.707504e+01 ## [28,] 0.3571429 3.909845e+00 ## [29,] 0.3448276 6.141917e+00 ## [30,] 0.3333333 7.349617e+00 ## [31,] 0.3225806 1.663936e+00 ## [32,] 0.3125000 1.127182e+00 ## [33,] 0.3030303 8.718777e-01 ## [34,] 0.2941176 4.055486e+00 ## [35,] 0.2857143 6.443484e+00 ## [36,] 0.2777778 2.472051e+00 ## [37,] 0.2702703 6.819434e+00 ## [38,] 0.2631579 2.468834e+00 ## [39,] 0.2564103 1.075086e+00 ## [40,] 0.2500000 5.649809e+00 ## [41,] 0.2439024 4.469921e+00 ## [42,] 0.2380952 1.002951e-01 ## [43,] 0.2325581 3.903200e-01 ## [44,] 0.2272727 4.418454e-02 ## [45,] 0.2222222 3.306871e-01 ## [46,] 0.2173913 2.319796e+00 ## [47,] 0.2127660 1.573589e+00 ## [48,] 0.2083333 2.546837e+00 ## [49,] 0.2040816 2.023683e+00 ## [50,] 0.2000000 1.038388e+00 ## [51,] 0.1960784 1.824214e-01 ## [52,] 0.1923077 5.857813e-01 ## [53,] 0.1886792 1.354434e-01 ## [54,] 0.1851852 5.888990e-01 ## [55,] 0.1818182 7.426379e-01 ## [56,] 0.1785714 4.778662e-01 ## [57,] 0.1754386 5.444561e-01 ## [58,] 0.1724138 6.971903e-01 ## [59,] 0.1694915 9.046160e-01 ## [60,] 0.1666667 1.617061e+00 sum(spec1) ## [1] 3933.518 max(spec1) ## [1] 1637.157 g <- max(spec1)/sum(spec1) g ## [1] 0.4162068 alpha <- 0.05 n0 <- length(Ot)/2 n0 ## [1] 60 zalpha <- 1-(alpha/n0)^(1/(n0-1)) zalpha ## p-valor ## [1] 0.113231 g ## [1] 0.4162068 #### g > zalpha -> a série tem sazonalidade Após uma análise aprofundada, podemos concluir que ambas as séries temporais, Pt (ADR da Vale) e Ot (preço do minério de ferro), não exibem uma tendência discernível ao longo do tempo. Esta observação é respaldada por uma análise visual dos gráficos de decomposição, onde a componente de tendência parece ser praticamente inexistente. Ao mesmo tempo, a presença de sazonalidade nas séries é evidente nos mesmos gráficos de decomposição. Padrões recorrentes e ciclos visíveis sugerem a influência sazonal ao longo dos períodos de observação. Essa conclusão é robustecida pelos resultados dos testes de tendência e sazonalidade, onde os testes específicos confirmam a ausência de uma tendência global significativa, mas indicam fortemente a existência de padrões sazonais. c) Apresente o correlograma das séries da Vale e minério em nível e em primeiras diferenças. Baseado em inspeção visual, o que pode ser dito sobre a presença de uma raiz unitária nas séries? par(mfrow = c(2, 1)) # c) Correlograma acf(Pt, main = "Correlograma - ADR da Vale") acf(diff(Pt), main = "Correlograma - 1ª Diferença ADR da Vale") acf(Ot, main = "Correlograma - Preço do Minério") acf(diff(Ot), main = "Correlograma - 1ª Diferença Preço do Minério") Ao explorar o correlograma das primeiras diferenças, observamos que a série temporal da ADR da Vale se torna estacionária após a primeira diferença. Essa estacionarização sugere que a remoção da tendência e a aplicação de uma diferenciação de ordem um são eficazes para tornar a série estacionária, indicando um comportamento mais estável ao longo do tempo. Por outro lado, ao analisar a série temporal do Preço do Minério, notamos que a estacionarização não é alcançada após a primeira diferença. Isso sugere que a remoção da sazonalidade por si só pode não ser suficiente para tornar a série estacionária. Nesse contexto, pode ser necessário considerar estratégias adicionais, como diferenças sazonais ou outros métodos de transformação, para atingir a estacionariedade desejada. d) Teste a presença de raiz unitária em cada uma das séries, utilizando o teste ADFGLS. As séries são estacionárias na diferença? # d) Teste ADFGLS diff_Pt <- diff(Pt) diff_Ot <- diff(Ot) require(fUnitRoots) ##carrega o pacote ## Carregando pacotes exigidos: fUnitRoots ## Warning: package 'fUnitRoots' was built under R version 4.3.2 unitrootTest(diff_Pt , lags = 1, type ="nc", title = NULL,description = "H0=n?o estacion?ria ,H1=estacion?ria, RH0 para pvalue< 0.05")#McKinnon ## ## Title: ## Augmented Dickey-Fuller Test ## ## Test Results: ## PARAMETER: ## Lag Order: 1 ## STATISTIC: ## DF: -7.9197 ## P VALUE: ## t: < 2.2e-16 ## n: 0.04857 ## ## Description: ## Sun Dec 10 23:19:12 2023 by user: karol adfTest(diff_Ot, lags = 1, type ="ct", title = "Raiz",description = "H0=n?o estacion?ria ,H1=estacion?ria, RH0 para pvalue< 0.05")#Trapletti ## Warning in adfTest(diff_Ot, lags = 1, type = "ct", title = "Raiz", description ## = "H0=n?o estacion?ria\n,H1=estacion?ria, RH0 para pvalue< 0.05"): p-value ## smaller than printed p-value ## ## Title: ## Raiz ## ## Test Results: ## PARAMETER: ## Lag Order: 1 ## STATISTIC: ## Dickey-Fuller: -8.0604 ## P VALUE: ## 0.01 ## ## Description: ## Sun Dec 10 23:19:12 2023 by user: karol Ao realizar a primeira diferenciação nas séries temporais, observamos que ambas, a ADR da Vale e o Preço do Minério, tornaram-se estacionárias. Esse processo de diferenciação foi eficaz em remover as sazonalidades e padrões não estacionários, resultando em séries estacionárias, o que é uma condição essencial para muitos métodos de modelagem e previsão. e) Utilize os modelos de previsão ARIMA (1,1,0), ARIMA (0,1,1), ARIMA (2,1,0) e ARIMA (1,1,1) para a Vale. Apesar da série ser não estacionária, calcule a previsão e o erro de previsão um passo a frente. Qual modelo possui melhor ajuste dentro da amostra? # e) Modelos ARIMA modelo1 <- arima(diff_Pt, order = c(1, 1, 0)) modelo1 ## ## Call: ## arima(x = diff_Pt, order = c(1, 1, 0)) ## ## Coefficients: ## ar1 ## -0.4834 ## s.e. 0.0801 ## ## sigma^2 estimated as 3.078: log likelihood = -233.89, aic = 471.78 modelo2 <- arima(diff_Pt, order = c(0, 1, 1)) modelo2 ## ## Call: ## arima(x = diff_Pt, order = c(0, 1, 1)) ## ## Coefficients: ## ma1 ## -0.9435 ## s.e. 0.0386 ## ## sigma^2 estimated as 2.023: log likelihood = -210.12, aic = 424.25 modelo3 <- arima(diff_Pt, order = c(2, 1, 0)) modelo3 ## ## Call: ## arima(x = diff_Pt, order = c(2, 1, 0)) ## ## Coefficients: ## ar1 ar2 ## -0.6937 -0.4255 ## s.e. 0.0836 0.0836 ## ## sigma^2 estimated as 2.519: log likelihood = -222.27, aic = 450.53 modelo4 <- arima(diff_Pt, order = c(1, 1, 1)) modelo4 ## ## Call: ## arima(x = diff_Pt, order = c(1, 1, 1)) ## ## Coefficients: ## ar1 ma1 ## -0.0602 -0.9339 ## s.e. 0.0992 0.0413 ## ## sigma^2 estimated as 2.018: log likelihood = -209.94, aic = 425.88 Após a aplicação de diferentes modelos ARIMA para as séries temporais da ADR da Vale, a seleção do melhor modelo foi realizada utilizando o critério de Informação de Akaike (AIC). De acordo com os resultados, o Modelo 2, representado por ARIMA(0,1,1), demonstrou ser o mais adequado, apresentando o menor valor de AIC entre os modelos avaliados. O AIC é uma métrica que leva em consideração a qualidade do ajuste do modelo e a complexidade do modelo, favorecendo modelos que equilibram bem a explicação dos dados e a simplicidade. Portanto, a escolha do ARIMA(0,1,1) como o melhor modelo sugere que ele fornece um ajuste satisfatório, considerando a trade-off entre precisão e complexidade. f) Especifique agora um modelo de previsão da ADR da Vale com o preço do minério de ferro e com o DJA defasados como explicativas adicionais, utilizando: i: um modelo estático l n(Pt)=α+β0⋅l n(M t −1)+β1⋅l n(Ot 1+−1)+ϵ # f) Modelos com variáveis explicativas # i. Modelo estático static_model <- lm(log(Pt) ~ log(lag(ts_DJA, 1)) + log(lag(Ot, 1)), na.action = na.exclude) summary(static_model) ## ## Call: ## lm(formula = log(Pt) ~ log(lag(ts_DJA, 1)) + log(lag(Ot, 1)), ## na.action = na.exclude) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.73982 -0.23686 -0.01999 0.18262 0.68095 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) -1.48611 1.15092 -1.291 0.199 ## log(lag(ts_DJA, 1)) -0.12931 0.10664 -1.213 0.228 ## log(lag(Ot, 1)) 1.11149 0.08201 13.553 <2e-16 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.3114 on 117 degrees of freedom ## Multiple R-squared: 0.7026, Adjusted R-squared: 0.6975 ## F-statistic: 138.2 on 2 and 117 DF, p-value: < 2.2e-16 ii: um modelo ADL (1,1) l n(Pt)=α+ρ⋅l n(Pt −1)+β0⋅l n(M t −1)+β1⋅l n(Ot 1+−1)+ϵ # ii. Modelo ADL (1,1) adl_model <- lm(log(Pt) ~ log(lag(Pt,1))+log(lag(ts_DJA, 1)) + log(lag(Ot, 1)), na.action = na.exclude) summary(adl_model) ## Warning in summary.lm(adl_model): essentially perfect fit: summary may be ## unreliable ## ## Call: ## lm(formula = log(Pt) ~ log(lag(Pt, 1)) + log(lag(ts_DJA, 1)) + ## log(lag(Ot, 1)), na.action = na.exclude) ## ## Residuals: ## Min 1Q Median 3Q Max ## -1.043e-16 -2.959e-18 1.993e-18 4.020e-18 1.055e-16 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) -6.486e-16 8.686e-17 -7.468e+00 1.65e-11 *** ## log(lag(Pt, 1)) 1.000e+00 6.928e-18 1.443e+17 < 2e-16 *** ## log(lag(ts_DJA, 1)) -4.484e-18 8.041e-18 -5.580e-01 0.578 ## log(lag(Ot, 1)) -2.525e-18 9.852e-18 -2.560e-01 0.798 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.334e-17 on 116 degrees of freedom ## Multiple R-squared: 1, Adjusted R-squared: 1 ## F-statistic: 2.335e+34 on 3 and 116 DF, p-value: < 2.2e-16 g) É necessário utilizar um modelo ADL (2,2)? Calcule as previsões um passo a frente fora da amostra Se o coeficiente de determinação (R-squared) para o modelo ADL (1,1) é igual a 1, isso indicaria que o modelo explica 100% da variação na série ADR da Vale com as variáveis explicativas incluídas. Nesse caso, pode ser interpretado que o modelo ADL (1,1) é altamente eficaz em explicar e prever a variação na série ADR da Vale com base nas variáveis consideradas. h) Compare as previsões fora da amostra um passo a frente utilizando o erro quadrático médio para o melhor modelo da questão 3 e os modelos da modelo da questão 4. Qual o melhor modelo de previsão? # h) Comparação de previsões # Criar objetos para previsão h <- 24 # Número de períodos a serem previstos # Previsão ARIMA forecast_arima <- forecast(modelo2, h = h) forecast_arima ## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 ## Jan 2019 0.1370066 -1.685981 1.959994 -2.651012 2.925025 ## Feb 2019 0.1370066 -1.688891 1.962904 -2.655463 2.929476 ## Mar 2019 0.1370066 -1.691797 1.965810 -2.659907 2.933920 ## Apr 2019 0.1370066 -1.694698 1.968712 -2.664344 2.938358 ## May 2019 0.1370066 -1.697595 1.971608 -2.668775 2.942788 ## Jun 2019 0.1370066 -1.700487 1.974500 -2.673198 2.947211 ## Jul 2019 0.1370066 -1.703375 1.977388 -2.677614 2.951627 ## Aug 2019 0.1370066 -1.706258 1.980271 -2.682023 2.956036 ## Sep 2019 0.1370066 -1.709137 1.983150 -2.686426 2.960439 ## Oct 2019 0.1370066 -1.712011 1.986024 -2.690821 2.964834 ## Nov 2019 0.1370066 -1.714880 1.988893 -2.695210 2.969223 ## Dec 2019 0.1370066 -1.717746 1.991759 -2.699592 2.973605 ## Jan 2020 0.1370066 -1.720606 1.994619 -2.703967 2.977980 ## Feb 2020 0.1370066 -1.723463 1.997476 -2.708336 2.982349 ## Mar 2020 0.1370066 -1.726315 2.000328 -2.712697 2.986711 ## Apr 2020 0.1370066 -1.729162 2.003176 -2.717052 2.991066 ## May 2020 0.1370066 -1.732006 2.006019 -2.721401 2.995414 ## Jun 2020 0.1370066 -1.734845 2.008858 -2.725743 2.999756 ## Jul 2020 0.1370066 -1.737679 2.011692 -2.730078 3.004091 ## Aug 2020 0.1370066 -1.740510 2.014523 -2.734407 3.008420 ## Sep 2020 0.1370066 -1.743336 2.017349 -2.738729 3.012742 ## Oct 2020 0.1370066 -1.746158 2.020171 -2.743045 3.017058 ## Nov 2020 0.1370066 -1.748975 2.022989 -2.747354 3.021367 ## Dec 2020 0.1370066 -1.751789 2.025802 -2.751657 3.025670 forecast_arima1 <- ts(forecast_arima$mean , start = c(2019, 1), frequency = 12) plot(forecast_arima) # Previsão modelo estocastico forecast_est <- predict(static_model, na.action = na.exclude, n.ahead = h) forecast_est ## 1 2 3 4 5 6 7 8 ## 2.248875 2.313134 2.121542 2.033618 2.082605 2.230031 2.395939 2.560636 ## 9 10 11 12 13 14 15 16 ## 2.345620 2.429071 2.569751 2.631660 2.836474 2.848113 2.942956 3.172611 ## 17 18 19 20 21 22 23 24 ## 3.108632 2.985077 2.832559 2.993507 2.947775 3.003827 3.091305 3.139026 ## 25 26 27 28 29 30 31 32 ## 3.208537 3.251607 3.138377 3.196494 3.184229 3.145855 3.162778 3.197875 ## 33 34 35 36 37 38 39 40 ## 3.204651 3.009765 2.893051 2.898167 2.925724 2.925495 2.956301 2.978577 ## 41 42 43 44 45 46 47 48 ## 2.895120 2.877295 2.820253 2.631285 2.540532 2.691823 2.753989 2.828372 ## 49 50 51 52 53 54 55 56 ## 2.992432 3.020147 2.903130 2.881246 2.767921 2.683789 2.792339 2.880926 ## 57 58 59 60 61 62 63 64 ## 2.853764 2.835429 2.863067 2.855567 2.794842 2.731119 2.637875 2.663072 ## 65 66 67 68 69 70 71 72 ## 2.515585 2.423563 2.465286 2.420348 2.290753 2.268422 2.159336 2.075421 ## 73 74 75 76 77 78 79 80 ## 2.076898 1.979813 1.896162 1.780208 1.939434 1.985397 1.784156 1.870149 ## 81 82 83 84 85 86 87 88 ## 1.885879 1.800946 1.662068 1.503374 1.546379 1.667846 1.861241 1.951338 ## 89 90 91 92 93 94 95 96 ## 1.840438 1.773908 1.878048 1.947849 1.889211 1.914436 2.144619 2.241687 ## 97 98 99 100 101 102 103 104 ## 2.245834 2.358846 2.338255 2.090710 1.958854 1.864920 2.046519 2.174240 ## 105 106 107 108 109 110 111 112 ## 2.102696 1.934290 1.974810 2.104150 2.160552 2.182826 2.077964 2.002137 ## 113 114 115 116 117 118 119 120 ## 2.006453 1.989881 1.975420 2.016748 2.036382 2.121797 2.115967 2.065096 forecast_est <- ts(forecast_est[97:120], start = c(2019, 1), frequency = 12) plot(forecast_est) # Previsão ADL (1,1) forecast_adl <- predict(adl_model, na.action = na.exclude, n.ahead = h) forecast_adl ## 1 2 3 4 5 6 7 8 ## 2.3373563 2.2469245 2.2782365 2.5083547 2.6566912 2.5739905 2.6865286 2.6598194 ## 9 10 11 12 13 14 15 16 ## 2.8455190 2.9512432 3.0688081 3.0812868 2.9629438 3.0401489 3.1846128 3.1415811 ## 17 18 19 20 21 22 23 24 ## 3.0227769 2.9124595 3.0449636 3.0064621 3.1625868 3.2001841 3.1857683 3.2730692 ## 25 26 27 28 29 30 31 32 ## 3.2858272 3.2684506 3.2424058 3.2557991 3.2210710 3.2114155 3.2266355 3.1095412 ## 33 34 35 36 37 38 39 40 ## 2.8955623 3.0050590 2.9162214 2.8356410 3.0007206 2.9943765 2.9196563 2.8939635 ## 41 42 43 44 45 46 47 48 ## 2.7013185 2.7820753 2.6870169 2.5893216 2.6786720 2.7185092 2.6687089 2.8531318 ## 49 50 51 52 53 54 55 56 ## 2.8147124 2.7544284 2.6606444 2.6536363 2.4823710 2.3915646 2.4339975 2.4830652 ## 57 58 59 60 61 62 63 64 ## 2.5630545 2.5922503 2.5475715 2.5429919 2.4284821 2.4695393 2.4452525 2.4279523 ## 65 66 67 68 69 70 71 72 ## 2.3917525 2.4287082 2.5099713 2.4157755 2.2450253 2.1702571 2.0570473 1.9604045 ## 73 74 75 76 77 78 79 80 ## 1.8088989 1.8628914 1.5903678 1.9294989 1.7314290 1.6641354 1.5510104 1.4902669 ## 81 82 83 84 85 86 87 88 ## 1.3259640 1.3829468 1.1253873 1.1013622 0.8065629 0.9888845 1.3479376 1.6456638 ## 89 90 91 92 93 94 95 96 ## 1.2791141 1.5318413 1.6596746 1.5725052 1.6152227 1.8448905 2.0493637 1.9472373 ## 97 98 99 100 101 102 103 104 ## 2.2368859 2.2534475 2.1677527 2.0989163 2.0741361 2.1185360 2.2550628 2.3537210 ## 105 106 107 108 109 110 111 112 ## 2.2590429 2.2308437 2.3197260 2.4639391 2.5318958 2.5796304 2.5144185 2.5988059 ## 113 114 115 116 117 118 119 120 ## 2.5813127 2.5222493 2.6563656 2.5802168 2.6973262 2.7146947 2.6173958 2.5794590 forecast_adl <- ts(forecast_adl[97:120], start = c(2019, 1), frequency = 12) plot(forecast_adl) # Plotar valores observados e previstos par(mfrow = c(1, 1)) Obs <- vale_adr[121:144] obs <- ts(Obs, start = c(2019, 1), frequency = 12) plot(obs, col = "blue", ylim = range(c(obs, forecast_arima$mean, forecast_adl, forecast_est))) lines(forecast_arima$mean, col = "red", lty = 2) lines(forecast_adl, col = "green", lty = 2) lines(forecast_est, col = "violet", lty = 2) legend("topright", legend = c("Observados", "ARIMA", "ADL (1,1)", "Estatico"), col = c("blue", "red", "green", 'violet'), lty = c(1, 2, 2), cex = 0.8) Ao avaliar os valores previstos pelos modelos considerados, destaca-se que o modelo ADL(1,1) se destaca como aquele que melhor se ajusta aos dados observados das séries temporais. Essa conclusão é fundamentada na capacidade do modelo em gerar previsões mais precisas e coerentes com os padrões presentes nos dados reais. i) Considere o modelo para estudar as relações de longo prazo entre a ADR da Vale, o preço do minério e o índice de mercado. O modelo de fatores é bastante utilizado para prever retornos esperados. Ele é estimado, para nosso caso, através do modelo $$ ln(P_t) = \alpha + \beta \cdot \Delta ln(M_t) + \gamma \cdot \Delta ln(O_t) + \epislon_t $ $ Há relação entre o preço do minério e a ação da Vale, dentro da amostra? # i) Modelo de fatores fatores_model <- lm(diff(log(Pt)) ~ diff(log(ts_DJA)) + diff(log(Ot)), na.action = na.exclude) summary(fatores_model) ## ## Call: ## lm(formula = diff(log(Pt)) ~ diff(log(ts_DJA)) + diff(log(Ot)), ## na.action = na.exclude) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.32475 -0.07643 -0.00985 0.06459 0.38587 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) -0.01034 0.01068 -0.968 0.33523 ## diff(log(ts_DJA)) 1.46667 0.28308 5.181 9.41e-07 *** ## diff(log(Ot)) 0.30338 0.11146 2.722 0.00749 ** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.1135 on 116 degrees of freedom ## Multiple R-squared: 0.2324, Adjusted R-squared: 0.2192 ## F-statistic: 17.56 on 2 and 116 DF, p-value: 2.173e-07 Com um p-valor menor que 0,05, a 5% de significância, rejeitamos a hipótese nula de que não há relação entre o preço do minério e a ação da Vale. Os resultados indicam fortemente a presença de uma relação estatisticamente significativa entre essas variáveis, sugerindo que as flutuações no preço do minério podem influenciar a ação da Vale, ou vice-versa. j) Teste a cointegração entre a ação da Vale e o preço do minério, utilizando o teste de Engle- Granger. As séries cointegram? Qual o modelo recomendado para a ação da Vale: em diferenças, ou um ECM? O teste de cointegração de Johansen indicou a presença de duas relações de cointegração entre as séries temporais da ADR da Vale (Pt) e o preço do minério (Ot). Os vetores cointegrantes forneceram as relações lineares entre as séries. O teste estatístico de rejeição da hipótese nula de não cointegração reforça a existência dessas relações. A escolha entre um modelo de correção de erro (ECM) e um modelo em diferenças depende dos objetivos da análise. O ECM é apropriado se o foco for nas dinâmicas de curto prazo e na velocidade de ajuste em direção ao equilíbrio de longo prazo. Por outro lado, um modelo em diferenças é preferível se a ênfase estiver principalmente nas mudanças de curto prazo, sem uma exploração explícita do processo de ajuste de longo prazo. Em resumo, considerando as duas relações de cointegração identificadas, a escolha entre ECM e modelo em diferenças depende da ênfase desejada na análise: ajuste de longo prazo ou mudanças de curto prazo. TRABALHO FINAL – ATUALIZAÇÃO EM ECONOMIA GRUPOS DE ATÉ 3 ALUNOS Parte 1: Modelo de Previsão para o ADR da Vale e Relação entre o preço do minério e o preço da ação da Vale. Considere as séries da ADR da Vale (Pt) e o preço do minério de ferro (Ot) de 2009M1 a 2020M12. Ignore as 24 observações finais para realizar o teste de seleção do modelo. A amostra de estimação vai de 2009M1 a 2018M12. a) Apresente um gráfico das séries da Vale e do minério de ferro. As séries apresentam b) tendência linear ou estocástica? As séries apresentam sazonalidade? c) Apresente o correlograma das séries da Vale e minério em nível e em primeiras diferenças. Baseado em inspeção visual, o que pode ser dito sobre a presença de uma raiz unitária nas séries? d) Teste a presença de raiz unitária em cada uma das séries, utilizando o teste ADF- GLS. As séries são estacionárias na diferença? e) Utilize os modelos de previsão ARIMA (1,1,0), ARIMA (0,1,1), ARIMA (2,1,0) e ARIMA (1,1,1) para a Vale. Apesar da série ser não estacionária, calcule a previsão e o erro de previsão um passo a frente. Qual modelo possui melhor ajuste dentro da amostra? f) Especifique agora um modelo de previsão da ADR da Vale com o preço do minério de ferro e com o DJA defasados como explicativas adicionais, utilizando: i. um modelo estático lnPt = + lnMt-1 + lnOt-1 + t ; e ii. um modelo ADL (1,1) lnPt = + lnPt-1 + lnMt-1 + lnOt-1 + t. t é um ruído branco e Mt é a série do índice de mercado. g) É necessário utilizar um modelo ADL (2,2)? Calcule as previsões um passo a frente fora da amostra. h) Compare as previsões fora da amostra um passo a frente utilizando o erro quadrático médio para o melhor modelo da questão 3 e os modelos da modelo da questão 4. Qual o melhor modelo de previsão? i) Considere o modelo para estudar as relações de longo prazo entre a ADR da Vale, o preço do minério e o índice de mercado. O modelo de fatores é bastante utilizado para prever retornos esperados. Ele é estimado, para nosso caso, através do modelo lnPt = + lnMt + lnOt + t. Há relação entre o preço do minério e a ação da Vale, dentro da amostra? j) Teste a cointegração entre a ação da Vale e o preço do minério, utilizando o teste de Engle-Granger. As séries cointegram? Qual o modelo recomendado para a ação da Vale: em diferenças, ou um ECM? TRABALHO FINAL – ATUALIZAÇÃO EM ECONOMIA - GRUPOS DE ATÉ 3 ALUNOS Parte 2: Use os arquivos file1 (dados nacionais) e file2 (dados estaduais) 5. Estime o mesmo modelo de diferenças-em-diferenças do exercício 3, utilizando o crescimento da taxa de mortalidade. Δln(mortalidade)_{ijt} = β_1 + β_2Δpós37_{t} + δ_1Δ(pós37 * tratamento)_{it} + u_{ijt}. Os resultados mudam? O efeito da sulfa fica mais forte ou mais fraco? Grupo Doença Controle 1 Pneumonia Diabetes 2 Escarlatina Câncer 3 Mort.Materna Coração 4 Pneumonia Câncer 5 Escarlatina Coração 6 Mort.Materna Diabetes 7 Pneumonia Coração 8 Escarlatina Diabetes 9 Mort.Materna Câncer 10 Pneumonia Tuberculose
Envie sua pergunta para a IA e receba a resposta na hora
Recomendado para você
Texto de pré-visualização
Parte 2 Raphael 2023-12-11 Parte 2: Use os arquivos file1 (dados nacionais) e file2 (dados estaduais) Questão 1 Letra a library(tidyverse) ## Warning: package 'tidyverse' was built under R version 4.3.2 ## Warning: package 'ggplot2' was built under R version 4.3.2 ## Attaching core tidyverse packages tidyverse 2.0.0 ── ──────────────────────── ── ## dplyr 1.1.3 readr 2.1.4 ✔ ✔ ## forcats 1.0.0 stringr 1.5.0 ✔ ✔ ## ggplot2 3.4.4 tibble 3.2.1 ✔ ✔ ## lubridate 1.9.2 tidyr 1.3.0 ✔ ✔ ## purrr 1.0.2 ✔ ## Conflicts tidyverse_conflicts() ── ────────────────────────────────────────── ── ## dplyr::filter() masks stats::filter() ✖ ## dplyr::lag() masks stats::lag() ✖ ## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors # Converter a variável X para fator dados1$disease <- as.factor(dados1$disease) # Filtrar dados para uma característica específica de X (por exemplo, X == "A") dados_mort <- dados1 %>% filter(disease == "total") # Criar uma série temporal anual mortalidade <- ts(dados_mort$m_rate, start = c(1925, 01), frequency = 12) plot(mortalidade) # Filtrar dados para uma característica específica de X (por exemplo, X == "A") dados_cancer <- dados1 %>% filter(disease == "câncer") # Criar uma série temporal anual câncer <- ts(dados_cancer$m_rate, start = c(1925, 01), frequency = 12) plot(câncer) # Filtrar dados para uma característica específica de X (por exemplo, X == "A") dados_tub <- dados1 %>% filter(disease == "tuberculose") # Criar uma série temporal anual tubercolise <- ts(dados_tub$m_rate, start = c(1925, 01), frequency = 12) plot(tubercolise) # Filtrar dados para uma característica específica de X (por exemplo, X == "A") dados_pne <- dados1 %>% filter(disease == "pneumonia") # Criar uma série temporal anual pneumonia <- ts(dados_pne$m_rate, start = c(1925, 01), frequency = 12) plot(pneumonia) Há uma tendência geral na queda da mortalidade para todas as doenças analisadas Letra b é notavel uma queda significate na mortalidade por tuberculose a partir de 1937. Letra c Sim, com a introdução da Sulfa houve uma queda na doença analisada (colocar a doença). Questão 2 pos37 <- dados1 %>% mutate(dummy = ifelse(dados1$year >= 1937, 1, 0)) modelo1 <- lm(dados1$lnm_rate ~ dados1$year + pos37$dummy) summary(modelo1) ## ## Call: ## lm(formula = dados1$lnm_rate ~ dados1$year + pos37$dummy) ## ## Residuals: ## Min 1Q Median 3Q Max ## -5.3445 -0.5910 0.1742 1.4362 2.7701 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 38.56887 105.50045 0.366 0.715 ## dados1$year -0.01760 0.05465 -0.322 0.748 ## pos37$dummy -0.17530 0.62052 -0.282 0.778 ## ## Residual standard error: 2.021 on 149 degrees of freedom ## Multiple R-squared: 0.007457, Adjusted R-squared: -0.005866 ## F-statistic: 0.5597 on 2 and 149 DF, p-value: 0.5726 Conforme evidenciado pelo resumo estatístico do modelo, observamos que o modelo não atinge significância estatística. Essa constatação sugere que, com base nos dados disponíveis, não há evidência estatística suficiente para afirmar que o sulfa tenha um efeito significativo sobre a taxa de mortalidade. Questão 3 pos37 <- dados1 %>% mutate(dummy = ifelse(dados1$year >= 1937, 1, 0)) trat <- dados2$statenum tratamento <- trat[1:152] modelo2 <- lm(dados1$lnm_rate ~ dados1$year + pos37$dummy + tratamento + pos37$dummy*tratamento) summary(modelo2) ## ## Call: ## lm(formula = dados1$lnm_rate ~ dados1$year + pos37$dummy + tratamento + ## pos37$dummy * tratamento) ## ## Residuals: ## Min 1Q Median 3Q Max ## -5.3222 -0.5916 0.1774 1.4602 2.7533 ## ## Coefficients: (1 not defined because of singularities) ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 35.32430 112.89942 0.313 0.755 ## dados1$year -0.01592 0.05848 -0.272 0.786 ## pos37$dummy -0.16902 0.62721 -0.269 0.788 ## tratamentoArizona -0.04790 0.57958 -0.083 0.934 ## pos37$dummy:tratamentoArizona NA NA NA NA ## ## Residual standard error: 2.028 on 148 degrees of freedom ## Multiple R-squared: 0.007503, Adjusted R-squared: -0.01262 ## F-statistic: 0.3729 on 3 and 148 DF, p-value: 0.7727 Também não apresentou efeito nas doenças trataveis Questão 4 pos37 <- dados1 %>% mutate(dummy = ifelse(dados1$year >= 1937, 1, 0)) trat <- dados2$statenum tratamento <- trat[1:152] modelo3 <- lm(dados1$lnm_rate ~ dados1$year + pos37$dummy + pos37$dummy*tratamento) summary(modelo3) ## ## Call: ## lm(formula = dados1$lnm_rate ~ dados1$year + pos37$dummy + pos37$dummy * ## tratamento) ## ## Residuals: ## Min 1Q Median 3Q Max ## -5.3222 -0.5916 0.1774 1.4602 2.7533 ## ## Coefficients: (1 not defined because of singularities) ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) 35.32430 112.89942 0.313 0.755 ## dados1$year -0.01592 0.05848 -0.272 0.786 ## pos37$dummy -0.16902 0.62721 -0.269 0.788 ## tratamentoArizona -0.04790 0.57958 -0.083 0.934 ## pos37$dummy:tratamentoArizona NA NA NA NA ## ## Residual standard error: 2.028 on 148 degrees of freedom ## Multiple R-squared: 0.007503, Adjusted R-squared: -0.01262 ## F-statistic: 0.3729 on 3 and 148 DF, p-value: 0.7727 Não apresentou mudanças. TRABALHO FINAL – ATUALIZAÇÃO EM ECONOMIA 2023-12-11 Parte 1: Modelo de Previsão para o ADR da Vale e Relação entre o preço do minério e o preço da ação da Vale Considere as séries da ADR da Vale (Pt) e o preço do minério de ferro (Ot) de 2009M1 a 2020M12. Ignore as 24 observações finais para realizar o teste de seleção do modelo. A amostra de estimação vai de 2009M1 a 2018M12. a) Apresente um gráfico das séries da Vale e do minério de ferro. As séries apresentam # a) Gráfico das séries par(mfrow = c(2, 1)) plot(Pt, type = "l", col = "blue", main = "ADR da Vale (Pt)") plot(Ot, type = "l", col = "red", main = "Preço do Minério de Ferro (Ot)") b) tendência linear ou estocástica? As séries apresentam sazonalidade? # b) teste de Tendência e Szonalidade par(mfrow = c(1, 1)) plot(decompose(Pt)) Decomposition of additive time series Time observed trend random seasonal plot(decompose(Ot)) ## vale ### teste de Tendência c <- (length(Pt))/2 metade1 <- Pt[1:(length(Pt-c)/2)] metade1 ## [1] 10.353828 9.458601 9.759454 12.284701 14.249063 13.118068 14.680625 ## [8] 14.293707 17.210489 19.129721 21.516243 21.786419 19.354864 20.908356 ## [15] 24.157932 23.140425 20.548273 18.402002 21.009266 20.215752 23.631647 ## [22] 24.537048 24.185863 26.392218 26.731087 26.270605 25.595224 25.940336 ## [29] 25.054939 24.814186 25.194746 22.410761 18.093672 20.187408 18.471359 ## [36] 17.041321 20.100016 19.972902 18.534916 18.064768 14.899364 16.152508 ## [43] 14.687795 13.320732 14.565737 15.157709 14.421338 17.342009 16.688375 ## [50] 15.712058 14.305504 14.205600 11.969611 10.930583 11.404380 11.977923 ## [57] 12.975390 13.359801 12.776039 12.717664 metade2 <- Pt[(c+1):length(Pt)] metade2 ## [1] 11.341654 11.817001 11.533461 11.335646 10.932637 11.344218 12.304577 ## [8] 11.198451 9.440654 8.760536 7.822837 7.102199 6.103723 6.442337 ## [15] 4.905553 6.886059 5.648720 5.281105 4.716233 4.438280 3.765814 ## [22] 3.986632 3.081410 3.008261 2.240195 2.688234 3.849478 5.184450 ## [29] 3.593455 4.626688 5.257600 4.818705 5.029008 6.327407 7.762960 ## [36] 7.009296 9.364125 9.520501 8.738624 8.157325 7.957669 8.318950 ## [43] 9.535892 10.524659 9.573922 9.307716 10.172887 11.751009 12.577328 ## [50] 13.192261 12.359420 13.447670 13.214474 12.456584 14.244425 13.200000 ## [57] 14.840000 15.100000 13.700000 13.190000 sinais <- NULL for(i in 1:length(metade1)) sinais[i] = ifelse(metade1[i]<metade2[i],"p","n") T2 <- sum(sinais=="p") n <- length(metade1)-sum(metade1==metade2) t <- qnorm(0.975,mean = n*0.5, sd=sqrt(n*0.5*0.5)) print(paste("T2=",T2,"n*-t=",round(n-t,4))) ## [1] "T2= 11 n*-t= 22.4091" #### T2 < n*-t -> A série não possuí tendência ### Teste de Sazonalidade s1 <- spectrum(Pt) periodo <- 1/(s1$freq) spec1 <- s1$spec #plotar plot(periodo,spec1,type="o",xlab='Periodos',ylab='Valores do Periodograma',xaxt = "n") axis(1,seq(0,150, by=12)) cbind(periodo,spec1) ## periodo spec1 ## [1,] 10.0000000 5.693789e+01 ## [2,] 5.0000000 6.598663e+00 ## [3,] 3.3333333 2.395716e+01 ## [4,] 2.5000000 1.386199e+00 ## [5,] 2.0000000 4.010540e-01 ## [6,] 1.6666667 7.774106e-01 ## [7,] 1.4285714 1.529666e+00 ## [8,] 1.2500000 1.513302e-02 ## [9,] 1.1111111 6.792410e-01 ## [10,] 1.0000000 1.369975e+00 ## [11,] 0.9090909 6.207468e-01 ## [12,] 0.8333333 4.194692e-01 ## [13,] 0.7692308 9.171861e-01 ## [14,] 0.7142857 2.568829e-01 ## [15,] 0.6666667 9.845760e-02 ## [16,] 0.6250000 1.303072e-01 ## [17,] 0.5882353 1.166799e-01 ## [18,] 0.5555556 3.192658e-01 ## [19,] 0.5263158 1.084073e-02 ## [20,] 0.5000000 2.795698e-02 ## [21,] 0.4761905 1.567796e-02 ## [22,] 0.4545455 2.262115e-01 ## [23,] 0.4347826 3.269002e-01 ## [24,] 0.4166667 2.570770e-02 ## [25,] 0.4000000 1.217558e-01 ## [26,] 0.3846154 2.574289e-01 ## [27,] 0.3703704 6.759097e-02 ## [28,] 0.3571429 8.091508e-03 ## [29,] 0.3448276 1.394748e-04 ## [30,] 0.3333333 8.363565e-02 ## [31,] 0.3225806 2.453137e-02 ## [32,] 0.3125000 1.413494e-01 ## [33,] 0.3030303 2.695569e-02 ## [34,] 0.2941176 8.310110e-02 ## [35,] 0.2857143 1.044589e-01 ## [36,] 0.2777778 1.257141e-01 ## [37,] 0.2702703 4.914455e-02 ## [38,] 0.2631579 8.593353e-02 ## [39,] 0.2564103 7.091187e-02 ## [40,] 0.2500000 2.005517e-01 ## [41,] 0.2439024 3.264461e-02 ## [42,] 0.2380952 4.252705e-02 ## [43,] 0.2325581 1.132789e-01 ## [44,] 0.2272727 2.012266e-02 ## [45,] 0.2222222 3.066336e-02 ## [46,] 0.2173913 8.672168e-02 ## [47,] 0.2127660 3.918855e-02 ## [48,] 0.2083333 6.572032e-02 ## [49,] 0.2040816 2.221895e-02 ## [50,] 0.2000000 5.777742e-02 ## [51,] 0.1960784 1.711454e-02 ## [52,] 0.1923077 4.636525e-02 ## [53,] 0.1886792 5.259997e-03 ## [54,] 0.1851852 2.293379e-02 ## [55,] 0.1818182 1.250707e-02 ## [56,] 0.1785714 8.775670e-03 ## [57,] 0.1754386 5.014230e-02 ## [58,] 0.1724138 1.110603e-02 ## [59,] 0.1694915 8.190267e-02 ## [60,] 0.1666667 4.718979e-02 sum(spec1) ## [1] 99.43014 max(spec1) ## [1] 56.93789 g <- max(spec1)/sum(spec1) g ## [1] 0.5726422 alpha <- 0.05 n0 <- length(Pt)/2 n0 ## [1] 60 zalpha <- 1-(alpha/n0)^(1/(n0-1)) zalpha ## p-valor ## [1] 0.113231 g ## [1] 0.5726422 #### g > zalpha -> a série tem sazonalidade ## Preço do Minério ### teste de Tendência c <- (length(Ot))/2 metade1 <- Ot[1:(length(Ot-c)/2)] metade1 ## [1] 72.50909 75.59000 64.07273 59.78182 62.69048 71.65909 83.95217 ## [8] 97.66667 80.71364 86.78636 99.25714 105.24783 125.91429 127.61500 ## [15] 139.76957 172.46818 161.34762 143.63182 126.36364 145.34091 140.62727 ## [22] 148.48095 160.55000 168.52609 179.63000 187.18000 169.35652 179.26111 ## [29] 177.09500 170.87727 172.97619 177.45000 177.22727 150.43333 135.54091 ## [36] 136.45500 140.34762 140.39524 144.66364 147.64737 136.27273 134.62105 ## [43] 127.93636 107.79545 99.47000 113.94783 120.34545 128.87368 150.49091 ## [50] 154.63889 139.87000 137.39091 124.00952 114.81500 127.19130 137.05500 ## [57] 134.19000 132.57000 136.32000 135.79000 metade2 <- Ot[(c+1):length(Ot)] metade2 ## [1] 128.12 121.37 111.83 114.58 100.56 92.74 96.05 92.61 82.38 81.06 ## [11] 73.73 68.39 68.23 62.75 58.05 52.28 60.30 62.63 52.39 56.19 ## [21] 56.95 53.12 46.86 40.50 41.88 46.83 56.20 60.92 55.13 51.98 ## [31] 57.26 60.89 57.79 59.09 73.10 80.02 80.41 89.44 87.65 70.22 ## [41] 62.43 57.48 67.74 76.07 71.53 61.66 64.24 72.25 76.34 77.46 ## [51] 70.35 65.75 66.10 65.04 64.56 67.15 68.44 73.41 73.26 69.15 sinais <- NULL for(i in 1:length(metade1)) sinais[i] = ifelse(metade1[i]<metade2[i],"p","n") T2 <- sum(sinais=="p") n <- length(metade1)-sum(metade1==metade2) t <- qnorm(0.975,mean = n*0.5, sd=sqrt(n*0.5*0.5)) print(paste("T2=",T2,"n*-t=",round(n-t,4))) ## [1] "T2= 8 n*-t= 22.4091" #### T2 < n*-t -> A série não possuí tendência ### Teste de Sazonalidade s1 <- spectrum(Ot) periodo <- 1/(s1$freq) spec1 <- s1$spec #plotar plot(periodo,spec1,type="o",xlab='Periodos',ylab='Valores do Periodograma',xaxt = "n") axis(1,seq(0,150, by=12)) cbind(periodo,spec1) ## periodo spec1 ## [1,] 10.0000000 1.637157e+03 ## [2,] 5.0000000 5.744472e+02 ## [3,] 3.3333333 7.889075e+02 ## [4,] 2.5000000 3.200089e+02 ## [5,] 2.0000000 3.019658e+01 ## [6,] 1.6666667 3.783609e+01 ## [7,] 1.4285714 2.156568e+01 ## [8,] 1.2500000 2.178265e+01 ## [9,] 1.1111111 4.459943e+01 ## [10,] 1.0000000 9.504421e+01 ## [11,] 0.9090909 2.478183e+01 ## [12,] 0.8333333 2.546553e+01 ## [13,] 0.7692308 6.882903e+01 ## [14,] 0.7142857 3.656600e+01 ## [15,] 0.6666667 7.074864e+01 ## [16,] 0.6250000 7.344399e-01 ## [17,] 0.5882353 2.164903e-01 ## [18,] 0.5555556 5.435062e+00 ## [19,] 0.5263158 5.313175e-01 ## [20,] 0.5000000 1.394866e+01 ## [21,] 0.4761905 1.428591e-01 ## [22,] 0.4545455 1.490532e+01 ## [23,] 0.4347826 2.620065e+00 ## [24,] 0.4166667 3.485241e+00 ## [25,] 0.4000000 2.854676e+00 ## [26,] 0.3846154 2.270166e+00 ## [27,] 0.3703704 1.707504e+01 ## [28,] 0.3571429 3.909845e+00 ## [29,] 0.3448276 6.141917e+00 ## [30,] 0.3333333 7.349617e+00 ## [31,] 0.3225806 1.663936e+00 ## [32,] 0.3125000 1.127182e+00 ## [33,] 0.3030303 8.718777e-01 ## [34,] 0.2941176 4.055486e+00 ## [35,] 0.2857143 6.443484e+00 ## [36,] 0.2777778 2.472051e+00 ## [37,] 0.2702703 6.819434e+00 ## [38,] 0.2631579 2.468834e+00 ## [39,] 0.2564103 1.075086e+00 ## [40,] 0.2500000 5.649809e+00 ## [41,] 0.2439024 4.469921e+00 ## [42,] 0.2380952 1.002951e-01 ## [43,] 0.2325581 3.903200e-01 ## [44,] 0.2272727 4.418454e-02 ## [45,] 0.2222222 3.306871e-01 ## [46,] 0.2173913 2.319796e+00 ## [47,] 0.2127660 1.573589e+00 ## [48,] 0.2083333 2.546837e+00 ## [49,] 0.2040816 2.023683e+00 ## [50,] 0.2000000 1.038388e+00 ## [51,] 0.1960784 1.824214e-01 ## [52,] 0.1923077 5.857813e-01 ## [53,] 0.1886792 1.354434e-01 ## [54,] 0.1851852 5.888990e-01 ## [55,] 0.1818182 7.426379e-01 ## [56,] 0.1785714 4.778662e-01 ## [57,] 0.1754386 5.444561e-01 ## [58,] 0.1724138 6.971903e-01 ## [59,] 0.1694915 9.046160e-01 ## [60,] 0.1666667 1.617061e+00 sum(spec1) ## [1] 3933.518 max(spec1) ## [1] 1637.157 g <- max(spec1)/sum(spec1) g ## [1] 0.4162068 alpha <- 0.05 n0 <- length(Ot)/2 n0 ## [1] 60 zalpha <- 1-(alpha/n0)^(1/(n0-1)) zalpha ## p-valor ## [1] 0.113231 g ## [1] 0.4162068 #### g > zalpha -> a série tem sazonalidade Após uma análise aprofundada, podemos concluir que ambas as séries temporais, Pt (ADR da Vale) e Ot (preço do minério de ferro), não exibem uma tendência discernível ao longo do tempo. Esta observação é respaldada por uma análise visual dos gráficos de decomposição, onde a componente de tendência parece ser praticamente inexistente. Ao mesmo tempo, a presença de sazonalidade nas séries é evidente nos mesmos gráficos de decomposição. Padrões recorrentes e ciclos visíveis sugerem a influência sazonal ao longo dos períodos de observação. Essa conclusão é robustecida pelos resultados dos testes de tendência e sazonalidade, onde os testes específicos confirmam a ausência de uma tendência global significativa, mas indicam fortemente a existência de padrões sazonais. c) Apresente o correlograma das séries da Vale e minério em nível e em primeiras diferenças. Baseado em inspeção visual, o que pode ser dito sobre a presença de uma raiz unitária nas séries? par(mfrow = c(2, 1)) # c) Correlograma acf(Pt, main = "Correlograma - ADR da Vale") acf(diff(Pt), main = "Correlograma - 1ª Diferença ADR da Vale") acf(Ot, main = "Correlograma - Preço do Minério") acf(diff(Ot), main = "Correlograma - 1ª Diferença Preço do Minério") Ao explorar o correlograma das primeiras diferenças, observamos que a série temporal da ADR da Vale se torna estacionária após a primeira diferença. Essa estacionarização sugere que a remoção da tendência e a aplicação de uma diferenciação de ordem um são eficazes para tornar a série estacionária, indicando um comportamento mais estável ao longo do tempo. Por outro lado, ao analisar a série temporal do Preço do Minério, notamos que a estacionarização não é alcançada após a primeira diferença. Isso sugere que a remoção da sazonalidade por si só pode não ser suficiente para tornar a série estacionária. Nesse contexto, pode ser necessário considerar estratégias adicionais, como diferenças sazonais ou outros métodos de transformação, para atingir a estacionariedade desejada. d) Teste a presença de raiz unitária em cada uma das séries, utilizando o teste ADFGLS. As séries são estacionárias na diferença? # d) Teste ADFGLS diff_Pt <- diff(Pt) diff_Ot <- diff(Ot) require(fUnitRoots) ##carrega o pacote ## Carregando pacotes exigidos: fUnitRoots ## Warning: package 'fUnitRoots' was built under R version 4.3.2 unitrootTest(diff_Pt , lags = 1, type ="nc", title = NULL,description = "H0=n?o estacion?ria ,H1=estacion?ria, RH0 para pvalue< 0.05")#McKinnon ## ## Title: ## Augmented Dickey-Fuller Test ## ## Test Results: ## PARAMETER: ## Lag Order: 1 ## STATISTIC: ## DF: -7.9197 ## P VALUE: ## t: < 2.2e-16 ## n: 0.04857 ## ## Description: ## Sun Dec 10 23:19:12 2023 by user: karol adfTest(diff_Ot, lags = 1, type ="ct", title = "Raiz",description = "H0=n?o estacion?ria ,H1=estacion?ria, RH0 para pvalue< 0.05")#Trapletti ## Warning in adfTest(diff_Ot, lags = 1, type = "ct", title = "Raiz", description ## = "H0=n?o estacion?ria\n,H1=estacion?ria, RH0 para pvalue< 0.05"): p-value ## smaller than printed p-value ## ## Title: ## Raiz ## ## Test Results: ## PARAMETER: ## Lag Order: 1 ## STATISTIC: ## Dickey-Fuller: -8.0604 ## P VALUE: ## 0.01 ## ## Description: ## Sun Dec 10 23:19:12 2023 by user: karol Ao realizar a primeira diferenciação nas séries temporais, observamos que ambas, a ADR da Vale e o Preço do Minério, tornaram-se estacionárias. Esse processo de diferenciação foi eficaz em remover as sazonalidades e padrões não estacionários, resultando em séries estacionárias, o que é uma condição essencial para muitos métodos de modelagem e previsão. e) Utilize os modelos de previsão ARIMA (1,1,0), ARIMA (0,1,1), ARIMA (2,1,0) e ARIMA (1,1,1) para a Vale. Apesar da série ser não estacionária, calcule a previsão e o erro de previsão um passo a frente. Qual modelo possui melhor ajuste dentro da amostra? # e) Modelos ARIMA modelo1 <- arima(diff_Pt, order = c(1, 1, 0)) modelo1 ## ## Call: ## arima(x = diff_Pt, order = c(1, 1, 0)) ## ## Coefficients: ## ar1 ## -0.4834 ## s.e. 0.0801 ## ## sigma^2 estimated as 3.078: log likelihood = -233.89, aic = 471.78 modelo2 <- arima(diff_Pt, order = c(0, 1, 1)) modelo2 ## ## Call: ## arima(x = diff_Pt, order = c(0, 1, 1)) ## ## Coefficients: ## ma1 ## -0.9435 ## s.e. 0.0386 ## ## sigma^2 estimated as 2.023: log likelihood = -210.12, aic = 424.25 modelo3 <- arima(diff_Pt, order = c(2, 1, 0)) modelo3 ## ## Call: ## arima(x = diff_Pt, order = c(2, 1, 0)) ## ## Coefficients: ## ar1 ar2 ## -0.6937 -0.4255 ## s.e. 0.0836 0.0836 ## ## sigma^2 estimated as 2.519: log likelihood = -222.27, aic = 450.53 modelo4 <- arima(diff_Pt, order = c(1, 1, 1)) modelo4 ## ## Call: ## arima(x = diff_Pt, order = c(1, 1, 1)) ## ## Coefficients: ## ar1 ma1 ## -0.0602 -0.9339 ## s.e. 0.0992 0.0413 ## ## sigma^2 estimated as 2.018: log likelihood = -209.94, aic = 425.88 Após a aplicação de diferentes modelos ARIMA para as séries temporais da ADR da Vale, a seleção do melhor modelo foi realizada utilizando o critério de Informação de Akaike (AIC). De acordo com os resultados, o Modelo 2, representado por ARIMA(0,1,1), demonstrou ser o mais adequado, apresentando o menor valor de AIC entre os modelos avaliados. O AIC é uma métrica que leva em consideração a qualidade do ajuste do modelo e a complexidade do modelo, favorecendo modelos que equilibram bem a explicação dos dados e a simplicidade. Portanto, a escolha do ARIMA(0,1,1) como o melhor modelo sugere que ele fornece um ajuste satisfatório, considerando a trade-off entre precisão e complexidade. f) Especifique agora um modelo de previsão da ADR da Vale com o preço do minério de ferro e com o DJA defasados como explicativas adicionais, utilizando: i: um modelo estático l n(Pt)=α+β0⋅l n(M t −1)+β1⋅l n(Ot 1+−1)+ϵ # f) Modelos com variáveis explicativas # i. Modelo estático static_model <- lm(log(Pt) ~ log(lag(ts_DJA, 1)) + log(lag(Ot, 1)), na.action = na.exclude) summary(static_model) ## ## Call: ## lm(formula = log(Pt) ~ log(lag(ts_DJA, 1)) + log(lag(Ot, 1)), ## na.action = na.exclude) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.73982 -0.23686 -0.01999 0.18262 0.68095 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) -1.48611 1.15092 -1.291 0.199 ## log(lag(ts_DJA, 1)) -0.12931 0.10664 -1.213 0.228 ## log(lag(Ot, 1)) 1.11149 0.08201 13.553 <2e-16 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.3114 on 117 degrees of freedom ## Multiple R-squared: 0.7026, Adjusted R-squared: 0.6975 ## F-statistic: 138.2 on 2 and 117 DF, p-value: < 2.2e-16 ii: um modelo ADL (1,1) l n(Pt)=α+ρ⋅l n(Pt −1)+β0⋅l n(M t −1)+β1⋅l n(Ot 1+−1)+ϵ # ii. Modelo ADL (1,1) adl_model <- lm(log(Pt) ~ log(lag(Pt,1))+log(lag(ts_DJA, 1)) + log(lag(Ot, 1)), na.action = na.exclude) summary(adl_model) ## Warning in summary.lm(adl_model): essentially perfect fit: summary may be ## unreliable ## ## Call: ## lm(formula = log(Pt) ~ log(lag(Pt, 1)) + log(lag(ts_DJA, 1)) + ## log(lag(Ot, 1)), na.action = na.exclude) ## ## Residuals: ## Min 1Q Median 3Q Max ## -1.043e-16 -2.959e-18 1.993e-18 4.020e-18 1.055e-16 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) -6.486e-16 8.686e-17 -7.468e+00 1.65e-11 *** ## log(lag(Pt, 1)) 1.000e+00 6.928e-18 1.443e+17 < 2e-16 *** ## log(lag(ts_DJA, 1)) -4.484e-18 8.041e-18 -5.580e-01 0.578 ## log(lag(Ot, 1)) -2.525e-18 9.852e-18 -2.560e-01 0.798 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 2.334e-17 on 116 degrees of freedom ## Multiple R-squared: 1, Adjusted R-squared: 1 ## F-statistic: 2.335e+34 on 3 and 116 DF, p-value: < 2.2e-16 g) É necessário utilizar um modelo ADL (2,2)? Calcule as previsões um passo a frente fora da amostra Se o coeficiente de determinação (R-squared) para o modelo ADL (1,1) é igual a 1, isso indicaria que o modelo explica 100% da variação na série ADR da Vale com as variáveis explicativas incluídas. Nesse caso, pode ser interpretado que o modelo ADL (1,1) é altamente eficaz em explicar e prever a variação na série ADR da Vale com base nas variáveis consideradas. h) Compare as previsões fora da amostra um passo a frente utilizando o erro quadrático médio para o melhor modelo da questão 3 e os modelos da modelo da questão 4. Qual o melhor modelo de previsão? # h) Comparação de previsões # Criar objetos para previsão h <- 24 # Número de períodos a serem previstos # Previsão ARIMA forecast_arima <- forecast(modelo2, h = h) forecast_arima ## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95 ## Jan 2019 0.1370066 -1.685981 1.959994 -2.651012 2.925025 ## Feb 2019 0.1370066 -1.688891 1.962904 -2.655463 2.929476 ## Mar 2019 0.1370066 -1.691797 1.965810 -2.659907 2.933920 ## Apr 2019 0.1370066 -1.694698 1.968712 -2.664344 2.938358 ## May 2019 0.1370066 -1.697595 1.971608 -2.668775 2.942788 ## Jun 2019 0.1370066 -1.700487 1.974500 -2.673198 2.947211 ## Jul 2019 0.1370066 -1.703375 1.977388 -2.677614 2.951627 ## Aug 2019 0.1370066 -1.706258 1.980271 -2.682023 2.956036 ## Sep 2019 0.1370066 -1.709137 1.983150 -2.686426 2.960439 ## Oct 2019 0.1370066 -1.712011 1.986024 -2.690821 2.964834 ## Nov 2019 0.1370066 -1.714880 1.988893 -2.695210 2.969223 ## Dec 2019 0.1370066 -1.717746 1.991759 -2.699592 2.973605 ## Jan 2020 0.1370066 -1.720606 1.994619 -2.703967 2.977980 ## Feb 2020 0.1370066 -1.723463 1.997476 -2.708336 2.982349 ## Mar 2020 0.1370066 -1.726315 2.000328 -2.712697 2.986711 ## Apr 2020 0.1370066 -1.729162 2.003176 -2.717052 2.991066 ## May 2020 0.1370066 -1.732006 2.006019 -2.721401 2.995414 ## Jun 2020 0.1370066 -1.734845 2.008858 -2.725743 2.999756 ## Jul 2020 0.1370066 -1.737679 2.011692 -2.730078 3.004091 ## Aug 2020 0.1370066 -1.740510 2.014523 -2.734407 3.008420 ## Sep 2020 0.1370066 -1.743336 2.017349 -2.738729 3.012742 ## Oct 2020 0.1370066 -1.746158 2.020171 -2.743045 3.017058 ## Nov 2020 0.1370066 -1.748975 2.022989 -2.747354 3.021367 ## Dec 2020 0.1370066 -1.751789 2.025802 -2.751657 3.025670 forecast_arima1 <- ts(forecast_arima$mean , start = c(2019, 1), frequency = 12) plot(forecast_arima) # Previsão modelo estocastico forecast_est <- predict(static_model, na.action = na.exclude, n.ahead = h) forecast_est ## 1 2 3 4 5 6 7 8 ## 2.248875 2.313134 2.121542 2.033618 2.082605 2.230031 2.395939 2.560636 ## 9 10 11 12 13 14 15 16 ## 2.345620 2.429071 2.569751 2.631660 2.836474 2.848113 2.942956 3.172611 ## 17 18 19 20 21 22 23 24 ## 3.108632 2.985077 2.832559 2.993507 2.947775 3.003827 3.091305 3.139026 ## 25 26 27 28 29 30 31 32 ## 3.208537 3.251607 3.138377 3.196494 3.184229 3.145855 3.162778 3.197875 ## 33 34 35 36 37 38 39 40 ## 3.204651 3.009765 2.893051 2.898167 2.925724 2.925495 2.956301 2.978577 ## 41 42 43 44 45 46 47 48 ## 2.895120 2.877295 2.820253 2.631285 2.540532 2.691823 2.753989 2.828372 ## 49 50 51 52 53 54 55 56 ## 2.992432 3.020147 2.903130 2.881246 2.767921 2.683789 2.792339 2.880926 ## 57 58 59 60 61 62 63 64 ## 2.853764 2.835429 2.863067 2.855567 2.794842 2.731119 2.637875 2.663072 ## 65 66 67 68 69 70 71 72 ## 2.515585 2.423563 2.465286 2.420348 2.290753 2.268422 2.159336 2.075421 ## 73 74 75 76 77 78 79 80 ## 2.076898 1.979813 1.896162 1.780208 1.939434 1.985397 1.784156 1.870149 ## 81 82 83 84 85 86 87 88 ## 1.885879 1.800946 1.662068 1.503374 1.546379 1.667846 1.861241 1.951338 ## 89 90 91 92 93 94 95 96 ## 1.840438 1.773908 1.878048 1.947849 1.889211 1.914436 2.144619 2.241687 ## 97 98 99 100 101 102 103 104 ## 2.245834 2.358846 2.338255 2.090710 1.958854 1.864920 2.046519 2.174240 ## 105 106 107 108 109 110 111 112 ## 2.102696 1.934290 1.974810 2.104150 2.160552 2.182826 2.077964 2.002137 ## 113 114 115 116 117 118 119 120 ## 2.006453 1.989881 1.975420 2.016748 2.036382 2.121797 2.115967 2.065096 forecast_est <- ts(forecast_est[97:120], start = c(2019, 1), frequency = 12) plot(forecast_est) # Previsão ADL (1,1) forecast_adl <- predict(adl_model, na.action = na.exclude, n.ahead = h) forecast_adl ## 1 2 3 4 5 6 7 8 ## 2.3373563 2.2469245 2.2782365 2.5083547 2.6566912 2.5739905 2.6865286 2.6598194 ## 9 10 11 12 13 14 15 16 ## 2.8455190 2.9512432 3.0688081 3.0812868 2.9629438 3.0401489 3.1846128 3.1415811 ## 17 18 19 20 21 22 23 24 ## 3.0227769 2.9124595 3.0449636 3.0064621 3.1625868 3.2001841 3.1857683 3.2730692 ## 25 26 27 28 29 30 31 32 ## 3.2858272 3.2684506 3.2424058 3.2557991 3.2210710 3.2114155 3.2266355 3.1095412 ## 33 34 35 36 37 38 39 40 ## 2.8955623 3.0050590 2.9162214 2.8356410 3.0007206 2.9943765 2.9196563 2.8939635 ## 41 42 43 44 45 46 47 48 ## 2.7013185 2.7820753 2.6870169 2.5893216 2.6786720 2.7185092 2.6687089 2.8531318 ## 49 50 51 52 53 54 55 56 ## 2.8147124 2.7544284 2.6606444 2.6536363 2.4823710 2.3915646 2.4339975 2.4830652 ## 57 58 59 60 61 62 63 64 ## 2.5630545 2.5922503 2.5475715 2.5429919 2.4284821 2.4695393 2.4452525 2.4279523 ## 65 66 67 68 69 70 71 72 ## 2.3917525 2.4287082 2.5099713 2.4157755 2.2450253 2.1702571 2.0570473 1.9604045 ## 73 74 75 76 77 78 79 80 ## 1.8088989 1.8628914 1.5903678 1.9294989 1.7314290 1.6641354 1.5510104 1.4902669 ## 81 82 83 84 85 86 87 88 ## 1.3259640 1.3829468 1.1253873 1.1013622 0.8065629 0.9888845 1.3479376 1.6456638 ## 89 90 91 92 93 94 95 96 ## 1.2791141 1.5318413 1.6596746 1.5725052 1.6152227 1.8448905 2.0493637 1.9472373 ## 97 98 99 100 101 102 103 104 ## 2.2368859 2.2534475 2.1677527 2.0989163 2.0741361 2.1185360 2.2550628 2.3537210 ## 105 106 107 108 109 110 111 112 ## 2.2590429 2.2308437 2.3197260 2.4639391 2.5318958 2.5796304 2.5144185 2.5988059 ## 113 114 115 116 117 118 119 120 ## 2.5813127 2.5222493 2.6563656 2.5802168 2.6973262 2.7146947 2.6173958 2.5794590 forecast_adl <- ts(forecast_adl[97:120], start = c(2019, 1), frequency = 12) plot(forecast_adl) # Plotar valores observados e previstos par(mfrow = c(1, 1)) Obs <- vale_adr[121:144] obs <- ts(Obs, start = c(2019, 1), frequency = 12) plot(obs, col = "blue", ylim = range(c(obs, forecast_arima$mean, forecast_adl, forecast_est))) lines(forecast_arima$mean, col = "red", lty = 2) lines(forecast_adl, col = "green", lty = 2) lines(forecast_est, col = "violet", lty = 2) legend("topright", legend = c("Observados", "ARIMA", "ADL (1,1)", "Estatico"), col = c("blue", "red", "green", 'violet'), lty = c(1, 2, 2), cex = 0.8) Ao avaliar os valores previstos pelos modelos considerados, destaca-se que o modelo ADL(1,1) se destaca como aquele que melhor se ajusta aos dados observados das séries temporais. Essa conclusão é fundamentada na capacidade do modelo em gerar previsões mais precisas e coerentes com os padrões presentes nos dados reais. i) Considere o modelo para estudar as relações de longo prazo entre a ADR da Vale, o preço do minério e o índice de mercado. O modelo de fatores é bastante utilizado para prever retornos esperados. Ele é estimado, para nosso caso, através do modelo $$ ln(P_t) = \alpha + \beta \cdot \Delta ln(M_t) + \gamma \cdot \Delta ln(O_t) + \epislon_t $ $ Há relação entre o preço do minério e a ação da Vale, dentro da amostra? # i) Modelo de fatores fatores_model <- lm(diff(log(Pt)) ~ diff(log(ts_DJA)) + diff(log(Ot)), na.action = na.exclude) summary(fatores_model) ## ## Call: ## lm(formula = diff(log(Pt)) ~ diff(log(ts_DJA)) + diff(log(Ot)), ## na.action = na.exclude) ## ## Residuals: ## Min 1Q Median 3Q Max ## -0.32475 -0.07643 -0.00985 0.06459 0.38587 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) ## (Intercept) -0.01034 0.01068 -0.968 0.33523 ## diff(log(ts_DJA)) 1.46667 0.28308 5.181 9.41e-07 *** ## diff(log(Ot)) 0.30338 0.11146 2.722 0.00749 ** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Residual standard error: 0.1135 on 116 degrees of freedom ## Multiple R-squared: 0.2324, Adjusted R-squared: 0.2192 ## F-statistic: 17.56 on 2 and 116 DF, p-value: 2.173e-07 Com um p-valor menor que 0,05, a 5% de significância, rejeitamos a hipótese nula de que não há relação entre o preço do minério e a ação da Vale. Os resultados indicam fortemente a presença de uma relação estatisticamente significativa entre essas variáveis, sugerindo que as flutuações no preço do minério podem influenciar a ação da Vale, ou vice-versa. j) Teste a cointegração entre a ação da Vale e o preço do minério, utilizando o teste de Engle- Granger. As séries cointegram? Qual o modelo recomendado para a ação da Vale: em diferenças, ou um ECM? O teste de cointegração de Johansen indicou a presença de duas relações de cointegração entre as séries temporais da ADR da Vale (Pt) e o preço do minério (Ot). Os vetores cointegrantes forneceram as relações lineares entre as séries. O teste estatístico de rejeição da hipótese nula de não cointegração reforça a existência dessas relações. A escolha entre um modelo de correção de erro (ECM) e um modelo em diferenças depende dos objetivos da análise. O ECM é apropriado se o foco for nas dinâmicas de curto prazo e na velocidade de ajuste em direção ao equilíbrio de longo prazo. Por outro lado, um modelo em diferenças é preferível se a ênfase estiver principalmente nas mudanças de curto prazo, sem uma exploração explícita do processo de ajuste de longo prazo. Em resumo, considerando as duas relações de cointegração identificadas, a escolha entre ECM e modelo em diferenças depende da ênfase desejada na análise: ajuste de longo prazo ou mudanças de curto prazo. TRABALHO FINAL – ATUALIZAÇÃO EM ECONOMIA GRUPOS DE ATÉ 3 ALUNOS Parte 1: Modelo de Previsão para o ADR da Vale e Relação entre o preço do minério e o preço da ação da Vale. Considere as séries da ADR da Vale (Pt) e o preço do minério de ferro (Ot) de 2009M1 a 2020M12. Ignore as 24 observações finais para realizar o teste de seleção do modelo. A amostra de estimação vai de 2009M1 a 2018M12. a) Apresente um gráfico das séries da Vale e do minério de ferro. As séries apresentam b) tendência linear ou estocástica? As séries apresentam sazonalidade? c) Apresente o correlograma das séries da Vale e minério em nível e em primeiras diferenças. Baseado em inspeção visual, o que pode ser dito sobre a presença de uma raiz unitária nas séries? d) Teste a presença de raiz unitária em cada uma das séries, utilizando o teste ADF- GLS. As séries são estacionárias na diferença? e) Utilize os modelos de previsão ARIMA (1,1,0), ARIMA (0,1,1), ARIMA (2,1,0) e ARIMA (1,1,1) para a Vale. Apesar da série ser não estacionária, calcule a previsão e o erro de previsão um passo a frente. Qual modelo possui melhor ajuste dentro da amostra? f) Especifique agora um modelo de previsão da ADR da Vale com o preço do minério de ferro e com o DJA defasados como explicativas adicionais, utilizando: i. um modelo estático lnPt = + lnMt-1 + lnOt-1 + t ; e ii. um modelo ADL (1,1) lnPt = + lnPt-1 + lnMt-1 + lnOt-1 + t. t é um ruído branco e Mt é a série do índice de mercado. g) É necessário utilizar um modelo ADL (2,2)? Calcule as previsões um passo a frente fora da amostra. h) Compare as previsões fora da amostra um passo a frente utilizando o erro quadrático médio para o melhor modelo da questão 3 e os modelos da modelo da questão 4. Qual o melhor modelo de previsão? i) Considere o modelo para estudar as relações de longo prazo entre a ADR da Vale, o preço do minério e o índice de mercado. O modelo de fatores é bastante utilizado para prever retornos esperados. Ele é estimado, para nosso caso, através do modelo lnPt = + lnMt + lnOt + t. Há relação entre o preço do minério e a ação da Vale, dentro da amostra? j) Teste a cointegração entre a ação da Vale e o preço do minério, utilizando o teste de Engle-Granger. As séries cointegram? Qual o modelo recomendado para a ação da Vale: em diferenças, ou um ECM? TRABALHO FINAL – ATUALIZAÇÃO EM ECONOMIA - GRUPOS DE ATÉ 3 ALUNOS Parte 2: Use os arquivos file1 (dados nacionais) e file2 (dados estaduais) 5. Estime o mesmo modelo de diferenças-em-diferenças do exercício 3, utilizando o crescimento da taxa de mortalidade. Δln(mortalidade)_{ijt} = β_1 + β_2Δpós37_{t} + δ_1Δ(pós37 * tratamento)_{it} + u_{ijt}. Os resultados mudam? O efeito da sulfa fica mais forte ou mais fraco? Grupo Doença Controle 1 Pneumonia Diabetes 2 Escarlatina Câncer 3 Mort.Materna Coração 4 Pneumonia Câncer 5 Escarlatina Coração 6 Mort.Materna Diabetes 7 Pneumonia Coração 8 Escarlatina Diabetes 9 Mort.Materna Câncer 10 Pneumonia Tuberculose