| Bloco | Tempo (min) | O que | Na prática |
|---|---|---|---|
| 1 | 45 | Importação, objetos e inspeção | Criar vetores, explorar a tabela iris e usar head(), str() e summary(). |
| 2 | 45 | Manipulação e limpeza | Tratar dados ausentes com na.omit() e filtrar linhas usando colchetes [ , ]. |
| Intervalo | 15 | Pausa para o café | Não se aplica |
| 3 | 45 | Normalidade e regressão linear simples | Fazer histograma e Q-Q plot, rodar shapiro.test() e ajustar uma reta com lm(). |
| 4 | 45 | Comparação de médias (teste t e ANOVA) | Usar t.test() para 2 grupos, ajustar a ANOVA com aov() para 3+ grupos e rodar o teste de Tukey. |
| Encerramento | 15 | Desafio | Resolução de um exercício prático para fixar o conteúdo. |
Básico da linguagem R para análises estatísticas
Última atualização: 2026-08-12.
Código fonte: https://github.com/ricoperdiz/2026_rbasico-estatistica.
Código R desta aula: https://github.com/ricoperdiz/2026_rbasico-estatistica/blob/main/index.R
Sobre a aula
- Público-alvo: Pessoas que estão dando os primeiros passos no R.
- Duração: 3 horas e 30 minutos (com uma pausa de 15 min para o café).
- O que vamos ver: Importação, manipulação, teste de normalidade, regressão linear simples, teste t de Student e ANOVA com teste de Tukey.
- Ferramentas: Vamos usar apenas o pacote base do R e o conjunto de dados
iris, que já vem instalado no R. Não precisa instalar nenhum pacote extra.
Apresentação
Boas-vindas! Nesta aula, vamos passar pelas etapas principais para performar uma análise estatística simples no R. A ideia é seguir um caminho lógico para você entender como a linguagem funciona no dia a dia:
- Importação e inspeção inicial dos dados;
- Manipulação e limpeza da tabela;
- Checagem da premissa de normalidade dos dados;
- Regressão linear simples (relação entre duas variáveis numéricas);
- Comparação de médias entre grupos:
- Teste t de Student (para comparar 2 grupos);
- Análise de variância (ANOVA) e teste de Tukey (para comparar 3 ou mais grupos).
Plano de aula
Por que R?
Instalação do R e RStudio
Caso você possua um computador, siga as instruções presentes na página abaixo:
Bloco 1: Importação e inspeção de dados (45 min)
Para guardar qualquer informação na memória do R, usamos o operador de atribuição <-.
O próprio R já vem com várias tabelas prontas para estudo. Hoje vamos usar a clássica iris, que traz medidas das pétalas e sépalas de três espécies de plantas.
Olhando as 6 primeiras linhas:
Olhando as 6 últimas linhas:
Checando a estrutura das colunas e os tipos de dados:
Gerando um resumo estatístico rápido:
.csv?
Se você tiver uma planilha no seu computador em formato CSV, pode importar os dados usando a função read.csv():
meus_dados <- read.csv("caminho/para/meu_arquivo.csv", header = TRUE, sep = ",", dec = ".")Bloco 2: Manipulação e limpeza de dados (45 min)
Antes de rodar qualquer teste, precisamos garantir que a tabela está pronta. No R, a forma mais tradicional de filtrar informações é usando colchetes logo após o nome do objeto: dados[linhas, colunas].
Entendendo a lógica: [linhas, colunas]
Para fixar a regra de que a primeira posição escolhe a linha e a segunda escolhe a coluna:
Selecionando várias linhas ou colunas juntas
Como usar vetores c() ou intervalos com : dentro dos colchetes:
Filtrando com condições lógicas (O uso real no dia a dia)
Aplicando filtros baseados no conteúdo dos dados (operadores ==, >, %in%):
Removendo valores ausentes (NA)
Podemos checar os valores ausentes e removê-los de diversas formas. A mais comumente utilizada é utilizando a função is.na() em cima de um vetor. E utilizar o produto desta função para filtrar linhas.
Em casos mais severos, podemos simplesmente remover todas as linhas que apresentarem dados ausentes. Isto é uma ação extrema e recomenda-se cautela quanto à utilização desta via:
Filtrando linhas e criando novas variáveis
☕ INTERVALO (15 minutos)
Bloco 3: Normalidade e regressão linear simples (45 min)
1. Checando a normalidade dos dados
A maioria dos testes estatísticos clássicos (paramétricos) exige que a nossa variável contínua siga uma distribuição normal. A gente costuma avaliar isso olhando gráficos e rodando o teste de Shapiro-Wilk.
E agora dividindo a tela para ver dois gráficos lado a lado:
Voltando a tela ao normal:
2. Regressão linear simples
Usamos a regressão linear quando queremos entender se uma variável contínua (\(X\)) consegue prever ou explicar o comportamento de outra variável contínua (\(Y\)).
Aqui, vamos testar se o comprimento da sépala (\(X\)) explica o comprimento da pétala (\(Y\)):
\[Y = \beta_0 + \beta_1 X + \epsilon\]
Bloco 4: Comparação de médias (teste t e ANOVA) (45 min)
A lógica da fórmula no R continua sendo sempre Y ~ X, onde o \(Y\) é a variável numérica que você quer medir e o \(X\) é o grupo que você quer comparar.
1. Comparando 2 grupos: teste t de Student
Se você tem apenas dois grupos e quer saber se a média de um é diferente da média do outro, use o teste t.
Rodando o teste t com a função t.test():
2. Comparando 3 ou mais grupos: análise de variância (ANOVA)
Se a sua comparação envolve três ou mais grupos, o teste t já não serve. Nesses casos, usamos a ANOVA.
Ajustando o modelo de ANOVA com a função aov():
Lendo a tabela da ANOVA:
3. Descobrindo onde está a diferença: teste de Tukey (TukeyHSD)
A ANOVA só nos diz se existe alguma diferença entre os grupos, mas não fala quais grupos são diferentes entre si. Para descobrir isso, rodamos o teste de Tukey logo em seguida.
Desafio prático (15 min)
Sua vez: Será que a largura da sépala (
Sepal.Width) muda de acordo com a espécie da flor no datasetiris?
- Ajuste uma ANOVA usando a função
aov();
- Veja se a diferença é significativa com
summary();
- Se for significativa, rode o teste de Tukey com
TukeyHSD()para ver quais espécies diferem.
Veja a solução do desafio abaixo
Mostre o código
# Ajustando o modelo de ANOVA
modelo_desafio <- aov(Sepal.Width ~ Species, data = dados)
# Verificando se ha diferença significativa entre os grupos
summary(modelo_desafio)
# Interpretação: Como o valor de p ('Pr(>F)') é muito pequeno (ou seja, muito menor que 0,05), existe sim uma diferenca significativa
# Rodando o teste de Tukey
tukey_desafio <- TukeyHSD(modelo_desafio)
tukey_desafio # diferença estatisticamente significativa na largura média da sépala entre as espécies.
# Visualizando graficamente
plot(tukey_desafio, las = 1, col = "darkblue")