Aprenderemos como visualizar e analisar variáveis quantitativas contínuas por meio de histogramas e boxplots. Usaremos exemplos reais e simulados com dois conjuntos de dados:
Notas de Física de uma turma
100 maiores salários de desenvolvedores de software no Brasil
O histograma agrupa os dados contínuos em faixas (classes) e mostra quantas observações caem em cada faixa. É ideal para:
Analisar a distribuição de dados
Detectar assimetria ou curtose
Comparar efeitos de transformações nos dados (ex: bonificações) ## Atividade 1 : notas de física
notas = c(0.8, 2, 2, 2.5, 2.5, 3.5, 4.5, 5, 5.4, 5.5, 5.5, 5.5,
6, 6, 6, 6, 6.3, 6.5, 6.8, 6.8, 7, 7, 7, 7, 7.3, 7.3,
7.5, 7.5, 7.5, 7.5, 7.8, 8, 8, 8, 8)
tabnotas = table(notas)
barplot(tabnotas)
### Histograma com 5 classes
hist(notas,
nclass = 5,
right = FALSE,
ylim = c(0,30),
col = c("#c252fa", "#f4fa52", "aquamarine", "#ffc2f2"),
main = "Histograma das notas de física",
xlab = "Notas da turma",
ylab = "Frequência absoluta")
notas1 = notas + 1
hist(notas1,
breaks = c(1,3,5,7,9),
right = FALSE,
ylim = c(0,30),
xlim = c(0,10),
col = "blue",
main = "Notas de física somando 1 ponto",
xlab = "Notas da turma",
ylab = "Frequência absoluta")
notas2 = notas * 1.2
hist(notas2,
breaks = c(0, 2.4, 4.8, 7.2, 9.6),
right = FALSE,
ylim = c(0,30),
xlim = c(0,10),
col = "#37fae3",
main = "Notas de física aumentadas em 20%",
xlab = "Notas da turma",
ylab = "Frequência absoluta")
salarios <- c(
14688, 14792, 14876, 14912, 15008, 15121, 15188, 15202, 15245, 15300,
15312, 15398, 15422, 15487, 15505, 15534, 15545, 15602, 15656, 15667,
15687, 15702, 15728, 15755, 15769, 15802, 15845, 15900, 15955, 15989,
16000, 16022, 16034, 16088, 16123, 16167, 16202, 16256, 16300, 16345,
16400, 16422, 16430, 16487, 16520, 16566, 16602, 16645, 16689, 16700,
16733, 16765, 16789, 16800, 16845, 16867, 16889, 16900, 16945, 16967,
16988, 17000, 17022, 17045, 16890, 17066, 17089, 17100, 17145, 17189,
17202, 17222, 17256, 17289, 17300, 17322, 17345, 17366, 17389, 17400,
17433, 17456, 17467, 17489, 17500, 17545, 17556, 17567, 17578, 17600,
17622, 17633, 17645, 17667, 17689, 17700, 17733, 17789, 17845, 18515
)
salarios_mil = salarios / 1000 # Convertendo para mil R$
hist(salarios_mil,
breaks = seq(14.6, 18.6, by = 0.4),
col = "#6783cf",
main = "Histograma dos 100 maiores salários de desenvolvedores de software no Brasil",
xlab = "Salário (mil R$)",
ylab = "Frequência absoluta",
xlim = c(14, 19),
ylim = c(0, 22))
media = mean(salarios_mil)
q1 = salarios_mil[25]
q2 = salarios_mil[50]
q3 = salarios_mil[75]
abline(v = media, col = "black", lwd = 2, lty = 2) # média
abline(v = q1, col = "yellow", lwd = 2, lty = 3) # Q1
abline(v = q2, col = "yellow", lwd = 2, lty = 3) # Q2
abline(v = q3, col = "yellow", lwd = 2, lty = 3) # Q3
boxplot(salarios_mil,
horizontal = TRUE,
col = "purple",
main = "Boxplot dos salários (mil R$)")
A = c(61, 56, 63, 57, 67, 63, 67, 58, 67, 56)
A
## [1] 61 56 63 57 67 63 67 58 67 56
B = c(67, 48, 52, 82, 77, 33, 67, 42, 90, 57)
B
## [1] 67 48 52 82 77 33 67 42 90 57
semana = c(1:10)
semana
## [1] 1 2 3 4 5 6 7 8 9 10
acoes = data.frame(semana, A, B)
acoes
## semana A B
## 1 1 61 67
## 2 2 56 48
## 3 3 63 52
## 4 4 57 82
## 5 5 67 77
## 6 6 63 33
## 7 7 67 67
## 8 8 58 42
## 9 9 67 90
## 10 10 56 57
plot(semana, A,
type = "l",
col = "purple",
lwd = 2,
pch = 18,
ylim = c(30,95),
main = "Cotação das Ações",
ylab = "Cotações")
lines(semana, B,
type = "l",
col = "#e2b8f2",
lwd = 2,
pch = 18)
legend(8.5, 50,
c("Ações de A", "Ações de B"),
col = c("purple", "#e2b8f2"),
lty = 1,
pch = 18,
cex = 0.75)
mean(A)
## [1] 61.5
mean(B)
## [1] 61.5