INTRODUÇÃO À ESTATÍSTICA

SEMANA 4: ANÁLISE EXPLORATÓRIA DE UMA VARIÁVEL QUALITATIVA

PROF. GUILHERME AUGUSTO VELOSO

PRIMEIRO SEMESTRE DE 2023

1 Aplicação Prática

Utilizaremos, como exemplo, os dados coletados por alunas do curso de pós-graduação em nutrição da UFF com informações sobre 2210 pessoas que responderam um questionário online no ano de 2022. O estudo tem por objetivo avaliar a alteração alimentar dos respondentes com respeito à pandemia. As variáveis coletadas foram:

  • Gênero: Feminino, Masculino, Outro e Prefiro não Responder;
  • Idade: em anos;
  • Região: Norte, Nordeste, Centro-Oeste, Sul e Sudeste;
  • Renda_familiar: Até R$ 1254,00, entre R$1255,00 e R$8640,00 e mais que R$8640,00;
  • Peso, em quilos;
  • Altura, em metros.
  • Paes_Torradas_Biscoitos: 1 = diminuiu, 2 = não alterou, 3 = aumentou.

A base de dados está salva no arquivo dados.csv. 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

2 Fatores

As variáveis qualitativas sempre estão presentes nos conjuntos de dados. Por padrão, o R ordena suas categorias por ordem alfabética. No R, os fatores são usados para trabalhar com variáveis qualitativas permitindo, principalmente:

  • Permitir a rotulação de variáveis qualitativas ordinais.
  • Mudar a ordem de apresentação das categorias de uma variável qualitativa.

Vamos exemplificar o uso dos fatores no Rcom as variáveis Regiao e Paes_Torradas_Biscoitos.

Para a variável Regiao vamos reordenar suas categorais:

# Verificando as categorias da variável Regiao
unique(dados$Regiao)
## [1] "Sul"          "Sudeste"      "Norte"        "Centro-oeste" "Nordeste"
# Transformando essa variável em fator e ordenando suas categorias
# levels: dá a ordem de apresentação
dados$Regiao = factor(x = dados$Regiao,
                      levels = c("Centro-oeste","Sudeste","Sul","Nordeste","Norte"))

Para a variável Paes_Torradas_Biscoitos, vamos rotular suas categorias:

# 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"))

3 Tabelas

Para fazer tabelas para variáveis qualitativas, utilizaremos o pacote expss. As tabelas construídas por esse pacote trazem as seguintes colunas:

  • Count: Frequência absoluta.
  • Valid percent: Frequência relativa em porcentagem válida (sem os NA).
  • Percent: Frequência relativa em porcentagem geral (com e sem NA).
  • Cumulative responses Frequência relativa acumulada em porcentagem.

Seguem os comandos para a construção de tabelas para as variáveis Regiao e Paes_Torradas_Biscoitos:

library(expss)
## Warning: package 'expss' was built under R version 4.2.3
## Carregando pacotes exigidos: maditr
## Warning: package 'maditr' was built under R version 4.2.3
## 
## To modify variables or add new variables:
##              let(mtcars, new_var = 42, new_var2 = new_var*hp) %>% head()
## 
## Attaching package: 'maditr'
## The following objects are masked from 'package:dplyr':
## 
##     between, coalesce, first, last
## The following object is masked from 'package:purrr':
## 
##     transpose
## The following object is masked from 'package:readr':
## 
##     cols
## 
## Use 'expss_output_viewer()' to display tables in the RStudio Viewer.
##  To return to the console output, use 'expss_output_default()'.
## 
## Attaching package: 'expss'
## The following objects are masked from 'package:stringr':
## 
##     fixed, regex
## The following objects are masked from 'package:dplyr':
## 
##     compute, contains, na_if, recode, vars, where
## The following objects are masked from 'package:purrr':
## 
##     keep, modify, modify_if, when
## The following objects are masked from 'package:tidyr':
## 
##     contains, nest
## The following object is masked from 'package:ggplot2':
## 
##     vars
library(dplyr)

