Category

Dicas de R

Evolução do coronavírus pelo mundo

By | Dicas de R

Construir um modelo que busque identificar a evolução de casos confirmados de contaminação por vírus não é algo trivial. Basicamente, porque é difícil incluir no modelo contrapartidas que sejam feitas pelos países. Isso dito, uma primeira avaliação passa por verificar a evolução dos casos confirmados pelo mundo. O gráfico abaixo ilustra a evolução na China, que adotou medidas fortes de contenção, na Itália, no mundo e no Brasil.

Maiores detalhes sobre a base de dados podem ser vistos no post anterior. Ao longo dos próximos dias, vou escrever outros textos sobre o assunto, bem como devo colocar algum exercício de modelagem e previsão no Clube do Código.

___________________

(*) Isso e muito mais você aprende nos nossos Cursos Aplicados de R.


Análise do coronavírus com o R

By | Dicas de R

Foi uma semana excepcionalmente complexa para os mercados financeiros globais. Na BOVESPA, houve quatro circuit breakers, algo inédito na história da bolsa. A conjunção do avanço do coronavírus pelo mundo com a tensão no mercado de petróleo estão por trás do abalo sísmico. De forma a compreender o avanço da doença pelo mundo, há uma boa base de dados disponibilizada pelo Center for Systems Science and Engineering da Johns Hopkins University. Os dados estão disponíveis para o período de 22 de janeiro a 12 de março. O repositório pode ser visto aqui.

Para quem tiver interesse em olhar os dados com o R, é possível ainda baixar um guia bem legal produzido pelo Yanchang Zhao. Há um post no R Bloggers sobre o assunto aqui. A seguir, eu ilustro o avanço da doença pelo mundo e o comportamento da taxa de letalidade.

Os casos confirmados de coronavírus chegaram a 128,3 mil casos, com uma taxa de letalidade de 3,67%. Chama atenção a rapidez com que a doença tem se alastrado pelo mundo. Tendência que deve continuar nas próximas semanas.

___________________

(*) Isso e muito mais você aprende nos nossos Cursos Aplicados de R.


Tidyverse: data science no R

By | Dicas de R

___________________

(*) Isso e muito mais você aprende nos nossos Cursos Aplicados de R.


Introdução à Séries Temporais

By | Dicas de R

Uma série temporal é, basicamente, uma sequência de observações tomada ao longo de um período de tempo. Em termos um pouco mais formais, como posto em Bueno (2011), dizemos que uma série temporal \left \{y_{1}, y_{2}, ..., y_{T} \right \} é uma possível realização de um processo estocástico, sendo este uma sequência de variáveis aleatórias. Diversos conjuntos de dados se apresentam como uma série temporal, como a taxa de desemprego, os juros básicos de uma economia, o PIB, a taxa de inflação, etc, o que torna esse campo da econometria extremamente importante. Para além da economia, há também aplicações do que chamamos de econometria de séries temporais na engenharia, nos negócios, nas ciências naturais, nas ciências sociais, etc.

Como posto em Enders (2009), "(...) the task facing the modern time-series econometrician is to develop reasonably simple models capable of forecasting, interpreting and testing hypotheses concerning economic data".

A econometria de séries temporais estará, nesse contexto, preocupada em explicar o passado de uma determinada variável, construir relações entre variáveis distintas e gerar previsões para alguns períodos à frente. Para isso, devemos construir modelos, simplificações da realidade que buscam ressaltar algumas características importantes das séries em que estamos interessados.

# Séries Temporais e Processos Estocásticos

Sendo um pouco mais formal, podemos verificar como os conceitos de série temporal e processo estocástico se relacionam. Usando Pfaff (2008),

Um processo estocástico é uma sequência ordenada de variáveis aleatórias, podendo ser definido formalmente como

(1)   \begin{equation*}\left \{y(s,t), s \in S, t \in \Im \right \}\end{equation*}

