Tag

análise estatística Archives - Análise Macro

Hackeando o R: construindo gráficos com resultados estatísticos

By | Hackeando o R

Nesse post do Hackeando o R, iremos dar uma olhada em um pacote bem interessante que pode ajudar na criação de gráficos com propriedades estatísticas, de forma que a análise visual se torne mais simples e rápida.

O pacote {ggstatsplot} facilita não só a criação, bem como ajuda a sumarizar resultados estatísticos dentro dos próprios gráficos pro usuário.

Iremos utilizar como exemplo nesse post dados referentes aos retornos mensais de três ativos financeiros: PETR4, ITUB4 e ABEV3, além também dos retornos mensais do índice ibovespa. Caso tenha interesse em aprender a como obter esses dados, veja nosso post sobre.

Vamos utilizar os dados da Ibovespa para visualizar o histograma. Veja que o pacote insere uma expressão indicando a média dos retornos, em conjunto com uma linha tracejada. Também é retornado um linha com resultados sobre t-test, p-value, intervalo de confiança, tamanho de efeito, além do número de observações.

# Histograma
gghistostats(
  data = ibov_returns,
  x = `Ibovespa`,
  bindwidth = 1,
  normal.curve = TRUE,
  normal.curve.args = list(color = "red", size = 0.7)
)

Caso tenha um conjunto de dados com diversas variáveis, é possível gerar um gráficos com todas em conjunto.

# Histogramas agrupados

grouped_gghistostats(
  data = asset_returns_long,
  x = returns,
  grouping.var = assets,
  bindwidth = 1,
  normal.curve = TRUE,
  normal.curve.args = list(color = "red", size = 0.7),
  plotgrid.args = list(nrow = 2)
)

Além de um único histograma, é possível também gerar um gráfico de dispersão com uma reta de regressão, além do respectivo histograma de cada variável.

# Gráfico de dispersão com linha de regressão e Histograma

ggscatterstats(
  data = all_returns,
  x = `Ibovespa`,
  y = `ITUB4`
)

Também é possível criar uma matriz de correlação.

# Gráfico de correlação

ggcorrmat(
  data = all_returns,
  colors = c("#B2182B", "white", "#4D4D4D"),
  title = "",
  subtitle = ""
)

O pacote trabalha também com conjunto de dados de outras classes, não só numéricos, utilizando uma estatística apropriada para cada. Além de diversos outros gráficos.

________________________
(*) Para entender mais sobre análises estatísticas, confira nosso Curso de Estatística usando R e Python.

________________________

Focos de Queimadas no Brasil: 2019 versus a Média Histórica

By | Clube AM

Em posts anteriores nesse espaço (ver aqui e aqui), comecei a analisar os dados de focos de queimadas no Brasil disponibilizados pelo INPE - ver dados aqui. Nessas oportunidades, chamei atenção para a sazonalidade da série, que é bastante pronunciada. Já aqui, vou fazer uma análise que antecede qualquer esforço de modelagem e previsão: verificar as estatísticas descritivas da série. Antes de continuar, contudo, quero salientar que meu objetivo com esses posts é meramente didático, isto é, quero mostrar como é possível utilizar o R e conhecimentos de estatística/econometria para analisar dados, seja ele qual for. Isso dito, vamos para o RStudio?

De forma a lembrar o que estamos fazendo, carrego no código abaixo os pacotes utilizados, bem como importo uma planilha Excel para o R.


## Pacotes
library(tidyverse)
library(readxl)
library(forecast)
library(scales)
library(gridExtra)
library(TStools)
library(strucchange)
library(seasonal)
Sys.setenv(X13_PATH = "C:/Séries Temporais/R/Pacotes/seas/x13ashtml")

## Coletar dados
data = read_excel('focos.xlsx')
date = seq(as.Date('2003-01-01'), as.Date('2019-08-01'), by='1 month')
data$obs = date

queimadas = ts(data$Focos, start=c(2003,01), freq=12)

Com o código acima, nós estamos importando os dados cedidos pelo Cristiano Oliveira e transformando em série temporal. Já aqui, ressalto, eu atualizei a planilha com os dados fechados de agosto, de modo que isso dá uma visão um pouco melhor sobre o ano de 2019. Fiquei curioso para ver como 2019 se comporta contra a média histórica dos meses, bem como com os máximos e mínimos de cada um desses meses. Para ver isso, eu utilizei o pacote TStools e gerei a tabelinha com o código abaixo.


seas <- seasplot(queimadas, trend=F, outplot = 3)
medias = colMeans(seas$season)
medias = medias[1:8]

matrix = matrix(NA, nrow=8, ncol=2)

for(i in 1:8){
matrix[i,1] = min(seas$season[,i])
matrix[i,2] = max(seas$season[,i])
}

time = seq(as.Date('2019-01-01'), as.Date('2019-08-01'), by='1 month')
table = data.frame(time, matrix[,1], round(medias,0),
tail(data$Focos,8), matrix[,2])
colnames(table) = c('meses', 'min', 'media', 'anoatual', 'max')

