Tutorial para reproduzir os resultados do artigo "Prevendo a Inflação no Brasil com grande conjunto de dados: uma aplicação do modelo de fatores comuns"
Caso não tenha ainda instalado:
devtools
do CRAN com o seguinte comando install.packages("devtools")
.#devtools::install_github("santoscs/pimfc")
devtools::load_all()
library(zoo)
# dados das séries macroeconômicas
series <- macroseries
# importa o ipca em 12 meses previsto pela focus
ipca12.focus <- focus
# ipca em 12 meses
ipca12 <- acum(series[,"X38513"])
#restringe periodo dos dados ao mesmo do ipca12
series <- window(series, start=start(ipca12))
pib <- series[,"X521274780"]
selic <- series[,"X32241"]
Este procedimento é demorado devido a grande quantidade de processamento.
# previsões fora da amostra usando fatores comuns
y <- ipca12
x <- series[,colnames(series)!="X38513"]
out.DI <- outsample.di(yh=y, yt=y, x=x, k=3, m=3, p=3, n=60, h=12)
out.DI_tf <- outsample.ditf(yh=y, yt=y, x=x, m=3, p=3, n=60, h=12)
out.DI_tp <- outsample.ditp(yh=y, yt=y, x=x, k=3, m=3, p=3, n=60, h=12)
out.DI_tfp <- outsample.ditfp(yh=y, yt=y, x=x, m=3, p=3, n=60, h=12)
# previsões fora da amostra usando ARIMA e VAR
out.arima <- outsample.arima(ipca12, h=12, k=60)
y <- cbind(ipca12, pib, selic)
out.VAR <- outsample.var(y, h=12, k=60)
# previsoes dos modelos
ipca12.arima <- out.arima$fcast
ipca12.var <- out.VAR$fcast$ipca[,1]
ipca12.DI <- out.DI$fcast
ipca12.DItp <- out.DI_tp$fcast
ipca12.DItf <- out.DI_tf$fcast
ipca12.DItfp <- out.DI_tfp$fcast
# ipca em 12 meses
ipca12.fig <- ipca12
ipca12 <- window(ipca12, start=start(ipca12.arima))
# previsao da focus
ipca12.focus <- window(ipca12.focus, start=start(ipca12), end=end(ipca12))
library(nimcno)
tsplot(ipca12.fig, name = "IPCA")
# matriz de dados
x <- cbind(ipca12, ipca12.focus, ipca12.arima,
ipca12.var, ipca12.DI, ipca12.DItf,
ipca12.DItp, ipca12.DItfp)
tab <- tab.reqm(x, obs = "ipca12", ref = "ipca12.focus")
knitr::kable(tab)
tab <- tab.enctest(x, obs = "ipca12", ref = "ipca12.focus")
knitr::kable(tab)
ipca12.carima <- 0.5*ipca12.focus + 0.5*ipca12.arima
ipca12.cvar <- 0.5*ipca12.focus + 0.5*ipca12.var
ipca12.cdi <- 0.5*ipca12.focus + 0.5*ipca12.DI
ipca12.cditf <- 0.5*ipca12.focus + 0.5*ipca12.DItf
ipca12.cditp <- 0.5*ipca12.focus + 0.5*ipca12.DItp
ipca12.cditfp <- 0.5*ipca12.focus + 0.5*ipca12.DItfp
x <- cbind(ipca12, ipca12.focus, ipca12.carima, ipca12.cvar,
ipca12.cdi, ipca12.cditf, ipca12.cditp, ipca12.cditfp)
tab <- tab.reqm(x, obs = "ipca12", ref = "ipca12.focus")
knitr::kable(tab)
```{r, results='asis', echo=FALSE} tab <- descricao[,c('serie','unidade', "cod", "trans")] library(knitr) kable(tab)
## Graficos das series
```{r graficos}
# series sem transformacao
series <- rawmacroseries
# padroniza
st <- zoo(apply(series, 2, function(x){(x-mean(x))/sd(x)}), order.by = index(series))
# series transformadas
series_trans <- macroseries
# padroniza
tr <- zoo(apply(series_trans, 2, function(x){(x-mean(x))/sd(x)}), order.by = index(series_trans))
# graficos
library(gridExtra)
library(nimcno)
for(i in 1:(floor(length(st[1,])/10)/2)){
if(i!=(floor(length(st[1,])/10)/2)){
p1 <- tsplot(st[,(10*(2*i-1)-9):(10*(2*i-1))])
p2 <- tsplot(tr[,(10*(2*i-1)-9):(10*(2*i-1))])
p3 <- tsplot(st[,(10*(2*i)-9):(10*(2*i))])
p4 <- tsplot(tr[,(10*(2*i)-9):(10*(2*i))])
grid.arrange(p1, p2, p3, p4, ncol = 4)
}else{
p1 <- tsplot(st[,(10*(2*i-1)-9):(10*(2*i-1)+1)])
p2 <- tsplot(tr[,(10*(2*i-1)-9):(10*(2*i-1)+1)])
p3 <- tsplot(st[,(10*(2*i)-9):(10*(2*i)+1)])
p4 <- tsplot(tr[,(10*(2*i)-9):(10*(2*i)+1)])
grid.arrange(p1, p2, p3, p4, ncol = 4)
}
}
```{r regre} library(stargazer)
stargazer(summary(out.arima$fit)) tab <- summary(out.VAR$fit$fit) stargazer(tab$varresult$ipca12$coefficients)
stargazer(out.DI$model$fit, out.DI_tp$model$fit, out.DI_tp$model$fit, out.DI_tf$model$fit, out.DI_tfp$model$fit, type= "html", out="models.htm")
```
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.