Analise exploratória de Dados

Uma aplicação do pensamento estatístico em Python

Gabriel Stankevix
16 min readFeb 10, 2020

Ciência de Dados e Estatística

Olá, neste post apresentarei uma introdução a analise exploratória de dados utilizando a linguagem de programação Python. Antes de iniciarmos os principais tópicos deste assunto, é importante analisar as diferenças e relações entre o campo de trabalho na estatística e ciência de dados.

Estes campos se diferem de várias maneiras. A estatística é um campo baseado matematicamente na busca de coletar e interpretar dados quantitativos. Por outro lado, a ciência de dados é um campo multidisciplinar que utiliza métodos, processos e sistemas científicos para extrair conhecimento de dados de diferentes formas, inclusive da própria estatística. Porem, os campos se diferenciam em seus processos e problemas estudados.

A maioria dos problemas de ciência de dados são tratados no processo de modelagem que se busca a precisão preditiva do modelo. Comparando a precisão preditiva de diferentes métodos de aprendizado de máquina, escolhendo assim o modelo mais preciso.

Os estatísticos geralmente adotam o ponto de partida em modelo simples ( regressão linear), e os dados são verificados para ver se são consistentes com as suposições desse modelo. Aprimorando as suposições violadas e valiando o modelo quando todas as suposições são verificadas e nenhuma suposição é violada. Aprimorando um modelo único para se adequar melhor aos dados.

Objetivos distintos

Em estatística, concentra-se em quantificar a incerteza, na construção de modelo estatístico, quantifica a relação precisa entre cada preditor e o resultado previsto. Qualquer incerteza sobre esse relacionamento também é quantificada. Esse processo raramente ocorre no aprendizado de máquina.

Em ciência de dados, os problemas geralmente se relacionam a fazer previsões e otimizar performance. Por outro lado, os problemas estudados pelas estatísticas concentram-se mais frequentemente em tirar conclusões sobre o mundo em geral.

O objetivo final da análise estatística é muitas vezes tirar uma conclusão sobre o que causa o quê, quantificando a incerteza. Por outro lado, o objetivo final da análise de ciência de dados tem a ver com um banco de dados específico ou modelo preditivo.

Compreendendo Dados

Exemplificando, dados são fatos ou informações que não podem ser usados para relatórios, cálculos, planejamento ou análise.

Dados contínuos:

  • Faixa de dados contínua
  • Medido ou Contado (altura do peso)
  • Quantitativo

Dados categóricos:

  • Não contínuo
  • Categórico
  • Descritivo
  • Qualitativo
  • Dimensão

Por exemplo, dados discretos podem ser quantitativos e qualitativos. Dados discretos têm certos valores diretos.

  • Margem de lucro = Contínua
  • Tipo de produto = categórico
  • Altura da montanha = Contínua
  • Modelo de carro = categórico
  • Número de maçãs inteiras em um barril = Discreto

Dados não estruturados: permite encontrar sentimentos, tendências e sentimentos em relação a produtos e serviços.

  • Mídia social
  • Big Data Hadoop
  • Nenhuma estrutura de dados predefinida

Dados estruturados: os dados possuem uma estrutura definida de configuração, informações ou métricas sobre as empresas que compram um produto, aplicativo para créditos, etc.

  • Dados de estrutura pré-definidos
  • Bancos de dados relacionais
  • Exemplo: linguagem SQL para obtenção de dados

Atributos

Qualitativo

  • Nominal: dados em que você pode distinguir valores diferentes, mas não necessariamente ordena-los (categorias ou categorias)
  • Ordinal: dados ordenados em uma classificação existente, mas não existe uma distância indeterminada entre valores (pequeno, médio, grande)

Quantitativo

  • Intervalo: Dados como dados ordinais, mas a distância entre os pontos de dados é uniforme. Nem todas as operações aritméticas podem ser executadas.
  • Proporção: Dados compostos de os outros atributos e todas as operações aritméticas podem ser executadas.

