PROF. GUILHERME AUGUSTO VELOSO
PRIMEIRO SEMESTRE DE 2023
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:
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
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:
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"))
Para fazer tabelas para variáveis qualitativas,
utilizaremos o pacote expss. As tabelas
construídas por esse pacote trazem as seguintes colunas:
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 |
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.
ggplot2Para 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:
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 +.
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
cinzaxlab(): dar nome ao eixo xylab(): dar nome ao eixo yComo 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 (%)")
Faça um gráfico de barra para a variável
Renda_familiar
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(" ")
1- Faça um gráfico de barras empilhado para a variável
Renda_familiar
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)
1- Construa um gráfico de pizza para a variável
Renda_familiar
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.