2 de março de 2017

Análise exploratória

  • Ou exploratory data analysis (EDA)
  • Consiste em sumarizar e visualizar características importantes de um conjunto de dados.
  • É útil para levantar hipóteses sobre os dados, identificar problemas com os dados (que requerem limpeza)
  • Como:
    • estatística descritiva
    • visualização

Estatística descritiva

  • Univariada (uma variável) – calcular, para cada variável:
    • média, mediana, desvio-padrão, quartis, assimetria, curtose
    • plotar histograma, boxplot, violin plot (talvez usar escala logarítmica)
  • Bivariada (duas variáveis)
    • correlação/covariância
    • plotar gráfico de dispersão (scatter plot), tabelas de contingência/mosaic plots
    • plotar série temporal (se uma das variáveis for tempo)

Estatística descritiva: exemplo

Vamos considerar uma tabela com o tamanho (linhas de código, TLOC) dos arquivos do código-fonte do programa Eclipse, versão 3.0. Para fins didáticos, usaremos uma amostra aleatória de 9 linhas dessa tabela.

file TLOC
DefaultLog.java 24
ContentType.java 460
ProgressViewer.java 112
FilterAction.java 24
DeferredResourceChangeHandler.java 72
Volume.java 32
PullUpWizard.java 1107
DefaultStandalonePresentation.java 15
IPathRequestor.java 6

Estatística descritiva univariada

  • Vamos começar estudando funções que sumarizam um conjunto de valores através de um único valor representativo
  • Exemplo: média, mediana, desvio-padrão, quartis, assimetria, curtose…

Estatística descritiva: média, desvio-padrão

R possui as funções mean (média, é uma medida de tendência central) e sd (desvio-padrão, é uma medida de dispersão dos dados):

mean(TLOC)
## [1] 205.7778
sd(TLOC)
## [1] 366.7618

Estatística descritiva: média, desvio-padrão

Para fins didáticos, mostramos como calcular esses valores usando a fórmula:

n <- length(TLOC)
media <- sum(TLOC) / n
media
## [1] 205.7778
desvioPadrao <- sqrt( sum((TLOC - media) ^ 2) / (n - 1) )
desvioPadrao
## [1] 366.7618

Estatística descritiva: mínimo, máximo

Identifique os valores mínimo e máximo de TLOC:

file TLOC
DefaultLog.java 24
ContentType.java 460
ProgressViewer.java 112
FilterAction.java 24
DeferredResourceChangeHandler.java 72
Volume.java 32
PullUpWizard.java 1107
DefaultStandalonePresentation.java 15
IPathRequestor.java 6

Estatística descritiva: mínimo, máximo

Fica mais fácil com a tabela ordenada:

file TLOC
IPathRequestor.java 6
DefaultStandalonePresentation.java 15
DefaultLog.java 24
FilterAction.java 24
Volume.java 32
DeferredResourceChangeHandler.java 72
ProgressViewer.java 112
ContentType.java 460
PullUpWizard.java 1107
  • Mínimo: primeiro valor (da tabela ordenada)
  • Máximo: último valor (da tabela ordenada)

Estatística descritiva: mediana

  • Mediana: elemento do meio
  • Propriedade:
    • 50% dos elementos são menores que a mediana
  • 50% dos elementos são maiores que a mediana
file TLOC
IPathRequestor.java 6
DefaultStandalonePresentation.java 15
DefaultLog.java 24
FilterAction.java 24
Volume.java 32
DeferredResourceChangeHandler.java 72
ProgressViewer.java 112
ContentType.java 460
PullUpWizard.java 1107

Estatística descritiva: mediana

  • E se não tiver elemento do meio?
  • Faz interpolação linear entre os dois elementos do meio.
  • Exemplo: x = 6, 15, 24, 24, 32, 112, 460, 1107; mediana = 28

Estatística descritiva: média vs. mediana

  • Média e mediana são medidas de tendência central, que sumarizam um conjunto de valores através de um único valor
    • A média é mais sensível a valores extremos. Exemplo:
    • x = 6, 15, 24, 24, 32, 72, 112, 460, 1107
  • média = 205.7777778, mediana = 32
    • x = 6, 15, 24, 24, 32, 72, 112, 460, 9963 (alteramos o último elemento)
    • média = 1189.7777778, mediana = 32
  • Não faz sentido falar em média quando os valores são tão variados: basta um milionário virar bilionário para aumentar o PIB per capita, mas isso quer dizer que a população está ganhando mais?

