Estatística Descritiva[1]

Naiara Cerqueira
pyladiesbh
Published in
5 min readJun 29, 2020

Esse é o segundo texto da série: Estatística Básica. Clique nos links para ler o texto anterior e para ler o próximo texto (em breve!).

A estatística descritiva é um ramo da estatística que aplica técnicas para descrever e sumarizar um conjunto de dados. Essas análises podem ser univariadas ou multivariadas.

As análises univariadas se concentram em analisar características de uma variável separadamente, que podem ser (1) medidas separatrizes, (2) medidadas de tendência central, (3) medidas de dispersão e (4) medidas de assimetria e curtose. Essas característias podem ser populacionais (representados por letras gregas) ou amostrais (alfabeto romano).

Três bibliotecas em python são as principais para encontrar esses valores (nem todas as bibliotecas contém todas as medidas):

  • Numpy e Scipy (com módulo stats): para variáveis do tipo array ou facilmente conversíveis em array tipo tuplas, series, listas ou range();
  • Statistiscs: para dados que podem sequências ou iteráveis, idem acima;
  • Pandas: para Series ou DataFrames (retorna o valor para cada coluna do dataframe).

1. Medidas separatrizes

Em um conjunto de dados ordenados, separa os dados em n partes de tamanho igual.

  • Percentis: dividem o conjunto de dados em 100 partes iguais, ou seja, em pedaços de tamanhos iguais que contêm 1% dos dados.
  • Quartis: dividem o conjunto de dados em 4 partes, ou seja, em pedaços de tamanhos iguais que contém 25% dos dados.
  • Mediana: dividem o conjunto de dados em 2 partes. Acima da mediana estão 50% dos dados e abaixo dela também.

A mediana é o segundo quartil (Q2) e também o percentil 50 (P50):

Há diversas formas de calcular medidas separatrizes de um conjunto de dados em python:

Numpy:
np.median(array)
np.quantile(array, q=quartil_desejado) #q = entre 0 e 1 (0.5 para mediana)
Statistics
st.median(dado) #mediana
Pandas:
dataframe.median()
serie.median()
dataframe.quantile(q=quartil_desejado)
serie.quantile(q=quartil_desejado)

O Statistics também te dá todas as medidas separatrizes de um determinado conjunto de dados, ou seja, para um quartil, te da os três valores que dividem seu conjunto de dados em quatro partes iguais:

st.quantiles(dado, n=4) #quartil
st.quantiles(dado, n=100) #percentil

2. Medidas de tendência central

Os dados tendem a se agrupar em torno de valores que comumente chamamos de medidas de tendência central:

2.1 Média (mean, average): é como se fosse o ponto de equilíbrio da distribuição e pode ser calculada por:

Média populacional x amostral
Numpy:
np.mean(array)
Statistics:
st.mean(dado)
Pandas:
dataframe.mean() #retorna a média de cada coluna
serie.mean()

2.2 Moda: representa o valor mais comum do conjunto de dados e é mais utilizada para dados categóricos.

Se, por exemplo, dois valores apresentarem uma mesma frequência, seu conjunto de dados contém duas modas.

O pandas retorna automaticamente todas as modas que o dataframe ou série possuem, já para o Statistics, é necessário utilizar o multimode() ao invés do mode():

Pandas:
dataframe.mode()
serie.mode()
Statistics:
st.mode(dado)
st.multimode(dado) #se não for unimodal

2.3 Mediana: valor que divide os dados ordenados em duas partes.

A mediana, já apresentada em medidas separatrizes, é também utilizada como uma medida de tendência central, sendo mais robusta que a média, já que não é tão sensível à presença de outliers.

3. Medidas de dispersão

Mostram se os dados estão mais concentrados ou mais dispersos em torno de alguma medida de tendência central, em geral, a média.

3.1 Variância (variance): é mais utilizada de forma comparativa, já que não é muito intuitiva por não estar na mesma unidade dos dados.

Variância populacional x amostral
Numpy:
np.var(array) #nesse caso, o numpy dá a variância POPULACIONAL.
Pandas:
dataframe.var()
serie.var()

Os valores de variância estão no conjunto dos números Reais Positivos, ou seja, se você encontrar um valor negativo, seus cálculos necessitam de revisão.

3.2 Desvio padrão (standard deviation): mais utilizado por estar na unidade dos dados. É a raiz quadrada da variância.

Desvio padrão populacional x amostral
Numpy:
np.std(array) #nesse caso, o numpy dá o desvio padrão POPULACIONAL.
Pandas:
dataframe.std()
serie.std()

Os valores de desvio padrão também estão no conjunto dos números Reais Positivos, ou seja, se você encontrar um valor negativo, seus cálculos necessitam de revisão.

Considerando uma distribuição normal, 68% dos valores estão a 1 desvio padrão de distância da média:

Porcentagem dos dados nos intervalos

3.3 Coeficiente de variação: mais utilizado para comparação entre amostras; é uma medida adimensional.

Coeficiente populacional x amostral

Se menor que 25% é um bom indicador de homogeneidade dos 2.3 Medianadados.

3.4 Amplitude Interquartil (InterQuartile Range, IQR): descreve a dispersão dos 50% dados centrais.

A Amplitude Interquartil, ou AIQ, pode ser calculada pela fórmula:

AIQ = Q3 - Q1

sendo Q3 o terceiro quartil (75%) e Q1 o primeiro quartil (25%).

Quanto maior o valor encontrado para o AIQ, mais dispersos estão os dados.

4. Outros

4.1 Assimetria (skewness): mede o grau de simetria da curva, em relação a distribuição normal.

Pandas
dataframe.skew()
Scipy:
stats.skew(array)

Para dados normalmente distribuídos, a assimetria é bem próxima de zero.

Uma assimetria positiva, com valor > 0, significa que a cauda da distribuição está mais para a direita. Ou seja, que os valores de moda < mediana < média.

Uma assimetria negativa, com valor < 0, significa que a cauda da distribuição está mais para a esquerda. Ou seja, que os valores de média < mediana < moda.

4.2 Curtose (kurtosis): mede o grau de achatamento da curva, em relação a curva normal. Em python:

Pandas:
dataframe.kurtosis()
serie.kurtosis()
Scipy:
stats.kurtosis(array)

Se o valor encontrado é igual 0, você tem uma distribuição mesocúrtica; se maior que 0, leptocúrtica, correspondendo a uma curva mais pontuda; se menor que 0, platicúrtica, ou seja, uma curva mais achatada, com maior variabilidade dos dados.

Em resumo, é importante fazer uso dos cálculos dessas medidas para entender melhor o comportamento dos seus dados antes de partir para análises mais aprofundadas.

Um algorítimo que facilita essa análise inicial de um conjunto de dados é o describe() do Pandas, que dá média, valores mínimo e máximo, desvio padrão e algumas medidas separatrizes:

Pandas:
dataframe.describe()
serie.describe()

Eu quero me tornar cientista de dados, logo, se tiver algo errado, alguma observação, crítica ou elogio: me avise!

Obrigada a todos pelas dicas ❤

--

--