INTRODUÇÃO À ESTATÍSTICA

SEMANA 5: ANÁLISE EXPLORATÓRIA DE UMA VARIÁVEL QUANTITATIVA

PROF. GUILHERME AUGUSTO VELOSO

PRIMEIRO SEMESTRE DE 2023

Diferentemente das variáveis qualitativas, com as variáveis quantitativas temos muito mais recursos para construir mecanismos de resumo dos dados.

Antes de sumarizar variáveis quantitativas, seguem os comandos para a leitura dos dados:

# Carregando o universo tidyverse
library("tidyverse")
## Warning: package 'tidyverse' was built under R version 4.2.3
## Warning: package 'readr' was built under R version 4.2.3
## Warning: package 'forcats' was built under R version 4.2.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.0     ✔ readr     2.1.4
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ ggplot2   3.4.1     ✔ tibble    3.1.8
## ✔ lubridate 1.9.2     ✔ tidyr     1.3.0
## ✔ purrr     1.0.1     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
# Carregando a biblioteca readr
library("readr")
# Lendo a base de dados no formato .csv
dados = read_csv("Dados.csv")
## Rows: 2210 Columns: 7
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (3): Genero, Regiao, Renda_familiar
## dbl (4): Idade, Altura, Peso, Paes_Torradas_Biscoitos
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
dados
## # A tibble: 2,210 × 7
##    Genero    Regiao       Renda_familiar            Idade Altura  Peso Paes_To…¹
##    <chr>     <chr>        <chr>                     <dbl>  <dbl> <dbl>     <dbl>
##  1 Masculino Sul          entre R$ 1.255 - R$ 8.640    38   1.7   99           3
##  2 Masculino Sudeste      mais de R$ 8.640             28   1.95  95.6         2
##  3 Feminino  Sudeste      at<U+00E9> R$ 1254,00        24   1.71  91           2
##  4 Feminino  Norte        at<U+00E9> R$ 1254,00        26   1.68  90.5         1
##  5 Feminino  Sudeste      entre R$ 1.255 - R$ 8.640    56   1.68  87.8         2
##  6 Masculino Centro-oeste entre R$ 1.255 - R$ 8.640    22   1.85  86.2         3
##  7 Feminino  Centro-oeste entre R$ 1.255 - R$ 8.640    43   1.67  85           2
##  8 Feminino  Sudeste      entre R$ 1.255 - R$ 8.640    69   1.7   83.2         2
##  9 Feminino  Norte        entre R$ 1.255 - R$ 8.640    34   1.59  80.9         3
## 10 Feminino  Centro-oeste entre R$ 1.255 - R$ 8.640    29   1.68  80.6         3
## # … with 2,200 more rows, and abbreviated variable name
## #   ¹​Paes_Torradas_Biscoitos
# Verificando as categorias da variável Paes_Torradas_Biscoito
unique(dados$Paes_Torradas_Biscoitos)
## [1] 3 2 1
# Dando nome às suas categorias
# labels: dá nome aos numeros
dados$Paes_Torradas_Biscoitos = factor(x = dados$Paes_Torradas_Biscoitos,
                      levels = c(1,2,3),
                      labels = c("Diminuiu", "Nao alterou", "Aumentou"))

1 Tabelas

Para representar variáveis quantitativas (principalmente as contínuas) em tabelas é necessário construir classes ou faixas de valores. Não existe uma regra única para a construção dessas faixas.

As classes devem abranger todas as observações e cada valor observado deve enquadrar-se em apenas uma classe. O extremo superior de uma classe é o extremo inferior da classe subsequente. A quantidade de classes, de modo geral, não deve ser inferior a 5 ou superior a 15.

No R, para fazer tabelas de variáveis quantitativas, utilizaremos o pacote fdth. A tabela compilada apresenta as seguintes colunas:

  • f: Frequência simples
  • rf: Frequência relativa
  • rf(%): Frequência relativa (%)
  • cf: Frequência acumulada
  • cf(%): Frequência acumulada relativa (%)
# Instalar o pacote fdth
# install.packages("fdth")
# Carregando o pacote
library(fdth)
## Warning: package 'fdth' was built under R version 4.2.3
## 
## Attaching package: 'fdth'
## The following objects are masked from 'package:stats':
## 
##     sd, var
library(dplyr)
dados %>% #comece informando a base de dados
  select(Peso) %>% #depois selecione da base a variável para a qual será criada a tabela
  fdt(breaks="Sturges") %>%
  summary()