Analise Exploratória de Dados (AED)

A analise exploratória dos dados é considerado um dos passos cruciais para as analises em base de dados. Isto quer dizer, que existira um processo para organizar, resumir, aplicar alguns cálculos e visualizar os dados presentes na sua analise. Desta forma, resumindo as principais características por meio de métodos visuais.

Este processo foi desenvolvido por um dos maiores estatísticos de todos os tempos, John W. Tukey. Com o livro Exploratory Data Analysis (EDA) lançado em 1977, fez uma contribuição memorável para o mundo cientifico e social, unindo pensamento estatístico aos processos de transformação e exploração de dados.

Abaixo algumas de suas citações:

  • Exploratory data analysis can never be the whole story, but nothing else can serve as the foundation stone.” — John W. Tukey
  • “Three of the main strategies of data analysis are: 1. graphical presentation. 2. provision of flexibility in viewpoint and in facilities, 3. intensive search for parsimony and simplicity.” (Jones, 1986, Vol. IV, p. 558)

Portanto, no AED identificamos os comportamentos médios e discrepantes, procurando e identificando tendências, avaliando os comportamentos e investigando a interdependência entre as variáveis. Assim, podemos entender que as ferramentas para prover o AED são fundamentais, logo, não abra mão de utilizar todas as técnicas adequadas e disponíveis para a sua analise exploratória de dados.

Podemos citar as seguintes, por exemplo:

  • Tabelas de dados
  • Histogramas
  • Box Plot (Diagrama de Caixa)
  • Scatter Plot
  • Five-Number Summary
  • Analise de Outliers

Aplicação em Python

Nesta publicação, utilizaremos a famosa base de dados Titanic onde podemos analisar as informações dos passageiros que sobreviveram ou não ao acidente. Uma das primeiras analise a ser feita, é observarmos a nossa base de dados por meio da função .tail() ou .head(), que traz por padrão as 5 primeiras linha da nossa base.

Nesta base temos algumas colunas como:

  • PassengerID: identificação do passageiro
  • Survived: Indica se o passageiro sobreviveu ao desastre
  • PClass: Classe de embraque
  • Name: Nome do passageiro
  • Sex: Gênero do passageiro
  • Age: Idade do passageiro
  • Entre outras informações

Utilizar a função .info() nos informa descrições a base de dados como quantidade de linha, colunas, tamanho etc

Histograma

É uma distribuição de frequência, mostrando com que frequência cada valor em um conjunto de dados ocorre. Comumente usado para mostrar distribuições de frequência.

No código escrito abaixo, podemos ver a distribuição das idades dos pacientes presentes no Titanic. Podemos notar que existe uma frequência de passageiros maior no intervalo de 20 e 40 anos de idade.

Empirical Cumulative Distribution Function (ECDF)

Conhecida como uma função de distribuição cumulativa empírica e uma função de distribuição cumulativa (Cumulative Distribution Function -CDF) são basicamente a mesma coisa. Ambas são modelos de probabilidade para um grupo de dados.

No entanto, enquanto um CDF é um modelo hipotético de uma distribuição, o ECDF modela dados empíricos (isto é, observados). De outra maneira, o ECDF é a distribuição de probabilidade que você obteria se amostrasse da sua amostra , em vez da população . Digamos que você tenha um conjunto de dados experimentais (observados) x1 , x 2,…, xn. O ECDF fornecerá a fração de observações da amostra menor ou igual a um valor específico de x.

Simplificando, no eixo x estará a quantidade de uma variável que você estiver medindo, o valor de y é a fração daquele ponto de dado que tenha um valor menor ou igual ao valor correspondente no eixo x.

Logo abaixo, foi desenvolvido um ECDF. Interpretando o gráfico mostrado, entorno de 50% dos passageiros que estavam no Titanic tinha pelo menos mais de 30 anos de idade.

Síntese Estatística (Summary Statistics)

