1 1. Carregamento e manipulação de dados

1.1 1.1 Objetivo

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.

1.2 1.2 Carregamento e inspeção inicial

# 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.

1.3 1.3 Verificação de valores ausentes e duplicatas

# 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.

1.4 1.4 Filtragem de observações

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?

1.5 1.5 Ordenação dos dados

# 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.

1.6 1.6 Criação de novas variáveis e resumo por espécie

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.

1.7 1.7 Visualização exploratória

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.

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.

2 2. Tabela interativa com o pacote DT

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.

3 3. Cinco equações em LaTeX e seus significados

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.

3.1 3.1 Regressão linear múltipla

\[ \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.

3.2 3.2 Função de perda quadrática (erro quadrático médio)

\[ \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.

3.3 3.3 Regressão logística

\[ 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.

3.4 3.4 Teorema de Bayes

\[ 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.

3.5 3.5 Gradiente descendente

\[ \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.

4 4. Figuras relacionadas à ciência de dados

As duas figuras são geradas pelo próprio R durante a renderização, evitando dependência de arquivos de imagem externos.

4.1 4.1 Relação entre medidas das pétalas

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.

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.

4.2 4.2 Distribuição de uma variável numérica

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.

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).

5 5. Referências bibliográficas

As referências abaixo documentam as ferramentas utilizadas e conceitos matemáticos/estatísticos apresentados. Acesso em: 10 out. 2026.

  1. 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.

  2. 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/.

  3. 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.

  4. 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/.

  5. 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.


6 Observações para executar o relatório

  1. Salve este arquivo com a extensão .Rmd, por exemplo relatorio_ciencia_dados.Rmd.

  2. Abra-o no RStudio.

  3. Instale os pacotes necessários, se ainda não estiverem instalados:

    install.packages(c("rmarkdown", "knitr", "DT"))
  4. 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.

  5. 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.