Neste item, será utilizado o conjunto de dados iris,
disponibilizado por padrão no R. Ele contém 150 observações de flores de
três espécies (setosa, versicolor e
virginica) e cinco variáveis: quatro medidas numéricas das
flores e uma variável categórica (Species). Por ser pequeno
e vir instalado com o R, o conjunto é adequado para demonstrar operações
básicas sem baixar arquivos externos.
As medidas numéricas são: comprimento e largura da sépala
(Sepal.Length, Sepal.Width) e comprimento e
largura da pétala (Petal.Length, Petal.Width),
em centímetros.
# Carrega o conjunto de dados incluído na instalação do R
data("iris")
# Cria uma cópia para deixar explícito que trabalharemos sobre ela
dados <- iris
# Exibe as primeiras seis linhas
head(dados)
# Verifica dimensões, nomes das colunas e tipos das variáveis
dim(dados)
## [1] 150 5
str(dados)
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
summary(dados)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
Como interpretar os resultados:
head(dados) apresenta as seis primeiras observações,
permitindo conferir a estrutura dos registros.dim(dados) retorna duas dimensões: 150 linhas e 5
colunas.str(dados) mostra os tipos das variáveis. As quatro
medidas são numéricas e Species é um fator (variável
categórica).summary(dados) resume as variáveis numéricas com
mínimo, quartis, mediana, média e máximo; para Species,
mostra a frequência de cada categoria.# Conta valores ausentes em cada coluna
colSums(is.na(dados))
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 0 0 0 0 0
# Conta linhas completamente duplicadas
sum(duplicated(dados))
## [1] 1
Interpretação: is.na() identifica
valores ausentes e colSums() soma esses casos por coluna.
duplicated() identifica linhas repetidas em relação às
anteriores. No conjunto iris original, não há valores
ausentes; o número de duplicatas completas pode ser conferido
diretamente pelo resultado exibido.
A seguir, serão selecionadas as flores da espécie virginica
cujo comprimento da pétala seja maior que 6 cm. O operador
& exige que as duas condições sejam verdadeiras ao
mesmo tempo.
virginica_grandes <- subset(
dados,
Species == "virginica" & Petal.Length > 6
)
# Mostra as observações selecionadas e quantas foram encontradas
head(virginica_grandes)
nrow(virginica_grandes)
## [1] 9
Interpretação: subset() mantém apenas
as linhas que satisfazem ambas as condições. nrow() informa
quantas flores passaram pelo filtro. Esse resultado pode ser usado para
responder a uma pergunta simples: quantas flores virginica da
amostra têm pétalas com mais de 6 cm?
# Ordena pelo comprimento da pétala, do maior para o menor
dados_ordenados <- dados[
order(dados$Petal.Length, decreasing = TRUE),
]
head(dados_ordenados, 10)
Interpretação: order() retorna a ordem
dos índices que organizam Petal.Length. Com
decreasing = TRUE, os maiores valores aparecem primeiro. O
código mostra as dez primeiras linhas após a ordenação.
Será criada a variável Petal.Area, produto do
comprimento pela largura da pétala. Ela é apenas um indicador aproximado
de tamanho, não uma área botânica exata. Em seguida, calcularemos médias
por espécie.
dados <- transform(
dados,
Petal.Area = Petal.Length * Petal.Width,
Sepal.Ratio = Sepal.Length / Sepal.Width
)
# Média das medidas e do indicador derivado para cada espécie
resumo_especies <- aggregate(
cbind(Sepal.Length, Sepal.Width, Petal.Length,
Petal.Width, Petal.Area, Sepal.Ratio) ~ Species,
data = dados,
FUN = mean
)
resumo_especies
Interpretação: transform() adiciona
duas colunas. Petal.Area combina as duas medidas da pétala;
Sepal.Ratio calcula a razão entre comprimento e largura da
sépala. aggregate() separa as observações por
Species e calcula a média de cada medida. Compare os
valores para observar como as características médias variam entre
espécies.
boxplot(
Petal.Length ~ Species,
data = dados,
xlab = "Espécie",
ylab = "Comprimento da pétala (cm)",
main = "Distribuição do comprimento da pétala",
col = c("#8ecae6", "#ffb703", "#90be6d")
)
Comprimento e largura da pétala por espécie.
Interpretação: o boxplot compara a distribuição do comprimento da pétala em cada espécie. A linha central representa a mediana; a caixa mostra o intervalo interquartil; e os “bigodes” indicam a extensão dos valores segundo a regra padrão do gráfico. A separação entre as distribuições sugere que essa medida ajuda a distinguir espécies, mas não deve ser interpretada isoladamente como prova de classificação perfeita.
O pacote DT integra tabelas HTML interativas ao R
Markdown. A tabela abaixo permite ordenar colunas, pesquisar termos e
navegar por páginas. Se necessário, instale o pacote uma vez no console
com install.packages("DT").
# Descomente a linha abaixo se o pacote ainda não estiver instalado:
# install.packages("DT")
library(DT)
datatable(
dados,
rownames = FALSE,
filter = "top",
extensions = "Buttons",
options = list(
pageLength = 10,
lengthMenu = c(5, 10, 25, 50),
searching = TRUE,
ordering = TRUE,
dom = "Bfrtip",
buttons = c("copy", "csv")
),
caption = "Conjunto iris — tabela interativa"
)
Como usar: clique nos cabeçalhos para ordenar; digite nos campos de filtro para restringir os resultados; utilize a caixa de busca e os controles de paginação. Os botões de cópia e exportação CSV dependem da extensão Buttons incluída na configuração.
As equações a seguir representam conceitos comuns em estatística,
aprendizado de máquina e avaliação de modelos. Em R Markdown, expressões
matemáticas podem ser escritas entre $...$ no texto ou
$$...$$ em bloco.
\[ \hat{y}_i = \hat{\beta}_0 + \sum_{j=1}^{p}\hat{\beta}_j x_{ij} \]
Significado: estima uma variável de resposta \(\hat{y}_i\) usando uma combinação linear de \(p\) variáveis explicativas. \(\hat{\beta}_0\) é o intercepto, \(\hat{\beta}_j\) são os coeficientes estimados e \(x_{ij}\) é o valor da variável \(j\) na observação \(i\). Os coeficientes são normalmente estimados minimizando a soma dos erros quadráticos.
\[ \operatorname{MSE}(\theta)= \frac{1}{n}\sum_{i=1}^{n} \left(y_i-f_\theta(\mathbf{x}_i)\right)^2 \]
Significado: mede a média dos quadrados das diferenças entre os valores reais \(y_i\) e as previsões \(f_\theta(\mathbf{x}_i)\). Valores menores indicam previsões mais próximas dos dados observados, embora a métrica penalize erros grandes de forma acentuada e dependa da escala da variável-alvo.
\[ P(Y_i=1\mid\mathbf{x}_i)= \frac{1}{1+\exp\left[-\left(\beta_0+ \sum_{j=1}^{p}\beta_j x_{ij}\right)\right]} \]
Significado: calcula a probabilidade estimada de uma observação pertencer à classe \(1\), dadas as características \(\mathbf{x}_i\). A função logística transforma qualquer valor real em uma probabilidade entre 0 e 1. Embora o lado direito seja linear nos preditores antes da transformação, a probabilidade resultante não é uma função linear.
\[ P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B)},\qquad P(B)>0 \]
Significado: atualiza a probabilidade de uma hipótese \(A\) após observar evidência \(B\). \(P(A)\) é a probabilidade a priori, \(P(B\mid A)\) é a verossimilhança e \(P(A\mid B)\) é a probabilidade a posteriori. É uma base conceitual para inferência bayesiana e para classificadores como o Naive Bayes.
\[ \boldsymbol{\theta}_{t+1} = \boldsymbol{\theta}_{t} -\eta\,\nabla_{\boldsymbol{\theta}} J(\boldsymbol{\theta}_{t}) \]
Significado: atualiza os parâmetros \(\boldsymbol{\theta}\) de um modelo movendo-os na direção oposta ao gradiente da função de custo \(J\). A taxa de aprendizagem \(\eta\) controla o tamanho do passo. Uma taxa muito alta pode dificultar a convergência; uma taxa muito baixa pode tornar o treinamento lento. A regra é amplamente usada na otimização de modelos de aprendizado de máquina.
As duas figuras são geradas pelo próprio R durante a renderização, evitando dependência de arquivos de imagem externos.
cores <- c(
setosa = "#2878B5",
versicolor = "#E07A1F",
virginica = "#3A923A"
)
plot(
dados$Petal.Length, dados$Petal.Width,
col = cores[as.character(dados$Species)],
pch = 19,
xlab = "Comprimento da pétala (cm)",
ylab = "Largura da pétala (cm)",
main = "Medidas das pétalas por espécie"
)
legend(
"topleft",
legend = names(cores),
col = cores,
pch = 19,
title = "Espécie",
bty = "n"
)
Relação entre comprimento e largura da pétala, com cores por espécie.
Interpretação: o gráfico de dispersão mostra a associação entre comprimento e largura da pétala. As cores representam as espécies. Agrupamentos visíveis podem indicar que as medidas ajudam a diferenciar as categorias; ainda assim, uma avaliação de classificação exigiria treinar e validar um modelo.
hist(
dados$Sepal.Length,
breaks = 12,
col = "#8ecae6",
border = "white",
xlab = "Comprimento da sépala (cm)",
ylab = "Frequência",
main = "Distribuição do comprimento da sépala"
)
Distribuição do comprimento da sépala no conjunto iris.
Interpretação: o histograma agrupa os valores em
intervalos e mostra quantas observações pertencem a cada intervalo. Ele
ajuda a examinar concentração, dispersão, assimetria e possíveis valores
extremos. A aparência depende do número de intervalos escolhido
(breaks).
As referências abaixo documentam as ferramentas utilizadas e conceitos matemáticos/estatísticos apresentados. Acesso em: 10 out. 2026.
R CORE TEAM. R: A Language and Environment for Statistical Computing. Vienna: R Foundation for Statistical Computing. Disponível em: https://www.r-project.org/. Acesso em: 10 out. 2026.
XIE, Yihui; ALLAIRE, J. J.; GROLEMUND, Garrett. R Markdown: The Definitive Guide. Boca Raton: Chapman and Hall/CRC, 2019. Disponível em: https://bookdown.org/yihui/rmarkdown/.
XIE, Yihui; DENG, Yihui. DT: A Wrapper of the JavaScript Library ‘DataTables’. Documentação do pacote R. Disponível em: https://rstudio.github.io/DT/. Acesso em: 10 out. 2026.
JAMES, Gareth; WITTEN, Daniela; HASTIE, Trevor; TIBSHIRANI, Robert; TAYLOR, Jonathan. An Introduction to Statistical Learning: with Applications in R. 2. ed. New York: Springer, 2021. Disponível em: https://www.statlearning.com/.
BISHOP, Christopher M. Pattern Recognition and Machine Learning. New York: Springer, 2006. Disponível em: https://link.springer.com/book/10.1007/978-0-387-45528-0.
Salve este arquivo com a extensão .Rmd, por exemplo
relatorio_ciencia_dados.Rmd.
Abra-o no RStudio.
Instale os pacotes necessários, se ainda não estiverem instalados:
install.packages(c("rmarkdown", "knitr", "DT"))Para gerar o relatório, clique em Knit e selecione Knit to HTML. O arquivo HTML gerado conterá o sumário, as seções, a tabela interativa e os gráficos.
A tabela DT precisa de saída HTML para manter a
interatividade. Em PDF, os controles de busca e paginação não funcionam
como no HTML.