Neste curso discutiremos sobre análise de séries temporais e, basicamente, estaremos interessados em fazer boas previsões. Mas, o que é uma boa previsão? Qual modelo devemos usar? Como muito bem disse Box, “todos os modelos estão errados, mas alguns são úteis”. Esse pensamento de Box nunca esteve tão atual. Em uma época em que as mudanças estão ocorrendo em uma velocidade imensa, acertar as previsões está cada dia mais difícil. O World Economic Forum publicou recentemente um texto interessante [We’re moving fast. But nobody knows where we’re going], no qual os autores fazem uma pergunta bem provocativa: “The end of forecasting?”. A ideia do artigo é simples e pertinente: em uma era onde as coisas se modificam em uma velocidade incrível, qual seria a utilidade e a veracidade das previsões?
The sooner we realize that long-term forecasting is becoming obsolete, the better we’ll be able to cope with the new reality. Businesses are already responding by hiring **Chief Digital Officers**, promoting entrepreneurial culture, and elevating the innovation imperative to the level of existential priority.[World Economic Forum]
Hal Varian (Varian 2014), economista chefe da Alphabet, escreveu um artigo super interessante, e que eu recomendo fortemente a leitura para meus alunos, sobre como o estudo da econometria deve evoluir na nova era do “Big Data”. Em suma, mais que boas previsões, é preciso modificar a cultura das empresas e capacitar pessoas para que estejam apitas a viver a nova realidade.
Nesse curso, nós vamos ajudá-lo a adquirir uma importante ferramenta de um cientista de dados, que é a capacidade de criar cenários e estar apto a responder à questão: “E se isso acontecer…”. Vamos explorar os modelos univariados e multivariados; calcular elasticidades, fazer previsões dentro e fora da amostra e criar cenários baseados em diferentes conjunturas econômicas.
É claro que este é um curso introdutório, há avanços importantes no mundo de séries de tempo que não veremos nesse curso, mas que temos pesquisado e implementado para a nossa realidade. Por exemplo, a economista Lucrezia Reichlin lidera um time de pesquisadores na empresa Now-casting.com onde o objetivo é fazer previsões diárias do PIB de diversos países. Estes modelos, além nos permitir utilizar séries temporais com múltiplas frequências (e.g. mensais, trimestrais, diárias), permite também a “extração do sentimento” de texto jornalísticos para atualizar as previsões, neste caso, usando machine learning. Na FGV IBRE nós também temos um projeto sobre nowcasting e estamos trabalhando para, em breve, termos um pacote sobre o tema no R. Nós criamos também um dashboard no Rshiny onde acompanhamos as nossas previões, contudo, é importante lembrar que, no momento, estamos mais preocupados em entender a metodologia e menos preocupados e acertar as previsões [Nowcasting].
Por fim, no meu site é possível acompanhar algumas das pesquisas que estamos fazendo e que utilizam modelos de séries de tempo um pouco mais complexos do que os modelos que veremos ao longo desse curso. Além disso, nesse site, disponibilizo uma versão preliminar do livro de Séries Temporais que fiz com o time do NMEC|FGV e que será muito útil para o acompanhamento desse curso.
O curso é dividido, basicamente, da seguinte maneira:
Explorar os softwares R e RStudio
Vamos discutir nossas motivações para utilizar o software R e fazer uma breve introdução.
Análise de Séries Temporais: primeiros passos
Nessa seção iremos iniciar nossa discussão sobre séries temporais. A ideia é explorar alguns pacotes do R utilizados para lidar com séries de tempo e ainda, discutir conceitos importantes como, modelos univariados e multivariados, sazonalidade, ciclo e tendência1.
Modelos univariados
Nesse dia veremos os modelos (S)ARIMA, um tipo de modelo que olha apenas para o passado para prever o futuro. Como aplicação, veremos a modelagem da venda de passagens aéreas (caso clássico), exploraremos o pacote BETS e modelaremos a ST de produção de bens intermediários e por fim, faremos um exercício utilizando uma ST com frequência mensal2.
Modelos Multivariados
Nesse dia veremos os modelos de Regressão Dinâmica ou ADL(Autoregressive Distributed Lag). Modelaremos a venda de sorvetes e o PIB de FIJI com o intuito de calcular previsões e elasticidades. Por fim, haverá uma breve discussão sobre cointegração e faremos o Pair trading entre as ações do Itaú e do Bradesco3.
IEEE 2016 Top Programming Languages
R package makes it fun and easy to learn R programming and data science.
install.packages("swirl")
library("swirl")
swirl()
O R não é apenas uma linguagem de programação, é também um ambiente integrado de desenvolvimento. É um projeto GNU, que foi desenvolvido em Bell Laboratories (antiga AT & T, agora Lucent Technologies) por John Chambers e seus colegas. (Team (2017))
De acordo com seus criadores, o R é um conjunto integrado de instalações de software para manipulação de dados, cálculo e exibição gráfica, e esse ambiente inclui:
Além disso, o R conta com uma ampla comunidade acadêmica que oferece suporte e ajuda aos usuários (CRAN) além de oferecer um extensão às funções usuais do R, com os pacotes.
Isso faz do R um projeto aberto, o que sigfinica ser continuamente melhorado, atualizado e expandido pela comunidade global de desenvolvedor e seus uários incrivelmente apaixonados. (Bowles 2015)
O RStudio é um ambiente de desenvolvimento integrado (IDE) para R. Nele estão inclusos ferramentas que facilitam o uso da linguagem R, como um console e uma janela que suporta a execução do código direto, e instrumentos que auxiliam na análise histórica do script e debugação de possíveis erros.
O RStudio está disponível em open source e edições comerciais e é executado no desktop (Windows, Mac e Linux) ou em um navegador conectado ao RStudio Server ou ao RStudio Server Pro (Debian / Ubuntu, RedHat / CentOS e SUSE Linux).
É muito fácil instalar os softwares R e RStudio. Abaixo nós mostramos os passos para a instalação, mas, caso tenha alguma dúvida, assista a este vídeo no youtube: Instalação dos softwares R e RStudio
Instalando o R
Instalando o RStudio
Vamos alguns exemplos de como fazer operações usando o R. Para maiores detalhes, consulte o primeiro capítulo do livro Análise de Séries Temporais em R que está disponível no meu site.
Exemplo 1: Qual é o resultado de \(\sqrt[2]{25}\)?
sqrt(25)
## [1] 5
Exemplo 2: Qual é o resto da divisão de \(\frac{5}{2}\)?
5%%2
## [1] 1
Exemplo 3: Tome \(a=25\) e \(b=45\) analise se “a” é maior:
a=25
b=45
a>b
## [1] FALSE
Exemplo 4: Tome \(a=15\) e \(b=25\) faça \(c=a+b\) e \(d=\left ( \sqrt[3]{c}\right )\):
a=15
b=25
(c=a+b)
## [1] 40
d=c^(1/3)
d
## [1] 3.419952
Exemplo 5: Tome \(nome_1 = Big\) e \(nome_2 = Data\). Faça \(nomecompleto= nome_1 +nome_2\):
Para resolver essa questão é necessário fazer uso da função paste(), essa função é usada para concatenar duas ou mais variáveis character.
nome1="big"
nome2='data'
nomecompleto=paste(nome1,nome2)
nomecompleto
## [1] "big data"
## Caso não seja útil o espaço entre as palavras, basta usar a função paste0().
Exemplo 6: Transforme 06/02/2017 em data:
data="06/02/2017"
formatodata = as.Date(x = data,format="%d/%m/%Y")
formatodata
## [1] "2017-02-06"
Exemplo 7: Concatene as listas com os nomes dos alunos:
nomes1<-c("Anna","Pedro","Carlos","Bruno","Vanessa","Paula","Italo")
nomes2<-c("Jorge","Davi","Mariana","Carolina","Alice")
(nomes_completo <- c(nomes1,nomes2))
## [1] "Anna" "Pedro" "Carlos" "Bruno" "Vanessa" "Paula"
## [7] "Italo" "Jorge" "Davi" "Mariana" "Carolina" "Alice"
Exemplo 8: Veja a tabela criada abaixo. a) Acesse o preço do Produto D na tabela produtos; b) Acesse os preço do Produto D e Produto E na tabela produtos; c) Acesse a coluna produtos; d) Crie uma coluna quantidade, na tabela preços, que receba os valores \(quantidade<-c(50,100,120,150,200)\):
Produto<-c("Produto A"," Produto B","Produto C", "Produto D","Produto E")
Preco<-c(5,15,4,6,8)
tabela_preco_produto<-data.frame(Produto,Preco)
tabela_preco_produto
## Produto Preco
## 1 Produto A 5
## 2 Produto B 15
## 3 Produto C 4
## 4 Produto D 6
## 5 Produto E 8
## Acesse o preço do *Produto D* na tabela produtos:
tabela_preco_produto[4,2]
## [1] 6
## Acesse os preço do *Produto D* e *Produto E* na tabela produtos:
tabela_preco_produto[4:5,2]
## [1] 6 8
## Acesse a coluna produtos
tabela_preco_produto[,"Produto"]
## [1] Produto A Produto B Produto C Produto D Produto E
## Levels: Produto B Produto A Produto C Produto D Produto E
## Crie uma coluna quantidade, na tabela preços, que receba os valores:
tabela_preco_produto$quantidade<-c(50,100,120,150,200)
tabela_preco_produto
## Produto Preco quantidade
## 1 Produto A 5 50
## 2 Produto B 15 100
## 3 Produto C 4 120
## 4 Produto D 6 150
## 5 Produto E 8 200
Exemplo 9: Seja a matriz A. Qual é o valor na primeira linha e segunda coluna da matriz A?
A<-matrix(c(0,7,0,1,4,5,0,7,0),ncol=3,nrow = 3,byrow = TRUE)
A
## [,1] [,2] [,3]
## [1,] 0 7 0
## [2,] 1 4 5
## [3,] 0 7 0
A[1,2]
## [1] 7
Exemplo 10: Crie uma lista com os parâmetros:
minha_lista<-list("Curso de Formação Executiva em Big Data e Data Science",3, "Introdução ao R")
minha_lista
## [[1]]
## [1] "Curso de Formação Executiva em Big Data e Data Science"
##
## [[2]]
## [1] 3
##
## [[3]]
## [1] "Introdução ao R"
Exemplo 11: Tome \(a=31\) e \(b=30\), analise qual dos dois objetos é o maior.
a=31
b=30
if(a<b){
cat("a é maior que b")
}else{
cat("b é maior que a")
}
## b é maior que a
Exemplo 12: Tome o vetor \(v=[16,18,59,35,27,37,38]\), faça uma estrutura que imprima os valores do vetor.
v=c(16,18,59,35,27,37,38)
for (i in 1:length(v)){
print(v[i])
}
## [1] 16
## [1] 18
## [1] 59
## [1] 35
## [1] 27
## [1] 37
## [1] 38
Exemplo 13: Construa uma função que retornará a média de dois números.
media<-function(a,b){
m<-(a+b)/2
return(m)
}
media(3,5)
## [1] 4
Vamos introduzir a ideia de análise de séries temporais e abordar alguns conceitos importantes sobre o tema, como: sazonalidade, estacionariedade, heterocedásticidade e ciclo.
1. Séries Temporais em diferentes frequências
## Preço diário do ouro
library(ggfortify)
library(fpp2)
autoplot(gold)
## Produção trimetral de fio de lã na Austrália [em toneladas]
autoplot(woolyrnq)
## Produção mensal de gás na Austrália
autoplot(gas)
## Produção de eletricidade [30 em 30 minutos]
autoplot(taylor)
2. Ondas de rádio
3. Eletrocardiograma
4. curvas de Carga
5. Sazonalidade ou Ciclo
O ciclo de vida da população de lebres e de seu principal predador, o lince-canadense, foi revelado nos registros do número de peles vendidas por caçadores para a Hudson Bay Company.
## Número de armadilhas para capturar Lince no Canadá
library(ggfortify)
data(lynx); trapped <- lynx
autoplot(trapped)
A ST apresenta tendência?
trapped.time <- time(trapped)
trapped.lm <- lm(trapped ~ trapped.time)
summary(trapped.lm)
##
## Call:
## lm(formula = trapped ~ trapped.time)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1594 -1211 -755 1032 5366
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -4630.034 8493.112 -0.545 0.587
## trapped.time 3.285 4.523 0.726 0.469
##
## Residual standard error: 1589 on 112 degrees of freedom
## Multiple R-squared: 0.004689, Adjusted R-squared: -0.004198
## F-statistic: 0.5276 on 1 and 112 DF, p-value: 0.4691
De acordo com o modelo, houve um aumento de 3,39 armadilhas por ano, contudo esse parâmetro não foi significante, indicando que não há tendência.
Outra informação que gostaríamos de saber é o tamanho do ciclo. Como observamos graficamente, parece que o ciclo de vida desses animais é de aproximadamente 5 anos.
ma10 <- filter(x=trapped, filter=rep(x=1/10,times=10), sides=2)
ma5 <- filter(x=trapped, filter=rep(x=1/5,times=5), sides=2)
plot(trapped,col="grey", ylab = "Lynx Trapped", xlab = "Year")
lines(ma10,col="red",lwd=2)
lines(ma5,col="purple",lwd=2)
legend("topright", c(" 5-Year Moving Average", "10-Year Moving Average"), bty = "n", col = c("purple","red"), pch = 15)
abline(trapped.lm, col="black",lwd=2, lty="dashed")
* Exemplo de um evento sazonal
library(BETS)
# PMS - Receita nominal de serviços - Total - Brasil
pms <- BETS.get(code = 21637)
library(fpp2)
autoplot(pms)
monthplot(pms)
ggseasonplot(pms, polar = T)
1. Caracterização, Modelagem e Previsão de uma série temporal
2. Função de autocorrelação
Exemplo de uma FAC gerada por um processo AR(1)
require(tseries)
require(BETS)
# Simulando um processo AR(1) com parâmetro 0.5
set.seed(10)
sim.AR<-arima.sim(model=list(ar=0.6),n=100)
library(fpp2)
autoplot(sim.AR)
BETS.corrgram(sim.AR,type = "correlation",lag.max = 36)
3. Processo Ruído Branco
Exemplo de uma FAC gerada por um processo ruído branco
require(tseries)
# Simulando um processo Ruído Branco
set.seed(11)
sim.wn<-arima.sim(model=list(),n=100)
library(fpp2)
autoplot(sim.wn)
require(BETS)
BETS.corrgram(sim.wn,type = "correlation",lag.max = 36)
4. Intervalo de confiança
Para observarmos o intervalo de confiança vamos utilizar dois modelos bem simples: Naive e SNaive.
library(fpp2)
library(forecast)
# Daily closing stock prices of Google Inc
fcgoog <- naive(goog, h = 20)
autoplot(fcgoog)
summary(fcgoog)
##
## Forecast method: Naive method
##
## Model Information:
## Call: naive(y = goog, h = 20)
##
## Residual sd: 8.9145
##
## Error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.4436236 8.921089 6.008889 0.06493981 0.9815741 1
## ACF1
## Training set 0.04680557
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 1001 838.96 827.5272 850.3928 821.4750 856.4450
## 1002 838.96 822.7915 855.1285 814.2325 863.6875
## 1003 838.96 819.1577 858.7623 808.6751 869.2449
## 1004 838.96 816.0943 861.8257 803.9900 873.9300
## 1005 838.96 813.3954 864.5246 799.8623 878.0577
## 1006 838.96 810.9554 866.9646 796.1306 881.7894
## 1007 838.96 808.7116 869.2084 792.6990 885.2210
## 1008 838.96 806.6231 871.2969 789.5049 888.4151
## 1009 838.96 804.6615 873.2585 786.5050 891.4150
## 1010 838.96 802.8062 875.1138 783.6675 894.2525
## 1011 838.96 801.0416 876.8784 780.9688 896.9512
## 1012 838.96 799.3555 878.5645 778.3901 899.5299
## 1013 838.96 797.7383 880.1817 775.9169 902.0031
## 1014 838.96 796.1822 881.7378 773.5371 904.3829
## 1015 838.96 794.6808 883.2392 771.2408 906.6792
## 1016 838.96 793.2287 884.6913 769.0200 908.9000
## 1017 838.96 791.8212 886.0988 766.8674 911.0526
## 1018 838.96 790.4546 887.4654 764.7774 913.1426
## 1019 838.96 789.1254 888.7946 762.7446 915.1754
## 1020 838.96 787.8308 890.0892 760.7646 917.1554
# Quarterly Australian Beer production
fcbeer <- snaive(ausbeer,h = 16)
autoplot(fcbeer)
summary(fcbeer)
##
## Forecast method: Seasonal naive method
##
## Model Information:
## Call: snaive(y = ausbeer, h = 16)
##
## Residual sd: 19.1207
##
## Error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set 3.098131 19.32591 15.50935 0.838741 3.69567 1 0.01093868
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2010 Q3 419 394.2329 443.7671 381.1219 456.8781
## 2010 Q4 488 463.2329 512.7671 450.1219 525.8781
## 2011 Q1 414 389.2329 438.7671 376.1219 451.8781
## 2011 Q2 374 349.2329 398.7671 336.1219 411.8781
## 2011 Q3 419 383.9740 454.0260 365.4323 472.5677
## 2011 Q4 488 452.9740 523.0260 434.4323 541.5677
## 2012 Q1 414 378.9740 449.0260 360.4323 467.5677
## 2012 Q2 374 338.9740 409.0260 320.4323 427.5677
## 2012 Q3 419 376.1020 461.8980 353.3932 484.6068
## 2012 Q4 488 445.1020 530.8980 422.3932 553.6068
## 2013 Q1 414 371.1020 456.8980 348.3932 479.6068
## 2013 Q2 374 331.1020 416.8980 308.3932 439.6068
## 2013 Q3 419 369.4657 468.5343 343.2438 494.7562
## 2013 Q4 488 438.4657 537.5343 412.2438 563.7562
## 2014 Q1 414 364.4657 463.5343 338.2438 489.7562
## 2014 Q2 374 324.4657 423.5343 298.2438 449.7562
5. Valores ajustados e resíduos
O valor ajustado é a previsão de uma observação usando todas as observações passadas, isto é:
fc <- naive(oil)
autoplot(oil, series = "Dados reais") + xlab("Year") + autolayer(fitted(fc), series = "valores ajustados") + ggtitle("Produção de petróleo na Saudi Arabia")
O resíduo é a diferença entre o valor ajustado/previsto e o valor real [são erros 1-passo-a-frente]
autoplot(residuals(fc))
Os resíduos devem se parecer com um ruído branco:
Uma maneira fácil de testar essas propriedades é usando a função “checkresiduals()”.
checkresiduals(fc)
##
## Ljung-Box test
##
## data: Residuals from Naive method
## Q* = 12.59, df = 10, p-value = 0.2475
##
## Model df: 0. Total lags used: 10
6. Treinamento e Teste de previsão
observações:
training <- window(oil, end = 2003)
test <- window(oil, start = 2004)
fc <- naive(training, h = 10)
autoplot(fc) + autolayer(test, series = "conjunto de teste") + autolayer(fitted(fc), series = "valores ajustados")
!! Cuidado
Erro de previsão é a diferença entre o valor observado e o valor previsto no conjunto de teste. Resíduos são os erros do conjunto de treinamento, normalmente 1-passo-a-frente (o erro de previsão pode ser múltiplos passos-a-frente)
7. Acurácia dos modelos de previsão
require(forecast)
accuracy(fc,test)
## ME RMSE MAE MPE MAPE MASE
## Training set 9.87358 52.56156 39.42504 2.506565 12.570647 1.0000000
## Test set 21.60250 35.09832 29.97666 3.963914 5.777875 0.7603458
## ACF1 Theil's U
## Training set 0.1801528 NA
## Test set 0.4029519 1.184862
8. Out-of-sample rolling evaluation
com os mesmos parâmetros estimados para os dados passados, move-se a origem de previsão no período out-of-sample, fazendo-se previsões para cada origem;
9. Exercício
Crie um modelo NAIVE e SNAIVE para a ST de produção de cerveja na Austrália. Interprete os resultados.
library(fpp2)
library(forecast)
cerveja <- window(ausbeer,start = c(1990,1))
ts.plot(cerveja)
# conjunto de teste e treinamento
training <- window(cerveja, end = c(2007,4))
test <- window(cerveja, start = c(2008,1))
cerva_naive <- naive(training, h = 10) #meu horizonte de previsão é do mesmo tamanho que meu conjunto de teste
checkresiduals(cerva_naive)
##
## Ljung-Box test
##
## data: Residuals from Naive method
## Q* = 150.25, df = 8, p-value < 2.2e-16
##
## Model df: 0. Total lags used: 8
autoplot(cerva_naive) + autolayer(test, series = "conjunto de teste") + autolayer(fitted(cerva_naive), series = "valores ajustados")
accuracy(cerva_naive,test)
## ME RMSE MAE MPE MAPE MASE
## Training set -0.1690141 70.80185 58.16901 -1.174978 12.70973 3.874136
## Test set -51.4000000 62.69290 57.40000 -12.954916 14.18442 3.822919
## ACF1 Theil's U
## Training set -0.27090808 NA
## Test set -0.06905715 1.254009
cerva_snaive <- snaive(training, h = 10) #meu horizonte de previsão é do mesmo tamanho que meu conjunto de teste
autoplot(cerva_snaive) + autolayer(test, series = "conjunto de teste") + autolayer(fitted(cerva_snaive), series = "valores ajustados")
checkresiduals(cerva_snaive)
##
## Ljung-Box test
##
## data: Residuals from Seasonal naive method
## Q* = 20.559, df = 8, p-value = 0.008417
##
## Model df: 0. Total lags used: 8
accuracy(cerva_snaive,test)
## ME RMSE MAE MPE MAPE MASE
## Training set -4.073529 17.55621 15.01471 -0.946629 3.429068 1.0000000
## Test set 5.200000 14.31084 13.40000 1.147554 3.168503 0.8924584
## ACF1 Theil's U
## Training set -0.1690361 NA
## Test set 0.1318407 0.298728
Introduction to R for Data Science: este é um curso introdutório e irá ajuda-lo a entender conceitos básicos de programação em R;
Vídeos sobre o R (FGV/IBRE | NMEC): vídeos em português produzidos pelo nosso time da FGV que facilitarão o entendimento de conceitos básicos de programação em R;
Khan Academy: ideal para aprender conceitos básicos de matemática e estatística;
BETS (Brazilian Economic Time Series package) – este é o pacote R que estamos desenvolvendo, fiquem à vontade para instala-lo. Iremos utiliza-lo no nosso curso;
# Instalação do pacote pelo CRAN
install.package("BETS")
# Para obter sempre a versão em desenvolvimento e acompanhar o precessod de criação:
install.packages("devtools")
require(devtools)
install_github("pedrocostaferreira/BETS")
require(BETS)
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: curso introdutório”. É o primeiro e único 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. Atuou como consultor em Big Data e Data Science nas empresas, Coca-Cola Brasil, Light SA, Duratex, ONS, 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 do curso 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 Analytics [e.g detecção de fraudes; HR analytics].
contatos:
email: pedro.guilherme@fgv.br
website: pedrocostaferreira.github.io
GitHub: github.com/pedrocostaferreira
Linkedin: linkedin.com/pedro-costa-ferreira
—
Bowles, M. 2015. “Ensemble Packages in R. See: Http://Blog. Revolutionanalytics. Com/2014/04/Ensemble-Packages-in-R. Html.” Accessed.
Team, R Core. 2017. “R: A Language and Environment for Statistical Computing. Vienna: R Foundation for Statistical Computing. Available Online at: H Ttp.” Www. R-Project. Org.
Varian, Hal R. 2014. “Big Data: New Tricks for Econometrics.” The Journal of Economic Perspectives 28 (2). American Economic Association: 3–27.
Business forecasting: trabalhando com dados reais para resolver problemas reais↩
Business forecasting: Previsão das vendas de passagens aéreas utilizando os modelos (S)ARIMA
Business forecasting: Brazilian Economic Time Series (BETS) package↩
Modelos de Regressão Dinâmica + Séries de tempo
Business forecasting: Previsão e estudo das elasticidades da série temporal de venda de sorvete
Business forecasting: Dynamic regression [modelando o PIB de FIJI]
Business forecasting: Pair trading Itaú|Bradesco↩