onde, para cada t \in \Im, y(., t) é uma variável aleatória no espaço amostral S, e a realização desse processo estocástico é dada por y(s, .) para cada s \in S com respeito a um ponto no tempo t \in \Im. Consequentemente, \textbf{a série temporal que observamos é uma realização particular de um processo estocástico desconhecido}. Ela pode ser representada como segue

(2)   \begin{equation*} \left \{ y \right \}_{t=1}^{T} = \left \{ y_{1}, y_{2}, ..., y_{t}, ..., y_{T-1}, y_{T} \right \} \end{equation*}

Nesses termos, esse processo estocástico desconhecido é o que chamamos de processo gerador dos dados que formam uma série temporal. Cada y_{t} em \left \{ y \right \}_{t=1}^{T} é, desse modo, apenas um valor possível de uma variável aleatória. Uma variável aleatória, por seu turno, é aquela que assume valores numéricos e tem um resultado que é determinado por um experimento. Para maiores detalhes sobre fundamentos estatísticos, ver, por exemplo, os apêndices de Wooldridge (2013). O desafio do econometrista será, portanto, tendo acesso apenas à série temporal, buscar compreender esse processo estocástico desconhecido. Quanto melhor for essa compreensão, melhor será a modelagem e, com efeito, a previsão de observações futuras.

# Decomposição de uma série temporal

De modo a compreender o processo gerador de dados de uma determinada série temporal, pode ser interessante decompô-la em alguns componentes. Como em Cowpertwait et al. (2009)

(3)   \begin{equation*} y_{t} = TD_{t} + sz_{t} + \varepsilon_{t} \end{equation*}

Onde, no tempo t, y_{t} é uma série temporal, TD_{t} é uma tendência, sz_{t} é um efeito sazonal e \varepsilon_{t} é um termo de erro. No \mathbf{R}, podemos fazer essa decomposição com a função decompose, como abaixo.


### Importar e decompor dados da Inflação
inflacao = Quandl('BCB/433', order='asc', type='ts',
start_date='2007-01-01')
inflacao %>%
decompose %>%
autoplot

Escolhemos acima a série de inflação medida pelo Índice de Preços ao Consumidor Amplo (IPCA). Observe o leitor que é possível verificar os dados observados, um componente de tendência, a parte sazonal e um termo de erro. Como veremos ao longo do nosso curso de Séries Temporais usando o R, identificar corretamente esses componentes é um passo importante para compreender o processo gerador de dados de uma série.

# Sazonalidade

Como vimos acima, a inflação apresenta um componente sazonal bastante nítido.


ggmonthplot(inflacao)

Isto é, em um ano calendário, uma série pode apresentar um comportamento que se repete.

# Estacionariedade

Uma característica extremamente importante de uma série temporal, que percorrerá praticamente todo o nosso curso de Séries Temporais usando o R, é o de estacionariedade. Como vimos acima, uma série temporal nada mais é do que a realização particular de um processo estocástico. Essa realização, contudo, pode ser estacionária ou não. Observe, por exemplo, a série abaixo.


n <- 150
eps <- rnorm(n)
trend <- seq_len(n)
x2 <- rep(0, n)
for (i in seq.int(2, n)){
x2[i] <- trend[i] + x2[i-1] + eps[i]
}

autoplot(ts(x2))

Ao olhar a série acima, chama atenção a tendência da mesma. Significa dizer que se estivéssemos interessados em modelar a série, teríamos de levar essa tendência crescente em consideração. Isso é, de fato, um problema. Para entendermos melhor essa questão, vamos definir o que seja uma série estacionária.

Com base em Enders (2009), podemos assumir que um processo estocástico, tendo uma média e variância finitas, será covariância estacionário se para todos t e t-k,