Uma vez criada a tabela, gerei o gráfico abaixo.

A linha azul representa o ano de 2019, enquanto a linha vermelha representa a média histórica de cada mês. Já a área laranja é composta pelos mínimos e máximos de cada um dos meses. O que se observa é que o foco de queimadas está em linha com a média histórica, dentro dos limites de cada mês. A exceção é o mês de março desse ano, que virou o máximo da amostra com 5.213 focos de queimadas. A média histórica desse mês é de 2.611 focos de queimadas ativos.

Isso feito, eu quis dar uma olhada no formato da distribuição dos focos de queimadas dessazonalizados (para detalhes sobre como dessazonalizar os dados, ver aqui). Para isso, primeiro, vi o boxplot da série com o código abaixo.


queimadas_sa <- final(seas(queimadas))

df = data.frame(date=date,
queimadas_sa=queimadas_sa)

ggplot(df, aes(date, queimadas_sa/1000))+
geom_boxplot(fill='#E69F00', color="black")+coord_flip()+
theme_classic()+xlab('')+ylab('')+
labs(title='Boxplot dos focos de queimadas no Brasil (2003-2019)',
subtitle='Dados dessazonalizados',
caption='Fonte: http://queimadas.dgi.inpe.br/queimadas/portal')

E o boxplot...

Novamente aqui, os dados referentes a 2019 estão em linha com a média histórica, à exceção de março, que está no último quartil da distribuição. Por fim, vi o histograma da série dessazonalizada com o código abaixo.


ggplot(df, aes(x=queimadas_sa/1000))+
geom_histogram(binwidth = 1, fill='#E69F00', colour='black')+
xlab('')+ylab('')+
labs(title='Histograma dos focos de queimadas no Brasil (2003-2019)',
subtitle='Dados dessazonalizados',
caption='Fonte: http://queimadas.dgi.inpe.br/queimadas/portal')

E o histograma...

Como esperado, há uma assimetria no formato da distribuição da nossa série. Tudo isso feito, não me parece que 2019 esteja tendo um comportamento diferente dos demais anos.

Esse é, a propósito, o terceiro post dessa série. Um quarto post encerra a série e será publicado nos próximos dias, com um .Rmd completo disponível no Clube do Código. Será a 65ª edição do Clube. Até lá!

____________________

OBS: Para quem gostou da análise descritiva, temos um Curso de Introdução à Estatística usando o R que trata dessas questões.

Uma análise estatística do IPCA-15

By | Comentário de Conjuntura

Hoje, o IBGE divulga o IPCA-15, Índice de Preços ao Consumidor Amplo 15, que busca medir a inflação em geral do dia 16 do mês anterior ao 15 do mês de referência, seguindo de resto a mesma metodologia do IPCA. Aproveito a divulgação do índice para mostrar algumas coisas interessantes que vemos no curso de Introdução à Estatística usando o R em relação à construção de estatísticas descritivas análise exploratória de dados de uma determinada variável.

Para começar, pegamos os dados através do pacote sidrar:


library(sidrar)
ipca15 = get_sidra(api='/t/3065/n1/all/v/355/p/all/d/v355%202')

E abaixo visualizamos a nossa série.

Esse tipo de gráfico, a propósito, é feito com de forma customizada com o pacote ggplot2, que eu ensino no nosso Curso de Análise de Conjuntura usando o R. Uma vez que visualizamos a série, podemos notar uma característica importante dela: a existência de sazonalidade. Podemos explorar essa característica com o gráfico abaixo.

O IPCA-15, assim como o IPCA, apresenta uma sazonalidade bastante pronunciada. A inflação medida pelo índice cai ao longo do primeiro semestre e aumenta ao longo do segundo, de acordo, a propósito, com a produção ao longo do ano.

Uma vez identificada essa característica, podemos nos concentrar nas estatísticas descritivas da série. Uma forma simples de visualizar as principais métricas, podemos construir um boxplot da série.

Observe que a mediana do IPCA-15 é de 0,46 e a média é de 0,51. Isso diz alguma coisa sobre a forma de distribuição da série, que podemos visualizar através de um histograma.

Isto é, temos uma assimetria à direita. O valor mínimo da série é, a propósito, de -0,18 e o máximo de 3.05, para um IQR de 0,39. Em outros termos, o primeiro quartil termina em 0,27 e o terceiro quartil em 0,66.

Em assim sendo, o intervalo mais provável de observações do IPCA-15 se situa entre 0,27 e 0,66, centrado em 0,46.

Esse tipo de análise descritiva dos dados serve, por fim, de preâmbulo para qualquer esforço de modelagem e previsão que poderíamos fazer em relação à nossa série.

_________________________________

Update: O script do exercício está disponível aqui. Um vídeo sobre como feito o post pode ser visto no Canal da AM no Youtube.

 

 

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais
e conteúdos exclusivos sobre Análise de Dados!

Assinar Gratuitamente