## Peso 
##       Class limits   f   rf rf(%)   cf  cf(%)
##    [35.64,43.5035)  15 0.01  0.68   15   0.68
##  [43.5035,51.3669) 189 0.09  8.55  204   9.23
##  [51.3669,59.2304) 398 0.18 18.01  602  27.24
##  [59.2304,67.0938) 456 0.21 20.63 1058  47.87
##  [67.0938,74.9573) 379 0.17 17.15 1437  65.02
##  [74.9573,82.8208) 314 0.14 14.21 1751  79.23
##  [82.8208,90.6842) 232 0.10 10.50 1983  89.73
##  [90.6842,98.5477) 102 0.05  4.62 2085  94.34
##  [98.5477,106.411)  60 0.03  2.71 2145  97.06
##  [106.411,114.275)  35 0.02  1.58 2180  98.64
##  [114.275,122.138)  20 0.01  0.90 2200  99.55
##  [122.138,130.002)   8 0.00  0.36 2208  99.91
##  [130.002,137.865)   2 0.00  0.09 2210 100.00

Assim como na semana passada, podemos criar tabelas mais específicas. Por exemplo, suponha que queiramos apenas uma tabela da variável peso para as pessoas oriundas da região Norte. Seguem os comandos

dados %>% #comece informando a base de dados
  filter(Regiao=="Norte")%>%
  select(Peso) %>% #depois selecione da base a variável para a qual será criada a tabela
  fdt(breaks="Sturges") %>%
  summary()
## Peso 
##       Class limits  f   rf rf(%)  cf  cf(%)
##    [42.57,52.0995) 30 0.09  9.49  30   9.49
##   [52.0995,61.629) 68 0.22 21.52  98  31.01
##   [61.629,71.1585) 80 0.25 25.32 178  56.33
##   [71.1585,80.688) 59 0.19 18.67 237  75.00
##   [80.688,90.2175) 41 0.13 12.97 278  87.97
##   [90.2175,99.747) 23 0.07  7.28 301  95.25
##   [99.747,109.277)  9 0.03  2.85 310  98.10
##  [109.277,118.806)  1 0.00  0.32 311  98.42
##  [118.806,128.336)  3 0.01  0.95 314  99.37
##  [128.336,137.865)  2 0.01  0.63 316 100.00

1.1 Exercícios

1- Faça uma tabela para a variável Altura

2- Faça uma tabela para a variável Altura apenas para aqueles que tiveram Aumento no consumo de Paes, torradas e biscoito

2 Medidas-Resumo

No R, cada medida resumo calculada recebe uma função própria do software que pode estar direto na base do R ou carregada a partir de algum pacote externo. Para aplicá-las no R, utilizaremos a função summarise do pacote dplyr. Como ilustração, aplicaremos na variável Idade da base de dados de nutrição.

2.1 Medidas de Posição

As medidas de posição ou medidas de tendência central indicam um valor que melhor representa todo o conjunto de dados, ou seja, dão a tendência da concentração dos valores observados.

No R, os comandos para as principais medidas de posição ou tendência central são:

  • Média simples: mean()
  • Moda: which.max(tabulate())
  • Mediana: median()

Seguem os comandos para a aplicação das medidas de posição citadas:

# O comando summarise criá sumários dos dados. Basta dar um nome para cada medida resumo
dados %>% summarise(Media = mean(Idade),
                    Moda = which.max(tabulate(Idade)),
                    Mediana = median(Idade))
## # A tibble: 1 × 3
##   Media  Moda Mediana
##   <dbl> <int>   <dbl>
## 1  34.9    21      32

2.2 Medidas de Posição Relativa

Descrevem posição relativa, em termos de frequência, de um particular valor na amostra. No R, os comandos para as principais medidas de posição relativa são:

  • Máximo: max()
  • Mínimo: min()
  • Percentis: quantile()

Seguem os comandos para a aplicação das medidas de posição relativa citadas:

# Na função quantile, o argumento prob recebe a probabilidade de acúmulo desejada.
dados %>% summarise(Minimo = min(Idade),
                    Maximo = max(Idade),
                    Q_1 = quantile(Idade,prob=0.25),
                    Q_2 = quantile(Idade,prob=0.50),
                    Q_3 = quantile(Idade,prob=0.75))
## # A tibble: 1 × 5
##   Minimo Maximo   Q_1   Q_2   Q_3
##    <dbl>  <dbl> <dbl> <dbl> <dbl>
## 1     20     73    24    32    43

2.3 Medidas de Dispersão

As medidas de dispersão são utilizadas para indicar o grau de variação dos elementos de um conjunto numérico em relação a alguma medida de posição central. No R, os comandos para as principais medidas de dispersão:

  • Variância amostral: var()
  • Desvio-padrão amostral: sd()
  • Desvio absoluto da mediana: mad()

Seguem os comandos para a aplicação das medidas de posição relativa citadas:

dados %>% summarise(Variancia = var(Idade),
                    Desvio_Padrao= sd(Idade),
                    Desvio_Absoluto_Mediano = mad(Idade))