Estatística descritiva: quartil

  • Quartis são pontos que dividem os dados ordenados em 4 partes iguais
    • 1º quartil: maior que 1/4 (25%) dos outros valores
    • 2º quartil: maior que 2/4 (50%) dos outros valores (mediana)
    • 3º quartil: maior que 3/4 (75%) dos outros valores
    • mínimo: maior que 0/4 (0%) dos outros valores
    • máximo: maior que 4/4 (100%) dos outros valores

Estatística descritiva: quartil

  • x = 6, 15, 24, 24, 32, 72, 112, 460, 1107; quartis = 24, 32, 112

Estatística descritiva: quantil

  • Quartil pode ser generalizado com o conceito de quantil
  • ex.:
    • 4-quantil (ou quartil) divide os valores em 4 partes iguais
    • 3-quantil (ou tercil) divide os valores em 3 partes iguais
    • 100-quantil (ou percentil) divide os valores em 100 partes iguais

Estatística descritiva: percentil

  • Ex.: 90º percentil = 9º decil = 589.4

Estatística descritiva: gráficos

  • Até agora vimos medidas que sumarizam um conjunto de dados através de um único valor
  • Com gráficos, conseguimos visualizar melhor a distribuição dos dados

Estatística descritiva: histograma

  • Divide a faixa de valores em partes iguais e conta quantos valores estão em cada faixa
  • Cada faixa de valores é chamada de bin.

Estatística descritiva: histograma

  • x = 6, 15, 24, 24, 32, 72, 112, 460, 1107
hist(x)

Estatística descritiva: histograma

  • Outro exemplo (fictício)

Estatística descritiva: histograma

  • Mais um exemplo
hist(eclipse3$PAR_avg)

Estatística descritiva: ecdf

plot(ecdf(eclipse3$FOUT_avg))

Estatística descritiva: assimetria

  • A partir do histograma pode-se visualizar como os dados estão distribuídos
  • No exemplo anterior, há muito mais valores concentrados nas faixas menores (esquerda) do que nas maiores (direita)
  • Dizemos que a distribuição é assimétrica (possui cauda longa)
    • especificamente, assimétrica à direita
  • Podemos usar funções da biblioteca moments para calcular a assimetria (skewness):
skewness(eclipse3$PAR_avg)
## [1] 2.253637

Estatística descritiva: curtose

  • Indica o quanto a distribuição é espalhada, com valores extremos
kurtosis(eclipse3$PAR_avg)
## [1] 13.93165

Estatística descritiva: boxplot

  • Boxplot é um tipo de gráfico usado para visualizar a distribuição dos dados a partir de seus quartis

Estatística descritiva: boxplot

  • boxplot é bom pra comparar várias distribuições

Estatística descritiva: boxplot

Estatística descritiva: escala logarítmica

Às vezes os dados estão tão espalhados que é difícil visualizá-los.

Estatística descritiva: escala logarítmica

Uma solução é adotar uma escala logarítmica para os eixos do gráfico:

Estatística descritiva bivariada

  • Na estatística descritiva bivariada, buscamos entender o relacionamento entre duas variáveis
    • Quando x cresce, y cresce?
    • Quando x cresce, y diminui?
    • x e y variam na mesma proporção?

Estatística descritiva: séries temporais

Estatística descritiva: gráfico de dispersão (scatterplot)

Estatística descritiva: gráfico de dispersão (scatterplot)

Estatística descritiva: correlação

  • Correlação: [-1, 1]
cor(x, y)
## [1] 0.8879799

Estatística descritiva: correlação

Exemplo: matriz de correlação

##                post      TLOC    VG_avg    PAR_avg  FOUT_avg
## post     1.00000000 0.4721315 0.2045547 0.04405611 0.1733836
## TLOC     0.47213146 1.0000000 0.4180516 0.11092324 0.3790984
## VG_avg   0.20455465 0.4180516 1.0000000 0.27765238 0.6883466
## PAR_avg  0.04405611 0.1109232 0.2776524 1.00000000 0.2249910
## FOUT_avg 0.17338363 0.3790984 0.6883466 0.22499105 1.0000000

Exemplo: matriz de correlação

Exemplo: scatterplot matrix