São as informações que fornecem uma descrição rápida e simples dos dados. Podendo incluir média, mediana, moda, valor mínimo, valor máximo, faixa, desvio padrão, etc.

Seguindo com a nossa base de dados do Titanic, podemos calcular os valores utilizando as funções mean(), std(), min(), max() etc importadas do Numpy separadamente ou aplicar a função describe() que realiza todos os cálculos de uma vez.

Variância e Desvio Padrão

A variância é a soma dos quadrados dividida pelo número de observações do conjunto menos uma. A variância é representada por s2, sendo calculada pela fórmula:

∑ (xi-Média)2 / (n-1)

Ou seja,

s2 = SQ / (n-1)

O denominador “n - 1” da variância, é determinado graus de liberdade. Considerando um conjunto de “n” observações e fixando uma média para esse grupo, existe a liberdade de escolher os valores numéricos de n-1 observações, o valor da última observação estará fixado para atender ao requisito de ser a soma dos desvios da média igual a zero.

No caso especifico do cálculo da variância, diz-se que os “n” graus de liberdade originalmente disponíveis no conjunto sofreram a redução de uma unidade porque uma estatística, a média já foi calculada dos dados do grupo e aplicada na determinação da variância.

O desvio padrão apresenta uma vantagem sobre a variância, que é permitir uma interpretação direta da variação do conjunto de dados, pois o desvio padrão é expresso na mesma unidade que a variável (Kg, cm, atm…). É representado por “s” e calculado por:

s = √∑ ( xi — Média)2/ (n — 1)

Podemos entender o desvio padrão como uma média dos valores absolutos dos desvios, ou seja, dos desvios considerados todos com sinal positivo, média essa obtida, porém, por um processo bastante elaborado:

  • calculamos o quadrado de cada desvio,
  • obtemos a média desses quadrados e,
  • depois obtemos a raiz quadrada da média dos quadrados dos desvios.

Propriedades do desvio padrão

Ao usar o desvio padrão, lembre-se das seguintes propriedades.

  • O desvio padrão é usado apenas para medir a dispersão ou dispersão em torno da média de um conjunto de dados.
  • O desvio padrão nunca é negativo.
  • O desvio padrão é sensível aos valores discrepantes. Um único outlier pode aumentar o desvio padrão e, por sua vez, distorcer a imagem do spread.
  • Para dados com aproximadamente a mesma média, quanto maior o spread, maior o desvio padrão.
  • Se todos os valores de um conjunto de dados forem iguais, o desvio padrão será zero (porque cada valor é igual à média).

Distribuição Normal

As Distribuições são definidas como uma orientação dos pontos de dados, discriminados pela frequência de ocorrência observada ou prevista. A distribuição normal pode ser representada como acurva em forma de sino. Onde a metade dos resultados cai acima da média e metade cai abaixo. Na distribuição normal a média = a mediana = moda.

A distribuição normal faz parte de uma das formas mais comuns e famosas de análise estatísticas do desvio padrão. Como já havia mencionado, o desvio padrão é uma ferramenta comum usada em análises que medem a dispersão de uma população de dados. Um desvio padrão baixo pode mostrar baixa dispersão e um desvio padrão alto pode mostrar alta dispersão.

Abaixo, utilizando a base de dados do Titanic podemos avaliar a desvio padrão e media dos passageiros que sobreviveram ou morreram ao acidente. Desta form, a media de idade dos passageiros que sobreviveram é de 28 anos com desvio padrão de 14.92 e passageiros que não sobreviveram com media de idade é de 30 anos e desvio padrão de 14.15.

No geral, tanto a media de idade quanto o desvio padrão são bem similares em ambos os casos. O fato do desvio padrão ser relativamente alto gera uma distorção na curva devido a variação, maior dispersão dos dados e outliers de forma que relacionar a sobrevivência no acidente a idade não agrega muito.

Boxplot

