Foi utilizado o conjunto de dados mtcars, disponível no
próprio R, que contém 32 automóveis e 11 variáveis sobre consumo e
características dos veículos.
Os nomes dos carros foram transformados em uma coluna chamada
modelo. Também foram criadas as variáveis
km_l, convertendo o rendimento de milhas por galão para
quilômetros por litro, e transmissao, apresentando por
extenso os tipos automática e manual.
Em seguida, foram selecionados os carros com quatro cilindros e ordenados pelo rendimento, do mais econômico para o menos econômico.
data(mtcars)
# Copiar a base e colocar os nomes dos carros em uma coluna
carros <- mtcars
carros$modelo <- rownames(carros)
rownames(carros) <- NULL
# Converter o rendimento de milhas por galão para km/l
carros$km_l <- carros$mpg * 0.425144
# Criar uma coluna com o tipo de transmissão
carros$transmissao <- ifelse(
carros$am == 0,
"Automática",
"Manual"
)
# Filtrar carros com quatro cilindros
carros_4cil <- carros[carros$cyl == 4, ]
# Ordenar do mais econômico para o menos econômico
carros_4cil <- carros_4cil[
order(carros_4cil$km_l, decreasing = TRUE),
]
# Mostrar as colunas de interesse
carros_4cil[, c("modelo", "cyl", "hp", "km_l", "transmissao")]
## modelo cyl hp km_l transmissao
## 20 Toyota Corolla 4 65 14.412382 Manual
## 18 Fiat 128 4 66 13.774666 Manual
## 19 Honda Civic 4 52 12.924378 Manual
## 28 Lotus Europa 4 113 12.924378 Manual
## 26 Fiat X1-9 4 66 11.606431 Manual
## 27 Porsche 914-2 4 91 11.053744 Manual
## 8 Merc 240D 4 62 10.373514 Automática
## 3 Datsun 710 4 93 9.693283 Manual
## 9 Merc 230 4 95 9.693283 Automática
## 21 Toyota Corona 4 97 9.140596 Automática
## 32 Volvo 142E 4 109 9.098082 Manual
# Capturar os resultados para utilizar no texto
n_total <- nrow(carros)
n_filtrados <- nrow(carros_4cil)
carro_maior <- carros_4cil[which.max(carros_4cil$km_l), ]
carro_menor <- carros_4cil[which.min(carros_4cil$km_l), ]
# Calcular as medianas para a interpretação do boxplot
medianas_cil <- tapply(carros$km_l, carros$cyl, median)
# Preparar um resumo dos grupos e seus resultados
resumo_medianas <- paste(
paste0(
names(medianas_cil),
" cilindros: ",
formatC(
medianas_cil,
format = "f",
digits = 2,
decimal.mark = ","
),
" km/l"
),
collapse = "; "
)
Após a filtragem, foram mantidos 11 dos 32 automóveis. Entre os veículos selecionados, o Toyota Corolla apresentou o maior rendimento, com aproximadamente 14,41 km/l, enquanto o Volvo 142E apresentou o menor, com aproximadamente 9,10 km/l.
A ordenação facilita a comparação dos veículos, enquanto a conversão para km/l e a identificação dos tipos de transmissão tornam os resultados mais fáceis de interpretar.
A tabela apresenta os carros com quatro cilindros. É possível buscar um modelo, clicar nos títulos das colunas para ordenar os valores e navegar entre as páginas.
library(DT)
# Selecionar as colunas que serão exibidas
dados_tabela <- carros_4cil[
, c("modelo", "cyl", "hp", "km_l", "transmissao")
]
# Criar a tabela interativa
tabela <- datatable(
dados_tabela,
rownames = FALSE,
colnames = c(
"Modelo", "Cilindros", "Potência (hp)",
"Rendimento (km/l)", "Transmissão"
),
options = list(
pageLength = 5,
lengthMenu = c(5, 10, 20),
searching = TRUE,
ordering = TRUE,
paging = TRUE,
order = list()
)
)
# Exibir o rendimento com duas casas decimais
formatRound(tabela, columns = "km_l", digits = 2)
\[ y_i = \beta_0 + \beta_1 x_{i1} + \beta_2 x_{i2} + \cdots + \beta_p x_{ip} + \varepsilon_i \]
A regressão linear múltipla representa uma variável resposta a partir de várias variáveis explicativas.
No conjunto mtcars, esse modelo poderia representar o
rendimento em km/l a partir do peso, da potência e do número de
cilindros.
\[ \hat{\boldsymbol{\beta}} = \underset{\boldsymbol{\beta}}{\operatorname{arg\,min}} \sum_{i=1}^{n} \left( y_i - \beta_0 - \sum_{j=1}^{p}\beta_j x_{ij} \right)^2 \]
O método dos mínimos quadrados encontra os coeficientes que minimizam a soma dos quadrados das diferenças entre os valores observados e os valores previstos pelo modelo.
No exemplo dos automóveis, o método ajustaria os coeficientes para reduzir as diferenças entre o rendimento real e o previsto.
\[ \operatorname{RMSE} = \sqrt{ \frac{1}{n} \sum_{i=1}^{n} \left(y_i - \hat{y}_i\right)^2 } \]
A RMSE mede a magnitude dos erros de previsão de um modelo. Quanto menor o valor, menores são os erros segundo essa medida, quando os modelos são avaliados nas mesmas observações.
Se a variável prevista for o rendimento em km/l, a RMSE também será expressa em km/l. O uso do quadrado dá maior peso aos erros grandes.
\[ r_{xy} = \frac{ \sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y}) }{ \sqrt{ \left[\sum_{i=1}^{n}(x_i-\bar{x})^2\right] \left[\sum_{i=1}^{n}(y_i-\bar{y})^2\right] } } \]
O coeficiente de Pearson mede a direção e a intensidade da associação linear entre duas variáveis quantitativas.
Valores próximos de \(1\) indicam associação linear positiva; próximos de \(-1\), associação linear negativa; e próximos de zero, associação linear fraca ou ausente.
No mtcars, podemos investigar a associação entre peso e
rendimento. A correlação, por si só, não demonstra uma relação de causa
e efeito.
\[ f(x) = \frac{1}{\sigma\sqrt{2\pi}} \exp\left[ -\frac{(x-\mu)^2}{2\sigma^2} \right], \qquad \sigma > 0 \]
Essa função descreve a densidade de uma distribuição normal, que apresenta uma curva simétrica em formato de sino.
As probabilidades correspondem às áreas sob a curva em determinados
intervalos. Essa distribuição é utilizada em diversos métodos
estatísticos, mas sua apresentação não significa que as variáveis do
mtcars necessariamente tenham distribuição normal.
O gráfico de dispersão apresenta a relação entre o peso dos carros e seu rendimento em km/l. Cada ponto representa um automóvel.
plot(
x = carros$wt,
y = carros$km_l,
main = "Peso e rendimento dos automóveis",
xlab = "Peso (milhares de libras)",
ylab = "Rendimento (km/l)",
pch = 19,
col = "steelblue"
)
Relação entre peso e rendimento dos automóveis.
Observa-se uma tendência de menor rendimento nos carros mais pesados. Isso indica uma associação negativa entre essas variáveis na base analisada, sem estabelecer, por si só, uma relação de causa e efeito.
O boxplot compara a distribuição do rendimento entre os grupos de carros com 4, 6, 8 cilindros.
boxplot(
km_l ~ factor(cyl),
data = carros,
main = "Rendimento por número de cilindros",
xlab = "Número de cilindros",
ylab = "Rendimento (km/l)",
col = c("lightblue", "lightgreen", "salmon")
)
Distribuição do rendimento por número de cilindros.
A linha dentro de cada caixa representa a mediana. A caixa apresenta os 50% centrais dos valores, entre o primeiro e o terceiro quartis. Pontos além dos limites dos bigodes, quando presentes, indicam possíveis valores atípicos pelo critério do boxplot.
As medianas de rendimento por grupo foram: 4 cilindros: 11,05 km/l; 6 cilindros: 8,38 km/l; 8 cilindros: 6,46 km/l. A comparação desses valores permite identificar quais grupos apresentam maior rendimento mediano na base analisada.