# Criando uma tabela de distribuições de frequência para a variável Regiao
dados %>% select(Regiao) %>% fre()
.  Count   Valid percent   Percent   Responses, %   Cumulative responses, % 
 Centro-oeste  220 10.0 10.0 10.0 10.0
 Sudeste  935 42.3 42.3 42.3 52.3
 Sul  461 20.9 20.9 20.9 73.1
 Nordeste  278 12.6 12.6 12.6 85.7
 Norte  316 14.3 14.3 14.3 100.0
 #Total  2210 100 100 100
 <NA>  0 0.0
# Criando uma tabela de distribuições de frequência para a variável Paes_Torradas_Biscoitos
dados %>% select(Paes_Torradas_Biscoitos) %>% fre()
.  Count   Valid percent   Percent   Responses, %   Cumulative responses, % 
 Diminuiu  285 12.9 12.9 12.9 12.9
 Nao alterou  975 44.1 44.1 44.1 57.0
 Aumentou  950 43.0 43.0 43.0 100.0
 #Total  2210 100 100 100
 <NA>  0 0.0

As funções do pacote dplyr podem ser usadas para ajudar a tornar as tabelas mais específicas. Por exemplo, suponha que estejamos interessados na tabela da variável Paes_Torradas_Biscoitos apenas para as pessoas provenientes da região Norte. Para isso,

# Criando uma tabela de distribuições de frequência para a variável Paes_Torradas_Biscoitos apenas pra regiao Norte
dados %>% filter(Regiao=="Norte") %>% select(Paes_Torradas_Biscoitos)%>%  fre()
.  Count   Valid percent   Percent   Responses, %   Cumulative responses, % 
 Diminuiu  42 13.3 13.3 13.3 13.3
 Nao alterou  126 39.9 39.9 39.9 53.2
 Aumentou  148 46.8 46.8 46.8 100.0
 #Total  316 100 100 100
 <NA>  0 0.0

3.1 Exercício

1-Faça uma tabela para a variável Renda_familiar.

2-Faça uma tabela para a variável Renda_familiar apenas para as pessoas com mais de 40 anos.

4 O pacote ggplot2

Para a construção de todos os gráficos dessa disciplina, utilizaremos o pacote ggplot2:

A construção de gráficos no R foi revolucionada com a criação do pacote ggplot2, fruto da tese de doutorado do Hadley Wickham, em 2005. Essa revolução teve base na filosofia que Hadley adotou para responder a pergunta “O que é um gráfico estatístico?”.

Em 2005, o estatístico norte-americano Leland Wilkinson publicou o livro The Grammar of graphics (A gramática dos gráficos, em português), uma fonte de princípios fundamentais para a construção de gráficos estatísticos. No livro, ele defende que um gráfico é o mapeamento dos dados em atributos estéticos (posição, cor, forma, tamanho) de formas geométricas (pontos, linhas, barras, caixas).

A partir dessa definição, Hadley escreveu A Layered Grammar of Graphics (Uma gramática em camada dos gráficos), acrescentando que os elementos de um gráfico (dados, sistema de coordenadas, rótulos, anotações, entre outros) são as suas camadas e que a construção de um gráfico se dá pela sobreposição dessas camadas.

Essa é a essência do ggplot2: construir um gráfico camada por camada.

Além de uma filosofia bem fundamentada, o ggplot2 ainda traz outras vantagens em relação aos gráficos do R base:

  • Gráficos naturalmente mais bonitos;
  • Fácil personalização (mais simples deixar o gráfico do jeito que você quer);
  • A estrutura padronizada das funções deixa o aprendizado mais intuitivo;
  • A diferença no código entre tipos diferentes de gráficos é muito pequena.

Para exemplificar o tratamento gráfico dado a uma variável qualitativa, vamos exemplificar o uso do pacote ggplot2com a variável Regiao.

