A República das Fiji ou das Fiji, por vezes escrito Fidji, em fijiano: Matanitu ko Viti; em inglês: Republic of Fiji, pronunciado, híndi fijiano: फ़िजी गणराज्य Fijī Gaṇarājya), anteriormente conhecida como República das Ilhas Fiji, é um país insular da Oceania, composto por 332 ilhas no Oceano Pacífico.
Fiji faz fronteira marítima com Tuvalu e com o território francês de Wallis e Futuna a norte, com Tonga a leste, e com o território francês da Nova Caledónia, com Vanuatu e com as Ilhas Salomão a oeste. A sul, a terra mais próxima corresponde às ilhas neozelandesas de Kermadec, mas estão bastante afastadas.[wikipidia]
Veja algumas informações interessantes sobre a economia:
Com solos férteis que permitem o cultivo da cana-de-açúcar, este é o principal produto de exportação, além do coco e gengibre.
A economia de Fiji é uma das mais desenvolvidas do Oceano Pacífico. A exportação de açúcar, as remessas de dinheiro feitas por fijianos residentes no exterior, e o turismo (de 300 a 400 mil turistas por ano visitam o país) são as principais fontes de receitas do país.
O açúcar fijiano tem como destino principal a União Europeia. Em 2007 a ajuda econômica da UE ao país foi suspensa, enquanto o governo que assumiu o poder após o golpe de estado não estabelece um cronograma para novas eleições.
1 - Setar a pasta em que estamos trabalhando;
2 - ler os dados;
3 - "Comunicar" ao R que temos uma série de tempo;
4 - Análise exploratória.
1 - Setar a pasta em que estamos trabalhando;
setwd("sua pasta de trabalho")
2 - ler os dados;
require(xlsx)
## Loading required package: xlsx
## Loading required package: rJava
## Loading required package: xlsxjars
Fiji_dataset <- read.xlsx("Fiji.xlsx", sheetName="Fiji",as.data.frame = TRUE, header = TRUE)
#View(Fiji_dataset)
names(Fiji_dataset)
## [1] "Date" "RGDP_FIJI"
## [3] "G_REAL_GROWTH_FIJI" "RGDP_AUS"
## [5] "G_REAL_GROWTH_AUS" "dummy_crise"
## [7] "REER_FIJI" "SUGAROUTPUT_FIJI"
## [9] "G_SUGAR_OUTPUT" "SUGAROUTPUT_FIJI_MISSING"
## [11] "NA."
attach(Fiji_dataset)
3 - “Comunicar” ao R que temos uma série de tempo;
RGDP_FIJI <- ts(RGDP_FIJI,start = 1970,end = 2013,frequency = 1)
RGDP_AUS <- ts(RGDP_AUS,start = 1970,end = 2013,frequency = 1)
SUGAROUTPUT_FIJI <- ts(SUGAROUTPUT_FIJI,start = 1970,end = 2013,frequency = 1)
G_REAL_GROWTH_FIJI <- ts(G_REAL_GROWTH_FIJI,start = 1970,end = 2013,frequency = 1)
dummy_crise <- ts(dummy_crise,start = 1970,end = 2013,frequency = 1)
4 - Análise exploratória.
scatter.smooth(RGDP_FIJI,RGDP_AUS)
library(dygraphs)
dygraph(RGDP_FIJI)
## Faz sentido fazermos um monthplot??
## monthplot(RGDP_FIJI)
Vamos começar tentando explicar o PIB de Fiji utilizando o PIB da Austrália, um parceiro comercial importante do país e que envia vários turistas para FIJI.
reg1<-lm(log(RGDP_FIJI) ~ log(RGDP_AUS))
summary(reg1)
##
## Call:
## lm(formula = log(RGDP_FIJI) ~ log(RGDP_AUS))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.12646 -0.02858 0.01698 0.03595 0.08670
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.19520 0.12383 -33.88 <2e-16 ***
## log(RGDP_AUS) 0.80096 0.01854 43.21 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.05015 on 42 degrees of freedom
## Multiple R-squared: 0.978, Adjusted R-squared: 0.9775
## F-statistic: 1867 on 1 and 42 DF, p-value: < 2.2e-16
## Teste do resíduo
plot(reg1$residuals,type="l")
abline(h=mean(reg1$residuals), col="red",lwd=1)
## Teste de autocorrelação
require(forecast)
## Warning in sample.int(.Machine$integer.max - 1L, 1L): '.Random.seed' is not
## an integer vector but of type 'NULL', so ignored
checkresiduals(reg1)
##
## Breusch-Godfrey test for serial correlation of order up to 10
##
## data: Residuals
## LM test = 17.909, df = 10, p-value = 0.05652
require(lmtest)
dwtest(reg1)
##
## Durbin-Watson test
##
## data: reg1
## DW = 0.68718, p-value = 9.965e-08
## alternative hypothesis: true autocorrelation is greater than 0
Comentários:
1 - há problemas claros nos resíduos porque os resíduos apresentam um padrão de autocorrelação positiva;
2 - Essencialmente, a autocorrelação positiva está sugerindo o viés variável omitida;
3 - Além disso, temos um pequeno DW e R2 perto de 1 [regressão espúria].
reg2<-lm(log(RGDP_FIJI) ~ log(RGDP_AUS) + log(SUGAROUTPUT_FIJI))
summary(reg2)
##
## Call:
## lm(formula = log(RGDP_FIJI) ~ log(RGDP_AUS) + log(SUGAROUTPUT_FIJI))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.038984 -0.013051 0.002852 0.012604 0.028664
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.92406 0.36643 -13.438 8.79e-12 ***
## log(RGDP_AUS) 0.78389 0.02889 27.132 < 2e-16 ***
## log(SUGAROUTPUT_FIJI) 0.10769 0.02305 4.671 0.000131 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.01953 on 21 degrees of freedom
## (20 observations deleted due to missingness)
## Multiple R-squared: 0.9868, Adjusted R-squared: 0.9855
## F-statistic: 784.9 on 2 and 21 DF, p-value: < 2.2e-16
## Teste do resíduo
plot(reg2$residuals,type="l")
abline(h=mean(reg2$residuals), col="red",lwd=1)
## Teste de autocorrelação
require(forecast)
checkresiduals(reg2)
##
## Breusch-Godfrey test for serial correlation of order up to 10
##
## data: Residuals
## LM test = 15.294, df = 10, p-value = 0.1217
require(lmtest)
dwtest(reg2)
##
## Durbin-Watson test
##
## data: reg2
## DW = 1.174, p-value = 0.006431
## alternative hypothesis: true autocorrelation is greater than 0
Comentários:
1 - os resíduos estão começando a parecer um pouco mais aleatórios;
2 - No entanto, existem áreas problemáticas claras (20). E especificamente, eu vou apontar você para esta área aqui, o que na verdade é o período correspondente à Grande Recessão - ou a Grande Crise Financeira que ocorreu nos Estados Unidos;
3 - Outra possibilidade é o embargo europeu [vamos observar o gráfico abaixo].
require(dygraphs)
dygraph(RGDP_FIJI)
O que faremos? Vamos criar uma variável dummy que nos permita modelar esse período atípico da nossa série de tempo.
reg3<-lm(log(RGDP_FIJI) ~ log(RGDP_AUS) + log(SUGAROUTPUT_FIJI) + dummy_crise)
summary(reg3)
##
## Call:
## lm(formula = log(RGDP_FIJI) ~ log(RGDP_AUS) + log(SUGAROUTPUT_FIJI) +
## dummy_crise)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.02693 -0.01039 0.00277 0.01150 0.02932
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.96624 0.32784 -15.149 2.01e-12 ***
## log(RGDP_AUS) 0.79766 0.02639 30.225 < 2e-16 ***
## log(SUGAROUTPUT_FIJI) 0.10147 0.02075 4.891 8.83e-05 ***
## dummy_crise -0.02721 0.01084 -2.511 0.0207 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.01745 on 20 degrees of freedom
## (20 observations deleted due to missingness)
## Multiple R-squared: 0.99, Adjusted R-squared: 0.9885
## F-statistic: 657.5 on 3 and 20 DF, p-value: < 2.2e-16
## Teste do resíduo
plot(reg3$residuals,type="l")
abline(h=mean(reg3$residuals), col="red",lwd=1)
## Teste de autocorrelação
require(forecast)
checkresiduals(reg3)
##
## Breusch-Godfrey test for serial correlation of order up to 10
##
## data: Residuals
## LM test = 13.512, df = 10, p-value = 0.1964
require(lmtest)
dwtest(reg3)
##
## Durbin-Watson test
##
## data: reg3
## DW = 1.656, p-value = 0.08913
## alternative hypothesis: true autocorrelation is greater than 0
Comentários:
1 - a variável dummy é significante e ajudou a modelar o período atípico ocorrido em nossa série temporal.
Agora, como precisamos de variáveis de atraso, devemos instalar o pacote “dynlm”:
# install.packages("dynlm")
library(dynlm)
reg4 <- dynlm(log(RGDP_FIJI) ~ L(log(RGDP_FIJI),1) + log(RGDP_AUS) + L(log(RGDP_AUS),1) + log(SUGAROUTPUT_FIJI) + dummy_crise)
summary(reg4)
##
## Time series regression with "ts" data:
## Start = 1990, End = 2013
##
## Call:
## dynlm(formula = log(RGDP_FIJI) ~ L(log(RGDP_FIJI), 1) + log(RGDP_AUS) +
## L(log(RGDP_AUS), 1) + log(SUGAROUTPUT_FIJI) + dummy_crise)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.0237370 -0.0114449 -0.0000327 0.0108546 0.0241914
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4.30599 0.65624 -6.562 3.64e-06 ***
## L(log(RGDP_FIJI), 1) 0.10749 0.13005 0.827 0.419330
## log(RGDP_AUS) 1.39504 0.28195 4.948 0.000104 ***
## L(log(RGDP_AUS), 1) -0.69496 0.26321 -2.640 0.016623 *
## log(SUGAROUTPUT_FIJI) 0.08271 0.02065 4.005 0.000830 ***
## dummy_crise -0.02311 0.00964 -2.398 0.027562 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.01534 on 18 degrees of freedom
## (19 observations deleted due to missingness)
## Multiple R-squared: 0.993, Adjusted R-squared: 0.9911
## F-statistic: 512.4 on 5 and 18 DF, p-value: < 2.2e-16
## Teste do resíduo
plot(reg4$residuals,type="l")
abline(h=mean(reg4$residuals), col="red",lwd=1)
## Teste de autocorrelação
require(forecast)
checkresiduals(reg4)
##
## Breusch-Godfrey test for serial correlation of order up to 10
##
## data: Residuals
## LM test = 15.142, df = 10, p-value = 0.127
require(lmtest)
dwtest(reg4)
##
## Durbin-Watson test
##
## data: reg4
## DW = 2.3243, p-value = 0.5943
## alternative hypothesis: true autocorrelation is greater than 0
Vamos ver a previsão dentro da amostra:
ts.plot(window(RGDP_FIJI,start=1990),exp(predict(reg4)),col=c(1,2))
Comentários:
1 - Para fazer a previsão fora da amostra nós precisamos, prever as variáveis independentes [precisamos criar uma nova base de dados - x];
2 - Como nós não temos relações simultâneas entre as variáveis, não é necessário estimar a re4lação de longo prazo no modelo [A drunk and her dog](https://github.com/pedrocostaferreira/SeriesTemporais/blob/master/Aula9_ADL%2BECM_a-drunk-and-her-dog.pdf).
Observe que temos no nosso modelo como variáveis explicativas o PIB da Australia e a produçã de açucar de FIJI, dessa forma, precisamos criar uma base com essas variáveis para a previsão.
# dados para a previsão
x <- ts(Fiji_dataset[-nrow(Fiji_dataset), c("RGDP_AUS","SUGAROUTPUT_FIJI")], start = 1970, freq = 1)
Agora, eu quero prever mais de uma série temporal simultaneamente. Para isso, estou usando as funções “lapply” e “auto.arima” para estimar automaticamente modelos ARIMA e fazer previsões para o PIB da Australia e a produção de açucar de FIJI.
library(forecast)
models <- lapply(x, FUN = forecast::auto.arima, allowdrift = F)
forecasts <- lapply(models, FUN = forecast::forecast, h = 4, level = 95)
RGDP_AUS_fcst <- forecasts$RGDP_AUS
SUGAROUTPUT_FIJI_fcst <- forecasts$SUGAROUTPUT_FIJI
Agora, eu vou usar as informações obtidas acima para fazer a previsão 4 passos à frente:
% Previsão 1 passo à frente
# 2014 forecast
newdata <- matrix(c(1, # intercept
log(RGDP_FIJI[length(RGDP_FIJI)]), # log(RGDP_FIJI)_(t-1)
log(RGDP_AUS_fcst$mean[1]), # log(RGDP_AUS)
log(RGDP_AUS[length(RGDP_AUS)]), # log(RGDP_AUS)_(t-1)
log(SUGAROUTPUT_FIJI_fcst$mean[1]), # log(SUGAROUTPUT_FIJI)
0), # dummy_crise
nrow = 6, ncol = 1)
prev2014 <- exp(reg4$coefficients %*% newdata)
% Previsão 2 passos à frente
# 2015 forecast
newdata <- matrix(c(1, # intercept
log(prev2014), # log(RGDP_FIJI)_(t-1)
log(RGDP_AUS_fcst$mean[2]), # log(RGDP_AUS)
log(RGDP_AUS_fcst$mean[1]), # log(RGDP_AUS)_(t-1)
log(SUGAROUTPUT_FIJI_fcst$mean[2]), # log(SUGAROUTPUT_FIJI)
0), # dummy_crise
nrow = 6, ncol = 1)
prev2015 <- exp(reg4$coefficients %*% newdata)
% Previsão 3 passos à frente
# 2016 forecast
newdata <- matrix(c(1, # intercept
log(prev2015), # log(RGDP_FIJI)_(t-1)
log(RGDP_AUS_fcst$mean[3]), # log(RGDP_AUS)
log(RGDP_AUS_fcst$mean[2]), # log(RGDP_AUS)_(t-1)
log(SUGAROUTPUT_FIJI_fcst$mean[3]), # log(SUGAROUTPUT_FIJI)
0), # dummy_crise
nrow = 6, ncol = 1)
prev2016 <- exp(reg4$coefficients %*% newdata)
% Previsão 4 passos à frente
# 2017 forecast
newdata <- matrix(c(1, # intercept
log(prev2016), # log(RGDP_FIJI)_(t-1)
log(RGDP_AUS_fcst$mean[4]), # log(RGDP_AUS)
log(RGDP_AUS_fcst$mean[3]), # log(RGDP_AUS)_(t-1)
log(SUGAROUTPUT_FIJI_fcst$mean[4]), # log(SUGAROUTPUT_FIJI)
0), # dummy_crise
nrow = 6, ncol = 1)
prev2017 <- exp(reg4$coefficients %*% newdata)
% Todas as previsões fora da amostra
# all forecasts
all <- ts(c(exp(predict(reg4)), prev2014, prev2015, prev2016, prev2017), start = 1990, freq = 1)
ts.plot(window(RGDP_FIJI, start = 1990, freq = 1), all, col = 1:2)
all <- ts(c(prev2014, prev2015, prev2016, prev2017), start = 2014, freq = 1)
ts.plot(window(RGDP_FIJI, start = 1990, freq = 1), all, col = 1:2)
Doutor em Engenharia Elétrica - (Decision Support Methods) e Mestre em Economia. Co-autor dos livros “Planejamento da Operação de Sistemas Hidrotérmicos no Brasil” e “Análise de Séries Temporais em R: um curso introdutório”. É o primeiro pesquisador da América Latina a ser recomendado pela empresa RStudio Inc. Atuou em projetos de Pesquisa e Desenvolvimento (P&D) no setor elétrico nas empresas Light S.A. (e.g. estudo de contingências judiciais), Cemig S.A, Duke Energy S.A, entre outras. Ministrou cursos de estatística e séries temporais na PUC-Rio e IBMEC e em empresas como o Operador Nacional do Setor Elétrico (ONS), Petrobras e CPFL S.A. Atualmente é professor de Econometria de Séries Temporais e Estatística, cientista chefe do Núcleo de Métodos Estatísticos e Computacionais (FGV|IBRE), coordenador dos cursos Economia Descomplicada (FGV|IDE) e Big Data e Data Science (FGV|IDE) e sócio-diretor da empresa Model Thinking Br (MTBr). É também revisor de importantes journals, como Energy Policy e Journal of Applied Statistics. Principais estudos são em modelos Econométricos, Incerteza Econômica, Preços, R software e Business Cycle.
contatos:
email: pedro.guilherme@fgv.br
website: pedrocostaferreira.github.io
GitHub: github.com/pedrocostaferreira
Linkedin: linkedin.com/pedro-costa-ferreira