(4)   \begin{eqnarray*} E(y_{t}) = E(t-k) = \mu \\ E\left [(y_{t} - \mu)^2 \right ] = E\left [(y_{t-k} - \mu)^2 \right ] = \sigma_{y}^2 \\ E\left [(y_{t} - \mu)(y_{t-k} - \mu) \right ] = E\left [(y_{t-j} - \mu)(y_{t-j-k} - \mu) \right ] = \gamma_{k} \end{eqnarray*}

onde \mu, \sigma_{y}^2 e \gamma_{k} são todas constantes. Em termos simples, desse modo, uma série temporal é convariância estacionária se sua média e todas as autocovariâncias não são afetadas por mudanças na origem do tempo. Em outras palavras, como explica Wooldridge (2013), 'a estacionariedade da covariância enfatiza somente os primeiros dois momentos de um processo estocástico: a média e a variância do processo são constantes no decorrer do tempo e a covariância entre y_{t} e y_{t+h} depende somente da distância entre os dois termos, h, e não da localização do período de tempo inicial, t.'

A estacionariedade é extremamente importante para a modelagem de uma série temporal. Isso porque, suponha que estejamos regredindo \left \{ y \right \}_{t=1}^{T} contra \left \{ x \right \}_{t=1}^{T}. Se estivermos lidando com séries não estacionárias, isso implica que os coeficientes que encontrarmos não serão representativos da relação entre elas. Estaremos, assim, encontrando uma relação espúria. Logo, antes de construir um modelo econométrico, precisaremos nos certificar se as séries em questão são, de fato, estacionárias ou, claro, lidar com esse fato através de algum outro procedimento, como veremos mais à frente nesse curso.

# Tipos de modelos de séries temporais

Há, basicamente, duas formas de se entender uma série temporal, do ponto de vista econométrico. Modelos de série temporal podem ser:

Modelos Univariados - as características da série de interesse são explicadas exclusivamente a partir do comportamento da própria série;

Modelos Multivariados - as características da série de interesse são explicadas não apenas em função da própria série, mas também por outras séries. Os modelos multivariados podem ser escalares, quando há apenas uma única equação, ou vetoriais, quando há múltiplas equações.

Quando se utilizará uma ou outra forma de modelagem vai depender muito das características da nossa série de interesse, como veremos ao longo do nosso curso.

___________________

(*) Isso e muito mais você aprende em nosso curso de Séries Temporais usando o R



Criando mapas com o R

By | Dicas de R

Hoje em dia é bastante fácil construir mapas brasileiros com o R através dos pacotes ggplot2 e o geobr. Para ilustrar, vou dar um exemplo aqui de um mapa temático que fornece o IDH dos municípios do Rio de Janeiro. O script começa com alguns pacotes sendo carregados.


library(geobr)
library(ggplot2)
library(sf)
library(dplyr)
library(rio)
library(readr)

A seguir, importo o arquivo idh.csv que contém o IDH dos 92 municípios do Rio de Janeiro e carrego as informações de longitude e latitude desses municípios. Também mesclo ambos os arquivos tendo por base os 92 municípios do Estado.


idh = read_csv2('idh.csv', locale=locale(encoding='Latin1'))
mun_rj <- read_municipality(code_muni=33, year=2017)
all_mun_rj = left_join(mun_rj, idh, by='name_muni')

O dataset está pronto para ser colocado em um gráfico. Abaixo, um exemplo.


no_axis <- theme(axis.title=element_blank(),
axis.text=element_blank(),
axis.ticks=element_blank())

ggplot() +
geom_sf(data=all_mun_rj, aes(fill=idh), color= NA, size=.15)+
labs(title="IDH dos Municipíos do RJ",
caption='Fonte: analisemacro.com.br', size=8)+
scale_fill_distiller(palette = "Greens", limits=c(0.60,0.85),
name="IDH")+
theme_minimal()+
no_axis

E o mapa...

Gostou? Nosso Curso de Introdução ao R para Análise de Dados está com inscrições abertas!

______________


(*) O arquivo idh.csv está disponível aqui.

 

Cadastre-se na newsletter
e receba nossas novidades em primeira mão!