Este relatório apresenta uma análise de dados utilizando R Markdown, demonstrando manipulação de dados, visualizações interativas, equações matemáticas e referências bibliográficas relevantes para ciência de dados.
Nesta seção, vamos trabalhar com o conjunto de dados
mtcars, que contém informações sobre 32 modelos de
automóveis extraídos da revista Motor Trend de 1974.
# Carregando o conjunto de dados mtcars
dados <- mtcars
# Visualizando as primeiras linhas
head(dados)## 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
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
## 'data.frame': 32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp: num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec: num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear: num 4 4 4 3 3 3 3 4 4 4 ...
## $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
## mpg cyl disp hp
## Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
## 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
## Median :19.20 Median :6.000 Median :196.3 Median :123.0
## Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
## 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
## Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
## drat wt qsec vs
## Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
## 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
## Median :3.695 Median :3.325 Median :17.71 Median :0.0000
## Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
## 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
## Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
## am gear carb
## Min. :0.0000 Min. :3.000 Min. :1.000
## 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
## Median :0.0000 Median :4.000 Median :2.000
## Mean :0.4062 Mean :3.688 Mean :2.812
## 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :1.0000 Max. :5.000 Max. :8.000
Explicação dos Resultados:
O conjunto de dados mtcars possui 32 observações e 11
variáveis, incluindo:
mpg: Milhas por galão (consumo de combustível)cyl: Número de cilindrosdisp: Deslocamento do motor (polegadas cúbicas)hp: Potência (cavalos)wt: Peso do veículo (1000 lbs)Agora vamos realizar diversas operações de manipulação nos dados:
# 1. Criando novas variáveis
dados_transformados <- dados %>%
mutate(
# Converter peso de 1000 lbs para kg
peso_kg = wt * 453.592,
# Classificar eficiência de combustível
eficiencia = case_when(
mpg >= 25 ~ "Alta",
mpg >= 20 ~ "Média",
TRUE ~ "Baixa"
),
# Potência por tonelada
potencia_peso = hp / wt,
# Nome do modelo (do rownames)
modelo = rownames(dados)
)
# Visualizando as novas variáveis
head(dados_transformados[, c("modelo", "mpg", "peso_kg", "eficiencia", "potencia_peso")])## modelo mpg peso_kg eficiencia potencia_peso
## Mazda RX4 Mazda RX4 21.0 1188.411 Média 41.98473
## Mazda RX4 Wag Mazda RX4 Wag 21.0 1304.077 Média 38.26087
## Datsun 710 Datsun 710 22.8 1052.333 Média 40.08621
## Hornet 4 Drive Hornet 4 Drive 21.4 1458.298 Média 34.21462
## Hornet Sportabout Hornet Sportabout 18.7 1560.356 Baixa 50.87209
## Valiant Valiant 18.1 1569.428 Baixa 30.34682
Explicação:
Criamos três novas variáveis:
# 2. Filtrando dados
# Carros com mais de 6 cilindros e consumo acima de 20 mpg
carros_eficientes <- dados_transformados %>%
filter(cyl > 6, mpg > 20) %>%
select(modelo, mpg, cyl, hp, wt)
print("Carros eficientes com mais de 6 cilindros:")## [1] "Carros eficientes com mais de 6 cilindros:"
## [1] modelo mpg cyl hp wt
## <0 linhas> (ou row.names de comprimento 0)
Explicação:
Filtramos os veículos que possuem mais de 6 cilindros e consumo superior a 20 milhas por galão, identificando modelos que combinam potência com eficiência.
# 3. Ordenação dos dados
# Top 10 carros mais potentes
top_potentes <- dados_transformados %>%
arrange(desc(hp)) %>%
select(modelo, hp, mpg, cyl) %>%
head(10)
print("Top 10 carros mais potentes:")## [1] "Top 10 carros mais potentes:"
## modelo hp mpg cyl
## Maserati Bora Maserati Bora 335 15.0 8
## Ford Pantera L Ford Pantera L 264 15.8 8
## Duster 360 Duster 360 245 14.3 8
## Camaro Z28 Camaro Z28 245 13.3 8
## Chrysler Imperial Chrysler Imperial 230 14.7 8
## Lincoln Continental Lincoln Continental 215 10.4 8
## Cadillac Fleetwood Cadillac Fleetwood 205 10.4 8
## Merc 450SE Merc 450SE 180 16.4 8
## Merc 450SL Merc 450SL 180 17.3 8
## Merc 450SLC Merc 450SLC 180 15.2 8
Explicação:
Ordenamos os veículos por potência (hp) em ordem decrescente para identificar os 10 modelos mais potentes da amostra.
# 4. Agregação por grupos
resumo_cilindros <- dados_transformados %>%
group_by(cyl) %>%
summarise(
n_carros = n(),
mpg_medio = mean(mpg),
hp_media = mean(hp),
peso_medio = mean(peso_kg)
) %>%
arrange(desc(cyl))
print("Resumo por número de cilindros:")## [1] "Resumo por número de cilindros:"
## # A tibble: 3 × 5
## cyl n_carros mpg_medio hp_media peso_medio
## <dbl> <int> <dbl> <dbl> <dbl>
## 1 8 14 15.1 209. 1814.
## 2 6 7 19.7 122. 1414.
## 3 4 11 26.7 82.6 1037.
Explicação:
Agrupamos os dados por número de cilindros e calculamos estatísticas descritivas para cada grupo, revelando que:
# Gráfico de dispersão: Consumo vs Potência
ggplot(dados_transformados, aes(x = hp, y = mpg, color = factor(cyl), size = wt)) +
geom_point(alpha = 0.7) +
labs(
title = "Relação entre Potência e Consumo de Combustível",
x = "Potência (hp)",
y = "Consumo (mpg)",
color = "Cilindros",
size = "Peso (1000 lbs)"
) +
theme_minimal() +
theme(legend.position = "right")Explicação do Gráfico:
O gráfico demonstra uma relação inversa entre potência e eficiência de combustível. Veículos mais potentes (maior hp) tendem a ter menor consumo em milhas por galão. A cor indica o número de cilindros e o tamanho dos pontos representa o peso do veículo.
Utilizando o pacote DT, criamos uma tabela interativa com funcionalidades de busca, ordenação e paginação:
# Preparando dados para tabela interativa
dados_tabela <- dados_transformados %>%
select(modelo, mpg, cyl, hp, peso_kg, eficiencia, potencia_peso) %>%
mutate(
mpg = round(mpg, 1),
peso_kg = round(peso_kg, 1),
potencia_peso = round(potencia_peso, 2)
)
# Criando tabela interativa
datatable(
dados_tabela,
colnames = c(
"Modelo", "Consumo (mpg)", "Cilindros", "Potência (hp)",
"Peso (kg)", "Eficiência", "Potência/Peso"
),
caption = "Tabela 1: Dados Completos dos Veículos com Funcionalidades Interativas",
filter = "top",
options = list(
pageLength = 10,
lengthMenu = c(5, 10, 15, 32),
searching = TRUE,
ordering = TRUE,
autoWidth = TRUE,
columnDefs = list(
list(className = 'dt-center', targets = 1:6)
)
),
rownames = FALSE
) %>%
formatStyle(
'eficiencia',
backgroundColor = styleEqual(
c('Alta', 'Média', 'Baixa'),
c('#90EE90', '#FFD700', '#FFB6C6')
)
)A tabela acima permite:
\[Y = \beta_0 + \beta_1X_1 + \beta_2X_2 + \cdots + \beta_pX_p + \epsilon\]
Significado: A regressão linear múltipla modela a relação entre uma variável dependente \(Y\) e múltiplas variáveis independentes \(X_1, X_2, \ldots, X_p\). Os coeficientes \(\beta_i\) representam o efeito de cada variável preditora, \(\beta_0\) é o intercepto e \(\epsilon\) é o termo de erro (James et al. 2013).
\[H(X) = -\sum_{i=1}^{n} P(x_i) \log_2 P(x_i)\]
Significado: A entropia de Shannon mede a incerteza ou quantidade de informação em uma variável aleatória \(X\). É fundamental em teoria da informação e amplamente utilizada em algoritmos de aprendizado de máquina, especialmente em árvores de decisão (Shannon 1948).
\[J(\theta) = -\frac{1}{m}\sum_{i=1}^{m}\left[y^{(i)}\log(h_\theta(x^{(i)})) + (1-y^{(i)})\log(1-h_\theta(x^{(i)}))\right]\]
Significado: Esta é a função de custo (log-loss) utilizada na regressão logística, onde \(h_\theta(x)\) é a hipótese (predição), \(y\) é o valor real, e \(m\) é o número de exemplos de treinamento. O objetivo é minimizar esta função para otimizar os parâmetros \(\theta\) (Ng 2012).
\[d(p,q) = \sqrt{\sum_{i=1}^{n}(q_i - p_i)^2} = \sqrt{(q_1-p_1)^2 + (q_2-p_2)^2 + \cdots + (q_n-p_n)^2}\]
Significado: A distância euclidiana calcula a distância em linha reta entre dois pontos \(p\) e \(q\) em um espaço n-dimensional. É amplamente utilizada em algoritmos de clustering (como K-means) e classificação (como K-NN) (Hastie, Tibshirani, and Friedman 2009).
\[P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}\]
Significado: O Teorema de Bayes descreve a probabilidade de um evento \(A\) ocorrer dado que \(B\) ocorreu, baseado no conhecimento prévio de \(P(A)\) (probabilidade a priori), \(P(B|A)\) (verossimilhança) e \(P(B)\) (evidência). É a base dos classificadores Naive Bayes e inferência bayesiana (Murphy 2012).
Descrição: Esta figura ilustra o fluxo de trabalho completo em ciência de dados, mostrando as etapas de coleta de dados, processamento de dados, exploração de dados, comunicação de resultados e feedback.
Descrição: Esta figura representa pipeline de machine learning.
As referências estão listadas ao final do documento no formato BibTeX
padrão. Para citar no texto, utilizamos a sintaxe [@chave].
Por exemplo, segundo Wickham and Grolemund
(2016), a visualização de dados é fundamental para análise
exploratória.