O comando principal a ser utilizado se chama ggplot (sem o 2). O comando básico a partir do qual vamos gerar todos os gráficos é

ggplot(data = "insira os seus dados", mapping = aes(x = "variável x", y = "variável y"))

As camadas vão sendo colocadas nessa função de base simplesmente utilizando o comando +.

4.1 Gráficos de Barra

Para fazer gráficos de barra no ggplot2, utilizamos a função geom_bar. Seguem os comandos:

library("ggplot2")
# Gráfico de barras verticais 
ggplot(data = dados, mapping = aes(x = Regiao)) + geom_bar() 

Para fazer gráficos de barra horizontais, basta acrescentar a função coord_flip:

# Gráfico de barras horizontais
ggplot(data = dados, mapping = aes(x = Regiao)) + geom_bar()+coord_flip()

Para trocar a frequência absoluta simples por relativa, acrescente y = after_stat(prop) no aes e, posteriormente, some o comando scale_y_continuous(labels = scales::percent_format()) para mudar o eixo y pra porcentagem:

# Gráfico de barras verticais 
ggplot(data = dados, mapping = aes(x = Regiao, y = after_stat(prop),group = 1)) + geom_bar() +
  scale_y_continuous(labels = scales::percent_format())

Para colorir todas as barras com alguma cor, basta usar o comando geom_bar(fill = "nome da cor"):

# Gráfico de barras verticais 
ggplot(data = dados, mapping = aes(x = Regiao, y = after_stat(prop),group = 1)) + geom_bar(fill = "blue") +
  scale_y_continuous(labels = scales::percent_format())

A partir desse momento, você pode personalizar seu gráfico como preferir. Seguem algumas funções muito utilizadas:

  • theme_bw(): para remover o fundo cinza
  • xlab(): dar nome ao eixo x
  • ylab(): dar nome ao eixo y

Como consequência, podemos construir um gráfico mais completo:

# Gráfico de barras verticais 
ggplot(data = dados, mapping = aes(x = Regiao, y = after_stat(prop),group = 1)) + geom_bar(fill="green") +
  scale_y_continuous(labels = scales::percent_format()) + theme_bw() +
  xlab("Regiões do Brasil") + ylab("Frequência Relativa (%)")

4.1.1 Exercício

Faça um gráfico de barra para a variável Renda_familiar

4.2 Gráfico de barra empilhado

O gráfico de barra empilhado trabalha com partes de um todo para representar as frequências de cada categoria. O tamanho de cada parte, ou fatia, varia de acordo com a porcentagem em cada categoria. No R, para fazer o gráfico de barra empilhado, seguem os comandos:

dados %>% count(Regiao) %>% mutate(pct = prop.table(n))%>%
ggplot(aes(x = " ", y = pct, fill = Regiao)) + 
  geom_bar( stat="identity")+
  scale_y_continuous(labels = scales::percent_format())+
  theme_bw()+
  ylab("Frequência Relativa (%)")+
  xlab(" ")

4.2.1 Exercício

1- Faça um gráfico de barras empilhado para a variável Renda_familiar

4.3 Gráfico de setores (pizza)

Para fazer um gráfico de setores (pizza), basta acrescentar o comando coord_polar("y", start=0). Seguem os comandos:

dados %>% count(Regiao) %>% mutate(pct = prop.table(n))%>%
ggplot(aes(x = " ", y = pct, fill = Regiao)) + 
  geom_bar( stat="identity")+
  scale_y_continuous(labels = scales::percent_format())+
  theme_bw()+
  xlab(" ")+
  ylab(" ")+
  coord_polar("y", start=0)

4.3.1 Exercício

1- Construa um gráfico de pizza para a variável Renda_familiar

5 Exportar Gráficos

Para exportar gráficos no R, o processo é bastante intuitivo e autoexplicativo. No gráfico apresentado no painel do R, vá em export e, posteriormente, save as image. Na janela apresentada, há as opções para escolher a pasta de destino onde será salva a imagem e colocar o nome no arquivo.