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"))
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:
# 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- 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
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.
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:
mean()which.max(tabulate())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
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:
max()min()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
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:
var()sd()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
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:
skewness()kurtosis()-3Lembre-se que:
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
Para a variável Peso, encontre o mínimo, média, mediana,
Q1, Q2, Percentil 90, máximo, desvio padrão, assimetria e curtose.
Assim como nas variáveis qualitativas, as variáveis
quantitativas também terão seus gráficos construídos usando o pacote
ggplot2.
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")
Faça o histograma da variável altura
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(" ")
Faça um boxplot para a variável Altura.
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(" ")
Faça um gráfico violino para a variável Altura.