Estatística Descritiva

Estatística Descritiva
Introdução
Introdução à estatística descritiva
Autores
Afiliações

João O. Santos

ISPA

Cristina Mendonça

ISPA; WJCR

Vitória Melita

FP-UL

Mariona Pascual Peñas

UIB

João Raposo

ISPA

Marta Barros

FP-UL

0 Estatística Descritiva Numérica

  • A estatística descritiva, como o nome indica, ajuda-nos a descrever os dados

  • É uma forma de apresentarmos um ou mais sumários dos dados

  • Como qualquer sumário tem como objectivo facilitar a leitura, mas implica perda de informação

Tabelas de Frequências

  • Frequência absoluta: \(n_{i}\) = Total de observações com esse valor

  • Frequência relativa: \(f_{i}\) = Proporção/percentagem de observações com o valor

  • Frequência acumulada:

    • Absoluta: \(N_{i}\) = soma de \(n_{i}\) até cada célula
    • Relativa: \(F_{i}\) = soma de \(f_{i}\) até cada célula

Tendência Central

  • Se as variáveis seguem uma distribuição, qual é o seu centro?

Moda

  • O elemento mais comum (i.e., frequente):

    • Exemplo: calças largas, calças justas, calças justas, saia, calças justas, calçar largas; moda = calças justas
  • Possível para todos os tipos de variáveis

  • Mais informativa para variáveis nominais

  • bimodal: distribuição com duas modas

  • plurimodal: distribuição com mais de duas modas

Mediana

\[Me = \cases{ímpar: x_{\frac{(n+1)}{2}} \\ \\ par: \frac{x_{\frac{n}{2}} + x_{\frac{n}{2}+1}}{2}}\]

  • O valor do meio quando ordenamos todas as observações
    • Para Ns pares fazemos a média dos dois elementos do meio
    • Possível para variáveis ordinais e quantitativas
    • Mais informativa para variáveis ordinais
    • Robusta a valores extremos
    • Adequada para variáveis quantitativas com valores extremos/outliers

Média

\(M = \overline{x} = \frac{\displaystyle\sum_{i = 1}^n x_i}{N}\)

  • O centro de massa da distribuição

  • Possível apenas para variáveis quantitativas (formalmente falando)

  • Mais informativa para variáveis quantitativas

  • Muito sensível a valores extremos/outliers

Localização

  • Se as variáveis seguem uma distribuição, quais as localizações/pontos importantes?

  • Quartis, partem a distribuição em quatro partes:

    • Q1: 25% da amostra tem um valor da variável inferior a esse valor
    • Q2: 50% da amostra tem um valor da variável inferior a esse valor
    • Q3: 75% da amostra tem um valor da variável inferior a esse valor
    • Reparem que o Q2 é a mediana
  • Quantis, partem a distribuição num x número de partes (os quartis e os percentis são o tipo mais conhecido de quantil)

Dispersão

  • Se as variáveis variam, como medimos quanto variam?

  • Verão nas fórmulas que tendem a ser distâncias entre pontos da distribuição, ou médias de distâncias entre cada observação e uma medida de tendência central

Amplitude Total

\(A = max - min\)

  • Distância entre o máximo e mínimo da distribuição

  • Apenas válida para variáveis ordinais ou quantitativas, aquelas que têm ordem, podendo ter um máximo e um mínimo

Amplitude Interquartil

\(AIQ = Q3 - Q1\)

  • Distância entre o quartil um e o quartil três.

  • Apenas válida para variáveis ordinais ou quantitativas, aquelas que têm ordem, aquelas para as quais conseguimos calcular a mediana (o Q2)

Desvio Absoluto Médio/Mediano

Desvio absoluto médio:

\(MAD = \frac{\displaystyle\sum_{i=1}^n|(x_i - \overline{x})|}{N}\)

  • A média dos desvios absolutos em relação à média

  • Apenas válido (formalmente) para variáveis quantitativas, aquelas para as quais calculamos a média

Desvio absoluto mediano:

\(MAD = mediana(|x_i - \tilde{x}|)\)

  • A mediana dos desvios absolutos em relação à mediana

  • Apenas válida para variáveis ordinais ou quantitativas, aquelas que têm ordem, aquelas para as quais conseguimos calcular a mediana (o Q2)

Variância

\(S^2 = \frac{\displaystyle\sum_{i=1}^n(x_i - \overline{x})^2}{N}\)

\(S'^2 = \frac{\displaystyle\sum_{i=1}^n(x_i - \overline{x})^2}{N - 1}\)

  • A média das distâncias quadradas à média

  • Diz-nos quão distantes as observações tendem a estar da média

  • Não está na mesma unidade de medida da variável, mas sim no quadrado da sua medida, tornando-a difícil de interpretar

  • Apenas válida (formalmente) para variáveis quantitativas, aquelas para as quais calculamos a média

Desvio Padrão

\(S = \sqrt{\frac{\displaystyle\sum_{i=1}^n(x_i - \overline{x})^2}{N}}\)

\(S' = \sqrt{\frac{\displaystyle\sum_{i=1}^n(x_i - \overline{x})^2}{N - 1}}\)

  • O desvio padrão é a raiz quadrada da média das distâncias quadradas de cada observação à média

    • Ou seja, a raiz quadrada da variância
  • Diz-nos quão distantes as observações tendem a estar da média

  • Está na mesma unidade de medida da variável

  • Apenas válida (formalmente) para variáveis quantitativas, aquelas para as quais calculamos a média

Forma

  • Se as variáveis seguem uma distribuição, qual a sua forma?

Assimetria/Skewness

  • Enviesamento da distribuição (o desenho diz tudo)

  • Pode ser calculada para variáveis ordinais e quantitativas

  • Existem várias fórmulas (adequadas para diferentes tipos de variáveis)

Kurtose

  • Achatamento ou alongamento da distribuição

  • Pode ser calculada para variáveis ordinais e quantitativas

  • Existem várias fórmulas (adequadas para diferentes tipos de variáveis)

  • Leptocúrtica: kurtose positiva

  • Mesocúrtica: Kurtose = 0

  • Platicúrtica: Mais achatada, kurtose negativa

Sumário

  • Os valores das variáveis, variam ao longo duma distribuição
    • Essas distribuições podem aproximar-se de distribuições (matematicamente) conhecidas
    • Conhecendo a distribuição sabemos a probabilidade teórica de obter valores num dado intervalo da distribuição
  • A estatística descritiva ajuda-nos a organizar e resumir os dados
    • As estatísticas descritivas adequadas a cada variável dependem da sua classificação
    • As estatísticas descritivas podem ser agrupadas em “famílias”, sendo muito importantes as de tendência central e dispersão

Notas Práticas

  • Qualquer sumário perde informação, mas a ausência de sumário e organização torna a informação ininteligível

  • Ao reportarmos mais que um sumário conseguimos resumir a informação, sem ignorarmos aspectos cruciais dos dados

    • Por exemplo, reportamos medidas de tendência central, com uma medida de dispersão associada
  • A categorização das variáveis é indispensável para saber como as descrever

  • Devemo evitar ficar hiper-focados nos outputs de testes de hipóteses, sem conhecer e saber descrever os dados

1 Estatística Descritiva Gráfica

Os gráficos podem ser considerados parte da estatística descritiva, resumindo os nossos dados de forma visual (enquanto estatísticas descritivas como a média e desvio-padrão, resumem os dados de forma numérica).

Os livros de estatística tradicionais (e.g., Marôco, 2020) costumam especificar qual o tipo de gráficos que é adequado para cada tipo de escala de medida das variáveis (e.g., qualitativa ordinal, quantitativa contínua, etc.). Por vezes salientam que há representações gráficas que costumam ser sobrepostas num só gráfico (e.g., que a curva da distribuição normal é frequentemente sobreposta a um histograma). Contudo, as capacidades gráficas dos computadores e dos programas estatísticos evoluíram muito rapidamente e creio que os manuais estatísticos nem sempre os acompanharam. Penso também que é importante distinguir Estatística (enquanto área do saber) de análise de dados, que é algo mais prático/técnico. Quando olhamos para recursos mais direccionados a analistas de dados, creio que se percebe o destaque e importância que dão à visualização dos dados.

Um bom exemplo disto são os capítulos de visualização de dados de Wicham e colaboradores (2023).

A Importância de Visualizar os Dados

Os gráficos permitem-nos comunicar muita informação, muito rapidamente, duma forma visual e até intuitiva. Dito isto, a importância dos gráficos vai para além do seu poder enquanto ferramentas de comunicação científica/técnica. Os gráficos ajudam-nos a reparar em possíveis padrões dos nossos dados que não seriam (pelo menos facilmente) identificados de forma numérica (ver Matejka & Fitzmaurice, 2017)).

Já que as imagens valem mais do que mil palavras recomendo que olhem para a página abaixo que ilustra interactivamente os resultados de Matejka e Fitzmaurice (2017).

Cuidados Gerais

  • Incluir todos os valores da escala da variável

  • Escolher o gráfico que é capaz de descrever os aspectos mais relevantes da variável, dado o problema de investigação e os nossos dados

  • A escala de medida das variáveis, ajuda-nos a perceber quais os gráficos que são mais adequados para as representar

  • Ajustar o gráfico ao público alvo da comunicação

    • Há gráficos, como a caixa de bigodes (boxplot) que transmitem muita informação, mas a sua leitura exige algum conhecimento e outros, como os gráficos de barras, que são mais fáceis de compreender por leigos

Circulares

  • Adequado para variáveis categóricas nominais ou ordinais

  • Com variáveis ordinais devemos ordenar as categorias na ordem da menor para a maior

Código
library(knitr)

ds <- data.frame(Clube = c("Benfica", "Sporting", "Porto"),
                 Freq_Relativa = c("40%", "30%", "30%"))

kable(ds)
Clube Freq_Relativa
Benfica 40%
Sporting 30%
Porto 30%
Código
library(ggplot2)

ds$Percent <- gsub("%", "", ds$Freq_Relativa)
ds$Percent <- as.numeric(ds$Percent)

ggplot(ds, aes(x = "", y = Percent, fill = Clube)) +
geom_bar(stat = "identity", width = 1) +
geom_text(aes(label = Freq_Relativa), position = position_stack(vjust = 0.5)) +
coord_polar("y", start = 0) +
scale_fill_manual(values = c("Benfica" = "#F8766D", "Porto" = "#619CFF",
                             "Sporting" = "#00BA38")) +
theme_void()

  • Pode ser apelativo para pessoas menos treinadas, mas acaba por ser menos legível e flexível que um gráfico de barras.

Barras

  • Variáveis nominais ou ordinais (ou quantitativas discretas com poucos níveis)
Código
ds <- data.frame(Clube = c("Benfica", "Sporting", "Porto"),
                 Freq_Absoluta = c(8, 6, 6))

kable(ds)
Clube Freq_Absoluta
Benfica 8
Sporting 6
Porto 6
Código
ggplot(ds, aes(x = Clube, y = Freq_Absoluta, fill = Clube)) +
geom_bar(stat = "identity", position = position_dodge()) +
ylab("Count") +
scale_fill_manual(values = c("Benfica" = "#F8766D", "Porto" = "#619CFF",
                             "Sporting" = "#00BA38")) +
theme_classic()

  • Se em vez de contagens as barras corresponderem, por exemplo, a médias, esse gráfico de barras já será adequado apenas para variáveis quantitativas

  • Podemos adicionar bigodes com margens de erro (e.g., M +/- EP ou DP)

  • Por convenção, as barras tendem a aparecer separadas para distinguir do histograma

Caixa de Bigodes/Boxplot

Código
ds <- data.frame(ID = paste0("pp0", 1:10),
                 Resposta = c("Concordo", "Concordo totalmente",
                              "Concordo", "Discordo", "Nao concordo nem discordo",
                              "Discordo", "Discordo", "Discordo totalmente",
                              "Concordo totalmente", "Concordo totalmente"))

ds$ID[10] <- "pp10"
ds$Valor <- factor(ds$Resposta,
                   levels = c("Discordo totalmente", "Discordo",
                              "Nao concordo nem discordo",
                              "Concordo", "Concordo totalmente"),
                   labels = c(1:5), ordered = TRUE)
ds$Valor <- as.numeric(ds$Valor)

kable(ds)
ID Resposta Valor
pp01 Concordo 4
pp02 Concordo totalmente 5
pp03 Concordo 4
pp04 Discordo 2
pp05 Nao concordo nem discordo 3
pp06 Discordo 2
pp07 Discordo 2
pp08 Discordo totalmente 1
pp09 Concordo totalmente 5
pp10 Concordo totalmente 5
Código
ggplot(ds, aes(y = Valor)) +
geom_boxplot() +
theme_classic() +
theme(axis.title.x = element_blank(), axis.text.x = element_blank())

  • Adequado para variáveis ordinais ou quantitativas

Caixa de Bigodes/Boxplot

Código
Q1 <- quantile(ds$Valor, 0.25)
Q3 <- quantile(ds$Valor, 0.75)
iqr <- IQR(ds$Valor)
lower <- max(min(ds$Valor), Q1 - (1.5 * iqr))
upper <- min(max(ds$Valor), Q3 + (1.5 * iqr))
ggplot(ds, aes(y = Valor)) +
geom_boxplot() +
geom_errorbar(aes(x = 0.4, ymin = Q1, ymax = Q3),
              width = 0.025, color = "darkgreen") +
annotate("text", x = 0.45, y = median(ds$Valor), label = "AIQ",
         color = "darkgreen") +
annotate("text", x = 0, y = median(ds$Valor) + 0.1, label = "Q2/Mediana",
         color = "darkgreen") +
annotate("text", x = 0, y = Q1 + 0.1, label = "Q1",
         color = "darkgreen") +
annotate("text", x = 0, y = Q3 - 0.1, label = "Q3",
         color = "darkgreen") +
annotate("text", x = 0, y = lower - 0.1,
         label = "Barreira inferior = max(Min, Q1 - (1.5 x AIQ))",
         color = "darkgreen") +
annotate("text", x = 0, y = upper + 0.1,
         label = "Barreira superior = min(Max, Q3 + (1.5 x AIQ))",
         color = "darkgreen") +
theme_classic() +
theme(axis.title.x = element_blank(), axis.text.x = element_blank())

Histograma

Código
ds <- data.frame(xi = 1:10, Var = rnorm(10, 20, 8))
ds$Var <- as.character(round(ds$Var, 2))

kable(ds)
xi Var
1 9.24
2 7.21
3 27.11
4 13.1
5 23.91
6 37.69
7 17.77
8 22.92
9 38.26
10 17.79
Código
ds$Var <- as.numeric(ds$Var)
hist(ds$Var, xlab = "Var", main = "Histogram of Var")

  • Adequado para variáveis quantitativas contínuas

  • Definimos intervalos iguais na escala da variável a descrever

  • As barras tendem a aparecer coladas para o distinguir dos gráficos de barras

Densidade

Código
ds <- data.frame(id = 1:10000, Var = rnorm(10000))
ggplot(ds, aes(x = Var)) + geom_density(fill = "orange") + theme_classic()

  • Adequado para variáveis quantitativas contínuas (ou, menos formalmente, discretas com muitos níveis)

  • Mostra a distribuição dos dados de forma clara

  • Conhecidos mais formalmente como kernel density estimate plot

Violino

Código
ds <- data.frame(id = 1:100, Var = rnorm(100))
ggplot(ds, aes(x ="", y = Var)) +
geom_violin(draw_quantiles = c(.25, .5, .75), fill = "orange") +
geom_point() +
stat_summary(fun.y = mean, size = 1.5, fill = "white", color = "white") +
theme_classic()

  • Adequado para variáveis quantitativas contínuas (ou, menos formalmente, discretas com muitos níveis)

  • Pode incluir as linhas dos quartis, representando a mesma informação que o boxplot, ao mesmo tempo que mostra a distribuição dos dados

  • É uma mistura entre um boxplot e um gráfico de densidade

  • Pode incluir o boxplot sobreposto no meio do violino, e/ou pontos com as observações, e/ou um ponto com a média

Relações Entre Variáveis

Podemos representar e explorar relações entre variáveis:

  • Usando diagramas de dispersão/scatter plots

  • Separando os gráficos que já vimos em função de variáveis qualitativas

  • É importante explorarmos visualmente o padrão e não olhar só para os resultados dum tipo de modelos (e.g., lineares)

Diagrama de Dispersão

Código
ds <- data.frame(a = 1:100)

ds$b <- 1 + ds$a * 0.5 + rnorm(100, 0, 20)

ggplot(ds, aes(x = a, y = b)) + geom_point() + theme_classic()

  • Adequado para variáveis ordinais e quantitativas

  • Muito úteis para quando falarmos de correlações, regressões, etc…

Barras - Revisitadas

Código
ds <- data.frame(Clube = c(rep("Benfica", 3), rep("Sporting", 3), rep("Porto", 3)),
                 Resultado = rep(c("Vitorias", "Empates", "Derrotas"), 3),
                 Total = c(15, 20, 2, 10, 25, 2, 20, 10, 7))

ggplot(ds, aes(x = Resultado, y = Total)) +
geom_bar(aes(fill = Clube), stat = "identity", position = position_dodge2()) +
scale_fill_manual(values = c("Benfica" = "#F8766D", "Porto" = "#619CFF",
                             "Sporting" = "#00BA38")) +
theme_classic()

  • Podemos agrupar as barras em função duma outra variável qualitativa, empelhando-as ou colocando-as lado a lado

Boxplots - Revisitados

Código
ds <- data.frame(Grupo = c(rep("Controlo", 50), rep("Experimental", 50)),
                 Resposta = c(rnorm(50, 3, 1), rnorm(50, 4, 1)))

ggplot(ds, aes(x = Grupo, y = Resposta, fill = Grupo)) +
geom_boxplot() +
theme_classic()

  • Podemos fazer o mesmo com caixas de bigodes e outros gráficos

Violinos - Revisitados

Código
ggplot(ds, aes(x = Grupo, y = Resposta, fill = Grupo)) +
geom_violin(draw_quantiles = c(.25, .5, .75)) +
geom_point() +
stat_summary(fun.y = mean, size = 1.5, fill = "white", color = "white") +
theme_classic()

Histograma - Revisitados

Código
ggplot(ds, aes(x = Resposta, group = Grupo, color = Grupo, fill = Grupo)) +
geom_histogram(aes(y = stat(density))) +
geom_density(fill = NA, color = "black") +
geom_density(fill = NA, linetype = "dashed") +
theme_classic()

  • Histogramas com curvas de densidade sobrepostas

Densidade - Revisitados

Código
ggplot(ds, aes(x = Resposta, fill = Grupo)) +
geom_density(alpha = 0.5) +
theme_classic()

  • Conseguimos ver se há diferenças quer a nível da tendência central, quer a nível da dispersão entre os grupos

  • Um insight importante é perceber que mesmo quando os grupos diferem há muita sobreposição (quando falarmos de comparações de grupos lembrem-se disto…)

Entre Outros

  • Há muito mais gráficos para além dos que falámos hoje

  • Com as capacidades gráficas dos computadores a aumentar vão surgindo interessantes combinações de vários tipos de gráficos

  • O ggplot2 é um pacote do R que permite criar gráficos apelativos compondo vários elementos (e.g., sobrepondo pontos a um violino; sobrepor anotações em texto a um gráfico)

Dica

O tutorial gráficos no R explica como usar o as funções base do R, bem como o pacote ggplot2 para representar graficamente os nossos dados.