## # A tibble: 1 × 3
##   Variancia Desvio_Padrao Desvio_Absoluto_Mediano
##       <dbl>         <dbl>                   <dbl>
## 1      158.          12.6                    13.3

2.4 Medidas de Forma

Essas medidas descrevem a forma da curva de distribuição a partir de como os dados estão distribuídos. No R, para calcular as medidas de forma, utilizaremos o pacote moments. Os comandos para as medidas de forma são:

  • Assimetria: skewness()
  • Curtose: kurtosis()-3

Lembre-se que:

  • Se o coeficiente de assimetria é negativa, a distribuição é assimétrica à esquerda.
  • Se o coeficiente de assimetria é positivo, a distribuição é assimétrica à direita.
  • Se o coeficiente de assimetria é nulo, a distribuição é simétrica.
  • Se o coeficiente de curtose é negativo, a distribuição é platicúrtica.
  • Se o coeficiente de curtose é positivo, a distribuição é leptocúrtica.
  • Se o coeficiente de curtose é nulo, a distribuição é mesocúrtica.

Seguem os comandos para a aplicação das medidas de forma:

# install.packages("moments")
# Carregando o pacote moments
library("moments")
dados %>% summarise(Assimetria = skewness(Idade),
                    Curtose= kurtosis(Idade)-3)
## # A tibble: 1 × 2
##   Assimetria Curtose
##        <dbl>   <dbl>
## 1      0.806  -0.202

2.5 Exercícios

Para a variável Peso, encontre o mínimo, média, mediana, Q1, Q2, Percentil 90, máximo, desvio padrão, assimetria e curtose.

3 Gráficos

Assim como nas variáveis qualitativas, as variáveis quantitativas também terão seus gráficos construídos usando o pacote ggplot2.

3.1 Histograma

Um histograma apresenta os dados como um gráfico de barras verticais. Cada barra representa uma classe de valores da distribuição de frequência. A variável numérica é representada ao longo do eixo horizontal e o eixo vertical representa a frequência absoluta ou relativa de valores por intervalo de classe. Nunca há lacunas entre as barras adjacentes em um histograma.

No ggplot2 o histograma é construído com a função geom_histogram(). Seguem os códigos para a construção de um histograma para a variável idade:

# Gráfico histograma
ggplot(data = dados, mapping = aes(x = Idade)) + geom_histogram(fill="lightblue" ) +
  theme_bw() + xlab("Idade") + ylab("Frequencia Absoluta")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Para alterar o número de barras, utilize o argumento bin:

# Gráfico histograma
ggplot(data = dados, mapping = aes(x = Idade)) + geom_histogram(bins=8,fill="lightblue" ) +
  theme_bw() + xlab("Idade") + ylab("Frequencia Absoluta")

Para considerar a classificação de Sturges usar o argumento breaks:

# Criando os pontos de corte
breaks = pretty(range(dados$Idade),
                 n = nclass.Sturges(dados$Idade),
                 min.n = 1)

# Gráfico histograma com Sturges

ggplot(data = dados, mapping = aes(x = Idade)) + geom_histogram(breaks=breaks,fill="lightblue") +
  theme_bw() + xlab("Idade") + ylab("Frequencia Absoluta")

3.1.1 Exercício

Faça o histograma da variável altura

3.2 Boxplot

O Boxplot é um dos gráficos mais importantes da estatística. Ao ser aplicado em um conjunto de dados, o boxplot dá uma ideia da posição, dispersão, assimetria, caudas e dados discrepantes.

No R o boxplot é criado com a função geom_boxplot do ggplot2. Seguem os comandos para a criação do boxplot para a variável Idade:

# Gráfico boxplot vertical
ggplot(data = dados, mapping = aes(x = " ", y=Idade)) + geom_boxplot(fill="green" ) +
  theme_bw() + xlab(" ") + ylab("Idade")

Para fazer o boxplot horizontal, basta alterar os eixos x e y:

# Gráfico boxplot horizontal
ggplot(data = dados, mapping = aes(x = Idade, y=" ")) + geom_boxplot(fill="green" ) +
  theme_bw() + xlab("Idade") + ylab(" ")

3.2.1 Exercício

Faça um boxplot para a variável Altura.

3.3 Violino

Um gráfico de violino é um método de representação de dados numéricos. É semelhante a um gráfico boxplot, com a adição de um gráfico com a suavização da distribuição dos dados. No R, esse gráfico é feito com a função geom_violin():

# Gráfico boxplot horizontal
ggplot(data = dados, mapping = aes(x = Idade, y=" ")) + geom_violin(fill="green" ) + geom_boxplot(width=0.1) + theme_bw() + xlab("Idade") + ylab(" ")

3.3.1 Exercício

Faça um gráfico violino para a variável Altura.