Básico da linguagem R para análises estatísticas

Autor
Afiliação

R. O. Perdiz

Centro de Estudos da Biodiversidade, Universidade Federal de Roraima [2025–2027]

Data de Publicação

11 ago 2026

NotaInformes

Ú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:

  1. Importação e inspeção inicial dos dados;
  2. Manipulação e limpeza da tabela;
  3. Checagem da premissa de normalidade dos dados;
  4. Regressão linear simples (relação entre duas variáveis numéricas);
  5. 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

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.

Por que R?

View slides in full screen


Instalação do R e RStudio

Caso você possua um computador, siga as instruções presentes na página abaixo:

Fonte: https://intror.netlify.app/caso-voc%C3%AA-possua-um-computador.html#caso-voc%C3%AA-possua-um-computador


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:

DicaE se eu quiser abrir meu próprio arquivo .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 dataset iris?

  1. Ajuste uma ANOVA usando a função aov();
  1. Veja se a diferença é significativa com summary();
  1. 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")

Referências úteis

Broman, Karl W., e Kara H. Woo. 2018. “Data Organization in Spreadsheets”. The American Statistician 72 (1): 2–10. https://doi.org/10.1080/00031305.2017.1375989.
Gotelli, Nicholas J., e Aaron M. Ellison. 2013. A Primer of Ecological Statistics, 2nd edition. 2º ed. Sinauer Associates.
Magnusson, William E., Guilherme Mourão, e Flávia Costa. 2005. Estatística sem matemática. a ligação entre as questões e a análise. 2º ed. Planta.
Zuur, Alain F., Elena N. Ieno, e Chris S. Elphick. 2010. “A protocol for data exploration to avoid common statistical problems”. Methods in Ecology and Evolution 1 (1): 3–14. https://doi.org/10.1111/j.2041-210X.2009.00001.x.