Um gráfico de caixa(Boxplot), exibe o resumo de cinco números de um conjunto de dados. O resumo de cinco números é o valor mínimo, primeiro quartil, mediana, terceiro quartil e máximo.

Em um gráfico de caixas, desenhamos uma caixa do primeiro quartil para o terceiro quartil. Uma linha vertical passa pela caixa na mediana. A linhas externas vão de cada quartil ao mínimo ou máximo.

Podemos ver no gráfico abaixo, que a base de dados onde os não sobreviventes aos acidente e que eram homens, possui mais outliers que nos demais grupos de pessoas.

Covariância e Correlação de Pearson

A covariância fornece uma medida da força da correlação entre dois ou mais conjuntos de variáveis aleatórias. A covariância para duas variáveis aleatórias X e Y.

Portanto, podemos dividir a covariância pelo desvio padrão das variáveis x e y. Isso calculou o coeficiente de correlação de Pearson geralmente indicado pela letra grega rho.

É uma comparação da variabilidade nos dados devido à co-dependência (a covariância) com a variabilidade inerente a cada variável independentemente (seus desvios padrão). Convenientemente, são intervalos de -1 (para anticorrelação completa) a 1 (para correlação completa).

Um valor zero significa que não há correlação entre os dados, conforme mostrado no gráfico no canto superior esquerdo. Dados com valores intermediários são mostrados nos outros gráficos.

O coeficiente de correlação de Pearson é uma boa métrica para correlação entre duas variáveis.

Utilizando a função .corr() e sns.heatmat() podemos visualizar a correlação entre as variáveis.

Relembrando, a correlação representa como uma variável tende a aumentar ou diminuir, quando outra variável tende a aumentar ou diminuir em paralelo.

O Coeficiente de correlação é um único número que representa correlação entre duas variáveis, denotada pela letra “r”; variando entre 1,0 e -1,0:

Coeficiente perfeitamente positivo:

  • r = 1,0
  • r> 0 à Uma relação positiva

Relação positiva significa que à medida que uma variável aumenta, a segunda variável também aumenta.

Coeficiente perfeitamente negativo:

  • r = -1,0
  • r <0 a uma relação negativa

Relação negativa significa que a medida que uma variável aumenta, a segunda variável segue na direção oposta.

r = 0 sem relacionamento.

Correlação espúria ou Regressão espúria é um tipo de correlação em que parece existir um relacionamento entre duas variáveis, mas, na realidade, não existe nenhum relacionamento. O próprio significado de espúrio denota isso como falso ou ilegítimo (nenhum relacionamento verdadeiro).

Este tipo de fenômeno pode estar associado a causalidade, que representa um relacionamento onde uma variável causa efeito em outra variável.

Lembre-se, a correlação mede a existência de um relacionamento entre duas variáveis. Esse relacionamento não significa que uma das variáveis cause uma alteração na outra variável, mas que, à medida que uma variável se move a outra sofre algum tipo de alteração.

Scatter plot

Uma ferramenta de visualização de dados comumente usada para mostrar correlação entre duas variáveis.

Aplicando sobre a base de dados, podemos notar que aparentemente aqueles que sobreviveram, pagaram um preço baixo pelo ticket de entrada ao navio ou eram mais jovens que os demais passageiros.

Uma outra maneira de analisar é criando pares de gráficos para cada variável. Esta é uma ótima maneira de exibir a maioria das informações que podemos descobrir em analises separadas.

Intervalo de Confiança

O intervalo de confiança possuem as seguintes definições:

  • É um intervalo de valores, assim que definido, existe uma probabilidade de que o valor de um parâmetro, esteja dentro deste intervalo;
  • Estimativa do intervalo, calculada a partir das estatísticas dos dados observados, que podem conter o valor real de um parâmetro de uma população desconhecida. O intervalo possui um nível de confiança associado, que quantifica o nível de confiança do parâmetro dentro deste intervalo.

Simplificando, é a estimativa de intervalo combinada com uma declaração de probabilidade.

