Utilizo o dataset clássico mtcars, que contém características de 32 modelos de automóveis extraídas da revista Motor Trend US de 1974. O dataset possui 32 linhas e 11 variáveis numéricas.
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Dimensões: 32 linhas e 11 colunas
O dataframe contém variáveis como mpg (milhas por galão), cyl (cilindros), hp (potência), wt (peso) e am (transmissão), entre outras.
dados <- dados %>%
mutate(
# Conversão de milhas/galão para km/litro
kml = round(mpg * 0.4251, 2),
# Classificação do motor por cilindros
classe_motor = case_when(
cyl == 4 ~ "Econômico",
cyl == 6 ~ "Intermediário",
cyl == 8 ~ "Potente"
),
# Tipo de transmissão legível
transmissao = ifelse(am == 1, "Manual", "Automático")
)
# Exibe amostra dos dados com novas variáveis
head(dados[, c("cyl", "mpg", "kml", "classe_motor", "transmissao")], 5)## cyl mpg kml classe_motor transmissao
## Mazda RX4 6 21.0 8.93 Intermediário Manual
## Mazda RX4 Wag 6 21.0 8.93 Intermediário Manual
## Datsun 710 4 22.8 9.69 Econômico Manual
## Hornet 4 Drive 6 21.4 9.10 Intermediário Automático
## Hornet Sportabout 8 18.7 7.95 Potente Automático
Foram criadas três variáveis derivadas: - kml: conversão do consumo para unidade métrica (km/litro) - classe_motor: categorização qualitativa (Econômico, Intermediário, Potente) - transmissao: transformação do código binário em rótulo legível
# Calcula a mediana de consumo
mediana_kml <- median(dados$kml)
# Filtra apenas veículos acima da mediana
dados_filtrados <- dados %>%
filter(kml > mediana_kml)
cat("Mediana de consumo (km/l):", mediana_kml, "\n")## Mediana de consumo (km/l): 8.16
## Veículos acima da mediana: 15 de 32
A filtragem mantém apenas os veículos mais eficientes em combustível, eliminando os que ficam abaixo da mediana.
# Seleciona e ordena as colunas de interesse
dados_final <- dados %>%
filter(kml > mediana_kml) %>%
transmute(
Modelo = rownames(.),
Cilindros = cyl,
Consumo_kml = kml,
Potencia_HP = hp,
Peso_ton = wt,
Classe = classe_motor,
Transmissao = transmissao
) %>%
arrange(desc(Consumo_kml))
# Exibe os 6 primeiros registros
kable(head(dados_final, 6),
caption = "Veículos mais eficientes (acima da mediana)",
align = "lcccccl")| Modelo | Cilindros | Consumo_kml | Potencia_HP | Peso_ton | Classe | Transmissao | |
|---|---|---|---|---|---|---|---|
| Toyota Corolla | Toyota Corolla | 4 | 14.41 | 65 | 1.835 | Econômico | Manual |
| Fiat 128 | Fiat 128 | 4 | 13.77 | 66 | 2.200 | Econômico | Manual |
| Honda Civic | Honda Civic | 4 | 12.92 | 52 | 1.615 | Econômico | Manual |
| Lotus Europa | Lotus Europa | 4 | 12.92 | 113 | 1.513 | Econômico | Manual |
| Fiat X1-9 | Fiat X1-9 | 4 | 11.61 | 66 | 1.935 | Econômico | Manual |
| Porsche 914-2 | Porsche 914-2 | 4 | 11.05 | 91 | 2.140 | Econômico | Manual |
A tabela apresenta os 6 modelos mais eficientes após as transformações, ordenados do maior para o menor consumo em km/litro.
dados %>%
group_by(classe_motor) %>%
summarise(
N = n(),
Consumo_medio_kml = round(mean(kml), 2),
Potencia_media_HP = round(mean(hp), 1),
Peso_medio_ton = round(mean(wt), 2),
.groups = "drop"
) %>%
kable(
col.names = c("Classe", "N", "Consumo médio (km/l)",
"Potência média (HP)", "Peso médio (ton)"),
caption = "Estatísticas por classe de motor"
)| Classe | N | Consumo médio (km/l) | Potência média (HP) | Peso médio (ton) |
|---|---|---|---|---|
| Econômico | 11 | 11.33 | 82.6 | 2.29 |
| Intermediário | 7 | 8.39 | 122.3 | 3.12 |
| Potente | 14 | 6.42 | 209.2 | 4.00 |
O agrupamento revela que motores Econômicos (4 cilindros) consomem menos combustível, enquanto os Potentes (8 cilindros) são mais pesados e gastadores.
A tabela abaixo utiliza o pacote DT, oferecendo funcionalidades de busca, ordenação e paginação em tempo real.
DT::datatable(
dados_final,
rownames = FALSE,
caption = "Dataset mtcars — Veículos acima da mediana de consumo",
filter = "top",
extensions = c("Buttons"),
options = list(
pageLength = 6,
dom = "Bfrtip",
buttons = c("csv", "excel", "print"),
language = list(
url = "//cdn.datatables.net/plug-ins/1.10.11/i18n/Portuguese-Brasil.json"
)
)
) %>%
DT::formatStyle(
"Consumo_kml",
background = DT::styleColorBar(dados_final$Consumo_kml, "#5bc0de"),
backgroundSize = "100% 80%",
backgroundRepeat = "no-repeat",
backgroundPosition = "center"
)Recursos: A coluna Consumo_kml exibe barras de progresso visuais. Os botões permitem exportar para CSV, Excel ou imprimir.
\[P(H \mid E) = \frac{P(E \mid H) \cdot P(H)}{P(E)}\]
Descreve como atualizar a probabilidade de uma hipótese H à luz de nova evidência E. É o fundamento de classificadores Naive Bayes e da inferência bayesiana em ciência de dados.
\[H(X) = -\sum_{i=1}^{n} p(x_i) \log_2 p(x_i)\]
Mede o grau de incerteza de uma variável aleatória. Em aprendizado de máquina, é usada em árvores de decisão como critério de divisão. Máxima quando todas as classes são equiprováveis; mínima quando há certeza.
\[\mathcal{L} = -\frac{1}{N} \sum_{i=1}^{N} y_i \log(\hat{p}_i)\]
Quantifica a discrepância entre a distribuição verdadeira (yi) e a prevista (p̂i) em problemas de classificação. É a função de custo padrão em redes neurais; minimizá-la equivale a maximizar a verossimilhança.
\[\hat{\boldsymbol{\beta}} = \left(\mathbf{X}^\top \mathbf{X}\right)^{-1} \mathbf{X}^\top \mathbf{y}\]
Fornece a solução de forma fechada para os coeficientes que minimizam a soma dos quadrados dos resíduos. Elegante matematicamente, mas computacionalmente custosa para muitas variáveis; nesses casos, prefere-se gradiente descendente.
\[R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2}\]
Mede a proporção de variância em y explicada pelo modelo de regressão. Varia de 0 a 1: quanto mais próximo de 1, melhor o ajuste; R² = 0 indica que o modelo não explica a variância.
ggplot(dados, aes(x = classe_motor, y = kml, fill = classe_motor)) +
geom_boxplot(alpha = 0.7, outlier.colour = "red") +
geom_jitter(width = 0.2, alpha = 0.4, size = 2) +
scale_fill_manual(values = c("Econômico" = "#2ecc71",
"Intermediário" = "#f39c12",
"Potente" = "#e74c3c")) +
labs(
title = "Consumo de Combustível por Classe de Motor",
x = "Classe do Motor",
y = "Consumo (km/l)",
fill = "Classe"
) +
theme_minimal(base_size = 12) +
theme(
legend.position = "bottom",
plot.title = element_text(face = "bold", size = 13)
)Figura 1: Distribuição do consumo de combustível (km/l) por classe de motor. Veículos Econômicos consomem significativamente menos que os Potentes.
ggplot(dados, aes(x = wt, y = hp, color = classe_motor, size = kml)) +
geom_point(alpha = 0.6) +
geom_smooth(method = "lm", se = FALSE, color = "gray50", linetype = "dashed") +
scale_color_manual(values = c("Econômico" = "#2ecc71",
"Intermediário" = "#f39c12",
"Potente" = "#e74c3c")) +
scale_size(range = c(2, 6), name = "Consumo (km/l)") +
labs(
title = "Potência vs. Peso do Veículo",
x = "Peso (toneladas)",
y = "Potência (HP)",
color = "Classe do Motor"
) +
theme_minimal(base_size = 12) +
theme(
legend.position = "bottom",
plot.title = element_text(face = "bold", size = 13)
)Figura 2: Correlação entre potência (HP) e peso do veículo (toneladas). A cor representa a classe do motor. Observe a relação linear positiva: motores mais potentes tendem a ser mais pesados.
JAMES, G.; WITTEN, D.; HASTIE, T.; TIBSHIRANI, R. An Introduction to Statistical Learning with Applications in R. 2. ed. Springer, 2021.
HASTIE, T.; TIBSHIRANI, R.; FRIEDMAN, J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. 2. ed. Springer, 2009.
WICKHAM, H.; GROLEMUND, G. R for Data Science. 2. ed. O’Reilly Media, 2023.
GOODFELLOW, I.; BENGIO, Y.; COURVILLE, A. Deep Learning. MIT Press, 2016.
WILKE, C. O. Fundamentals of Data Visualization: A Primer on Making Informative and Compelling Figures. O’Reilly Media, 2019.