Compreendendo diferentes estimativas:

  • Estimativa pontual: valor singular para uma estimativa de um parâmetro populacional. As estimativas pontuais fornecem uma visão muito focada na amostra. Não retransmitem a incerteza ou a precisão dos dados da amostra.
  • Estimativa do intervalo: intervalo de valores que potencialmente contêm o parâmetro da população. Podendo ilustrar a precisão e a incerteza de nossas estimativas. Podemos calcular os intervalos de confiança para qualquer parâmetro de população amostrada. Os intervalos de confiança, em média, conterão o parâmetro da população 90% do tempo, se a amostragem foi repetida usando os mesmos parâmetros de amostragem.
  • Precisão: Mede a variabilidade nas respostas de medição para medição em uma amostra individual.
  • Incerteza: Mede a variação nas respostas de amostra para amostra.

A declaração de probabilidade de um intervalo de confiança, nos diz que, se repetirmos nossa amostra uma quantidade infinita de vezes, esperaríamos que a proporção de intervalos contendo o parâmetro populacional fosse igual ao nível de confiança do intervalo.

A margem de erro captura tanto a incerteza quanto a precisão de nossa estimativa amostral, misturando diferentes partes dos dados subjacentes da amostra. No caso de uma distribuição normal padrão, ela combina nosso valor de estrela Z, tamanho e desvio padrão da amostra.

Teste A/B

É uma metodologia analítica que permite executar um teste que aborda diferentes variações ou alterações, entendendo como eles se comportam em um grupo de controlado.

O teste A / B é uma forma de teste de hipóteses que permite alterações ou variações iterativas para diferentes aspectos de uma analise. Possui as seguintes características:

  • Metodologia analítica
  • Testar variações ou alterações
  • Compara com o status quo
  • Implementa a variação ou alterar permanentemente
  • Empregado em diferentes áreas e indústrias

Para aplicar um teste A/B devemos seguir os seguintes passos:

  1. Determine a variação que você deseja testar.
  2. Determine o tamanho dos grupos de controle e variação e como você planeja garantir a aleatoriedade e a independência
  3. Determinar a duração do teste
  4. Executar e monitorar o teste
  5. Finalize o teste e analise os resultados

Pontos a evitar durante o teste AB:

  • Não presuma que você tenha resultados muito cedo.
  • Teste uma variável de cada vez, execute apenas uma alteração ou variação de cada vez para garantir a compreensão.
  • Não execute um teste AB sem uma hipótese, escolha e teste alterações impactantes, não dê palpites.

Quando os resultados começam a chegar de um teste A / B, NÃO é bom encerrar o teste se houver uma tendência nos resultados.

O segredo é permanecer vigilante, analítico e fazer perguntas sobre o que você está fazendo. Ter uma visão clara sobre o que você deseja realizar e o que deseja testar.

Teste de Hipótese

O objetivo do teste de hipóteses é reunir evidências contra a hipótese nula, sendo incapaz de apoiar ou provar a hipótese nula, só podendo deixar de refutar ou rejeitar a hipótese nula.

Estrutura do Teste de Hipóteses:

  1. Determinar quais reivindicações precisam de uma investigação mais completa.
  2. Obter dados pertinentes à investigação através de experimentação direta ou observação.
  3. Computar testes estatísticos utilizando informações subjacentes de amostras.
  4. Converter testes estatísticos em valores de probabilidade.
  5. Interpretar o resultado no contexto e incorporar hipóteses iniciais.

Terminologia

  • Hipótese nula (H0): Uma declaração geral ou posição padrão sobre uma estimativa ou efeito, assumida como verdadeira, a menos que evidências sejam reunidas contra ela. Uma hipótese nula é sempre igual ao que se acredita ser verdadeiro ou ao estado atual.
  • Hipótese alternativa (Ha ou H1): Oposto à hipótese nula, representa a alegação que está sendo testada. É importante ter o contexto correto para o cenário.
  • Teste estatístico: Um valor singular que representa a comparação entre a hipótese nula e a amostra subjacente.
  • Valor de probabilidade (valor P): representa a probabilidade de que a hipótese nula seja verdadeira com base na amostra atual ou uma que seja mais extrema que a amostra atual. Quanto menor a pontuação, mais improvável é a hipótese nula.
  • Nível de significância (α): define um valor de corte para p, para medir o quão forte a amostra contradiz a hipótese nula do experimento. Quanto menor o nível de significância, mais evidências precisamos contra as hipóteses nulas antes que possamos rejeitá-las.
  • Valores alfa padrão 0,05 e valor alfa mais rigoroso 0,01.
  • Definir um nível de significância aceitável antes de analisar completamente um experimento, para evitar possível viés de escolher errada para um ponto de corte que seja favorável ao teste.
  • Valor de p <α: existe evidência suficiente para rejeitar as hipóteses nulas e aceitar a hipótese alternativa
  • Valor de p> α: falha em rejeitar a hipótese nula, não há teste significativo.

Para converter uma teste de estatística em uma probabilidade, é importante entender o que está acontecendo. O teste de estatística nos diz quantos desvios-padrão do centro devemos ir para determinar a área de probabilidade também conhecida como região crítica.

Aplicação em Python

Com base na nossa base de dados do Titanic tentaremos responder a seguintes pergunta “O gênero/sexo teve algum efeito na sobrevivência dos passageiros?”

  • Hipótese nula: a taxa de sobrevivência é independente do sexo do passageiro.
  • Hipótese alternativa: a taxa de sobrevivência depende do sexo do passageiro.
  • Nível de significância: (α) = 0,05
  • Graus de liberdade: 1

Aqui estamos considerando um teste para uma variável categórica validando a independência do qui-quadrado (Sexo).

Desta forma, rejeitamos a Hipótese Nula (a taxa de sobrevivência é independente do sexo do passageiro), pois com base no Teste de independência e na visualização de dados, podemos observar um efeito significativo da taxa de sexo na sobrevivência.

Regressão Linear

Por definição, regressão linear é uma modelagem e análise de uma variável dependente em relação a uma variável independente ou explicativa. Em um modelo linear ou de regressão, quando a entrada da variável independente atingir o modelo, a variável dependente responderá e mudará.

  • X = F(x)
  • Y = mx + b

Sendo Y definida como a variável dependente de X (independente ou explicativa).

Consequentemente, m e b são indicados como a inclinação (m), e o intercepto (b) em y. A inclinação da linha, mede ou pode ser vista na inclinação da linha. De uma perspectiva lógica, m é a quantidade de movimento na variável y para cada mudança de unidade em x.

A regressão linear simples é um modelo preditivo que permite ao usuário criar a mesma fórmula y = mx + b e utilizá-la para prever situações para diferentes tipos de negócio.

Para mais detalhes sobre como desenvolver um modelo de regressão linear em python sobre a base de dados do Titanic, recomendo a leitura deste post :

No próximo post, abordarei outras distribuições como Bernoulli, desenvolvimento de regressões em Python dando continuidade no assunto.

Conclusões

Resumindo, existem variadas ferramentas para exploramos os dados antes de começarmos o desenvolvimento de modelos preditivos. Um dos segredos de obter esse sucesso na construção de projeto de ciência de dados é fazer uma analise exploratória muito bem feita, entendendo sempre o nosso dado, sua variação, comportamento, desvios e relacionamentos.

Garanta a construção do processo de analise exploratória, e sempre que possível em conjunto dos stakeholders explore as analises obtidas. As discussões são sempre saudáveis, fazem surgir novas ideias e percepções que agregaram para o desenvolvimento do projeto.

Analise, codifique, aprenda e surpreenda. Data science for the win!

--

--

Gabriel Stankevix

Cientista da Computação, flautista, postcrosser e DIY. Data Science for the win.