EDA, reprodutibilidade e literacia em IA

Encontro 1 · Análise de Dados Univariados · PPGBA/UFMS

Diogo B. Provete

21 de setembro de 2026

Bem-vindos

Análise de Dados Univariados — 45 h, cinco dias.

Quatro coisas que este curso vai tentar fazer com vocês:

  1. mostrar que o que vocês aprenderam como uma coleção de testes é um modelo só;
  2. dar critério para escolher a distribuição da resposta, em vez de transformar os dados até que fiquem normais;
  3. tornar o diagnóstico de modelo um hábito, não uma formalidade;
  4. deixar vocês capazes de ler um artigo com GLMM e saber se ele está certo.

O curso em uma frase

Praticamente tudo que você aprendeu como “teste estatístico” é um modelo linear com uma matriz de delineamento diferente.

A partir daí, o caminho é sempre relaxar uma premissa de cada vez:

Relaxamos Chegamos em
a distribuição da resposta GLM
a independência das observações GLMM
a certeza sobre qual modelo usar seleção de modelos
a certeza sobre os parâmetros inferência bayesiana

Como as aulas funcionam

Cada encontro abre com 20 minutos de productive failure:

  1. eu apresento uma pergunta e um conjunto de dados;
  2. vocês, em grupos de 3 ou 4, escrevem como analisariam — antes de eu ensinar o método;
  3. cada grupo apresenta em 1 minuto;
  4. só então eu mostro o método formal.

O objetivo não é acertar. É explicitar o que vocês já assumem sem perceber. Grupos são montados com formação quantitativa deliberadamente heterogênea.

Combinado

  • Perguntem durante, não no fim. Se uma coisa não fez sentido para você, não fez sentido para mais três pessoas na sala.
  • Erro de modelo em aula é material didático, não constrangimento.
  • O trabalho final usa os dados de vocês. Quanto mais cedo vocês os trouxerem para as práticas, melhor.
  • Tudo está em provetelab.org/analise-dados-univariados-2026-2.

Hoje

  1. Productive failure de abertura — 20 min
  2. O ciclo PPDAC — 30 min
  3. Os quatro princípios de Popovic et al. (2024) — 30 min
  4. Pergunta focada, HARKing e pré-registro — 30 min
  5. Intervalo
  6. Exploração de dados: o protocolo em oito passos — 90 min
  7. Fluxo reprodutível: projeto, Quarto, git — 45 min
  8. Uso saudável de LLMs em estatística — 60 min

1. Productive failure

O problema

Vocês têm contagens de anfíbios mortos por atropelamento em 52 sítios ao longo de uma rodovia em Portugal, com variáveis da paisagem em cada sítio: distância ao parque mais próximo, distância a áreas urbanas, cobertura de diferentes tipos de vegetação, densidade de estradas.

Pergunta: quais características da paisagem explicam a mortalidade de anfíbios na estrada?

Em grupos, por 10 minutos, escrevam:

  1. qual análise vocês fariam;
  2. que premissas ela assume;
  3. o que poderia dar errado.

Os dados

RK <- read.delim("../dados/RoadKills.txt")
dim(RK)
[1] 52 23
RK[1:4, c("TOT.N", "D.PARK", "OPEN.L", "L.WAT.C")]
  TOT.N   D.PARK OPEN.L L.WAT.C
1    22  250.214 22.684   0.583
2    14  741.179 24.657   1.419
3    65 1240.080 30.121   2.005
4    55 1739.885 50.277   1.924

Anfíbios atropelados na estrada IP2, sul de Portugal. Fonte primária: Ascensão & Mira (2005), ICOET 2005 — On the Road to Stewardship, p. 641. A reanálise que ficou conhecida está no cap. 16 de Zuur, Mira, Carvalho, Ieno, Saveliev, Smith & Walker (2009) (doi:10.1007/978-0-387-87458-6_16). Eles nos acompanham a semana inteira.

De onde vêm esses números

Cada ponto é o meio de um segmento de 500 m da IP2, entre Portalegre e Monforte: 52 segmentos, 26 km de estrada, descendo pelo limite sudoeste do Parque Natural da Serra de São Mamede. A cor e o tamanho são a contagem de anfíbios mortos.

Como esses números foram feitos

  • Um trecho de 26 km da IP2, distrito de Portalegre, sul de Portugal: tráfego moderado, cerca de 5 000 veículos por dia, cortando montado de sobreiro (Quercus suber) e azinheira (Q. rotundifolia), campo aberto e olivais.
  • Percorrido de carro, a cerca de 20 km/h, a cada duas semanas por dois anos — 54 percursos, entre 1995 e 1997.
  • 2 421 carcaças de 80 espécies não domésticas. Os anfíbios são a maior fatia: 1 362. Cada carcaça foi identificada e retirada da pista, para não ser contada de novo na quinzena seguinte.
  • A estrada dividida em segmentos de 500 m, e cada animal atribuído ao ponto médio do seu segmento. São os 52 segmentos do arquivo.

Dois anos de campo, quinzena após quinzena, condensados em 52 linhas e uma coluna chamada TOT.N. Vale lembrar disso na hora de reclamar do tamanho da amostra.

O que a coluna TOT.N não conta

Os próprios autores avisam que a contagem é enviesada para baixo: carcaças são comidas por outros animais, o clima e as características da pista atrapalham a detecção, e — textualmente — “non-daily surveys prevent the detection of all small-bodied animals like amphibians”, cujos corpos duram de um a três dias na faixa de rolamento.

A resposta não é “quantos anfíbios morreram”, é “quantos anfíbios mortos foram encontrados numa visita a cada 15 dias”. Toda a interpretação do modelo vive dentro dessa frase.

Há ainda uma lição de procedência. As duas fontes publicadas que descrevem este mesmo conjunto discordam: Ascensão & Mira (2005) dizem 26 km e ~5 000 veículos/dia; Zuur et al. (2009) dizem 27 km e < 10 000 veículos/dia. Os 52 segmentos de 500 m dão exatamente 26 km. Conferir a fonte primária não é preciosismo.

Duas coisas que o mapa já entrega

Um gradiente. A mortalidade cai com a distância ao parque natural da Serra de São Mamede (\(r = -0{,}75\)) — uma serra mais úmida e chuvosa que a planície em volta, ou seja, a variável é um proxy de umidade. Essa é a pergunta do Encontro 5, e o mapa mostra que ela é geográfica antes de ser estatística.

Um problema. Segmentos vizinhos distam 500 m: eles não são réplicas independentes. É o assunto do Encontro 7, e está embutido no desenho da coleta — nenhuma análise conserta isso depois.

Este mapa quase não existiu. O arquivo traz duas colunas X e Y em metros; o capítulo as chama de “UTM coordinates” e não diz o sistema, e os valores não batem com o fuso UTM de Portugal. São coordenadas do Datum Lisboa / Hayford-Gauss Militar, EPSG:20790 — descoberto por tentativa e conferido de três jeitos: o segmento 1 cai a 1,8 km de Portalegre, o 52 a 0,6 km de Monforte, e a distância de cada segmento ao limite do parque correlaciona 0,988 com a coluna D.PARK do próprio arquivo. Uma linha de metadado que ninguém escreveu custou isso tudo. É o Encontro 1 inteiro numa anedota.

Uma coisa que vocês já viram

Contagem. Só inteiros não negativos. Cauda longa à direita. E a variância cresce com a média: aqui a média é 25,9 e a variância é 589,3, quase 23 vezes maior. Guardem essa desproporção para o Encontro 6 — parte dela some quando as covariáveis entram no modelo, mas não toda.

Uma regressão linear comum é apropriada aqui? Guardem a resposta.

2. O ciclo PPDAC

O mapa da disciplina inteira

Wild, C.J. & Pfannkuch, M. 1999. International Statistical Review.

Onde cada etapa aparece no curso

Etapa A pergunta que ela responde Onde aparece no curso
Problema o que eu quero saber, em termos mensuráveis? hoje, e no item 1 do trabalho final
Plano que dados respondem isso, e como coletá-los? hoje (pré-registro); E7 (delineamento e dependência)
Dados o que eu de fato tenho, e em que estado? hoje (EDA em 8 passos)
Análise que modelo corresponde a esses dados e a essa pergunta? E2 a E9
Conclusão o que posso afirmar, e com que incerteza? E5 (escala da resposta), E9 (seleção)

Por que um ciclo e não uma lista

As setas pontilhadas são o ponto: a análise revela problemas nos dados, e a conclusão quase sempre reformula o problema. Isso é legítimo — o que não é legítimo é apagar o percurso e apresentar a última volta do ciclo como se tivesse sido a primeira.

Onde a maioria dos trabalhos quebra

Não é na Análise. É no Problema — a pergunta nunca foi escrita de forma que um parâmetro pudesse respondê-la — e no Plano — a estrutura de coleta não permite separar o efeito de interesse.

Nenhum modelo do Encontro 2 ao 9 conserta isso. É por isso que gastamos a primeira manhã aqui.

3. Quatro princípios

Popovic, G. et al. 2024. Four principles for improved statistical ecology. Methods in Ecology and Evolution 15:266–281.

Por que começar por aqui

Um levantamento honesto da literatura ecológica encontra os mesmos quatro problemas repetidamente. Eles não são de matemática — são de prática.

  1. Pergunta focada
  2. Modelagem da dependência
  3. Tamanhos de efeito
  4. Reprodutibilidade

Este curso inteiro é uma tentativa de instalar esses quatro hábitos.

Princípio 1 — Pergunta focada

Uma pergunta que a análise pode responder com um parâmetro.

Em vez de Escreva
“investigar a relação entre urbanização e anuros” “qual a mudança esperada na riqueza de anuros por 10 % de aumento em área impermeabilizada?”
“verificar se há efeito do tratamento” “qual a diferença média de massa entre tratamento e controle, e com que incerteza?”

A segunda coluna já determina o modelo. A primeira permite justificar qualquer coisa depois.

Princípio 2 — Modelar a dependência

Observações do mesmo transecto, da mesma poça, do mesmo indivíduo, do mesmo ano não são independentes.

Ignorar isso não é um detalhe técnico: inflaciona a confiança em efeitos que talvez não existam.

→ É o Encontro 7 inteiro.

Princípio 3 — Tamanhos de efeito

Um valor de p responde “consigo distinguir de zero?”.

A biologia quer saber quanto, em que direção e com que incerteza.

Coeficiente com unidade e intervalo, na escala da resposta. Sempre.

Princípio 4 — Reprodutibilidade

Código e dados disponíveis, ambiente declarado, análise que roda do zero em outra máquina.

Não é burocracia de revisor. É a única forma de você mesmo conseguir refazer a análise quando o revisor pedir uma alteração — dezoito meses depois.

→ Bloco 6 de hoje.

4. A pergunta vem antes

HARKing

Hypothesizing After the Results are Known — formular a hipótese depois de ver o resultado, e apresentá-la como se fosse anterior.

O problema não é olhar os dados. É apresentar como confirmatório o que foi exploratório.

Consequência estatística direta: o valor de p deixa de significar o que ele afirma significar.

p-hacking

Não é fraude deliberada, na maior parte das vezes. É a soma de decisões razoáveis tomadas uma de cada vez:

  • excluir aquele outlier estranho;
  • testar com e sem a covariável;
  • transformar a resposta se não der significativo;
  • parar de coletar quando p < 0,05;
  • analisar três respostas e reportar a que “funcionou”.

Cada passo é defensável isoladamente. Juntos, garantem um resultado significativo a partir de ruído.

Confirmatório × exploratório

Confirmatório Exploratório
Hipótese anterior aos dados emerge dos dados
Nº de modelos poucos, definidos a priori muitos
Valor de p interpretável descritivo
O que produz um teste uma hipótese para testar depois

As duas são ciência legítima. O que não é legítimo é trocar o rótulo.

Uma pergunta que dá para responder

Qual o efeito da quantidade de nitrogênio do solo na taxa de crescimento per capita de árvores adultas do gênero Pinus?

Antes de qualquer estatística, ela já traz a resposta (taxa de crescimento per capita), a preditora (nitrogênio no solo), a unidade (árvore adulta) e o grupo (Pinus).

E a hipótese que a sustenta diz o mecanismo:

O nitrogênio está presente em várias moléculas orgânicas envolvidas no processo de crescimento de plantas em geral. Logo, espero que quanto maior a quantidade de nitrogênio disponível no solo, maior seja a taxa de crescimento per capita de uma população de plantas do gênero Pinus.

Pergunta → hipótese (o mecanismo) → previsão (a direção). Sem o meio não há o que testar; há só uma correlação para comentar depois.

Atividade (10 min)

Uma pergunta de projeto de verdade:

Será que a poluição afeta os girinos?

Sozinhos (3 min). Reescrevam num papel, de modo que a pergunta diga: que poluente e medido como; que resposta e em que unidade; que espécie e que estágio; onde e quando.

Em duplas (4 min). Comparem as duas versões e cheguem a uma só.

Duas duplas compartilham (3 min).

Depois façam o mesmo com a pergunta do capítulo de vocês. Se ela não couber numa frase com resposta, preditora e unidade, o problema não é de redação — é que a análise ainda não tem alvo.

Pré-registro

Registrar pergunta, delineamento e plano de análise antes de coletar ou de analisar.

  • OSF e AsPredicted — gratuitos, poucos minutos;
  • não impede análise exploratória — apenas separa claramente as duas;
  • em ecologia observacional, registrar antes de olhar os dados já resolve a maior parte do problema.

Intervalo

15 minutos.

Na volta: o protocolo de exploração de dados, em oito passos.

5. Exploração de dados

Protocolo de Zuur, Ieno & Elphick (2010), Methods in Ecology and Evolution; apresentação dos resultados segundo Zuur & Ieno (2016).

Por que existe um protocolo

Sem protocolo, exploração vira caça ao resultado.

Com protocolo, é uma lista de verificação: oito perguntas, na mesma ordem, sempre — antes de ajustar qualquer modelo.

Explorar dados serve para detectar problemas, não para escolher a hipótese.

Os oito passos

  1. Há outliers na resposta e nas preditoras?
  2. A variância é homogênea?
  3. Qual a distribuição da resposta?
  4. Há excesso de zeros?
  5. Há colinearidade entre preditoras?
  6. Como é a relação entre resposta e preditoras?
  7. Há interações plausíveis?
  8. As observações são independentes?

Antes dos oito passos: olhe

# o anscombe vem em oito colunas: x1..x4 e y1..y4
quarteto <- data.frame(
  conjunto = rep(1:4, each = nrow(anscombe)),
  x = unlist(anscombe[, 1:4]),
  y = unlist(anscombe[, 5:8])
)

ggplot(quarteto, aes(x, y)) +
  geom_smooth(method = "lm", se = FALSE, colour = "#96661f", linewidth = .8) +
  geom_point(size = 2, colour = "#1c6e8c") +
  facet_wrap(~ conjunto, nrow = 1) +
  theme_minimal(base_size = 15)

Os quatro dão os mesmos números

Média de x, média de y, desvio-padrão, correlação (0,816) e reta de regressão (\(y = 3 + 0{,}5x\)): idênticos até a terceira casa decimal nos quatro conjuntos de Anscombe (1973).

Nenhuma estatística-resumo distingue os quatro. O gráfico distingue em um segundo. É por isso que o protocolo abaixo começa por olhar, e não por calcular.

O pacote quartets reúne este e outros conjuntos com a mesma moral — inclusive um quarteto causal, em que as quatro estruturas causais produzem números idênticos. Voltamos a ele no Encontro 5.

Passo 1 — Outliers

O gráfico de Cleveland é mais informativo que o boxplot: mostra cada observação contra a ordem no arquivo.

library(tidyverse)
dados <- read_delim("../dados/dados_com_outliers_e_faltantes.csv", delim = ";")

dados |>
  mutate(ordem = row_number()) |>
  ggplot(aes(x = Pontuacao, y = ordem, colour = Grupo)) +
  geom_point() +
  scale_colour_manual(values = c("#1c6e8c", "#96661f")) +
  labs(x = "Valor observado", y = "Ordem no arquivo") +
  theme_minimal(base_size = 15)

Outlier não é erro

Três perguntas, nesta ordem:

  1. É erro de digitação ou de medida? → corrija ou remova, e documente.
  2. É uma observação legítima e extrema? → mantenha, e escolha um modelo que a acomode.
  3. Está influenciando o ajuste desproporcionalmente? → é uma questão de alavancagem, não de exclusão (Encontro 2).

Remover observações porque incomodam o modelo é a forma mais comum de p-hacking em ecologia.

Passo 2 — Homogeneidade de variância

rikz <- read.table("../dados/RIKZ.txt", header = TRUE, row.names = 1) |>
  mutate(Beach = factor(Beach))

ggplot(rikz, aes(Beach, Richness)) +
  geom_boxplot(fill = "#1c6e8c", alpha = .45, outlier.shape = NA) +
  geom_jitter(width = .12, colour = "#144f64", size = 1.7) +
  theme_minimal(base_size = 15) +
  labs(x = "Praia", y = "Riqueza de espécies")

Passo 2 — quanto difere?

rikz |>
  group_by(Beach) |>
  summarise(n = n(), media = round(mean(Richness), 1),
            dp = round(sd(Richness), 2), .groups = "drop")
# A tibble: 9 × 4
  Beach     n media    dp
  <fct> <int> <dbl> <dbl>
1 1         5  11    1.22
2 2         5  12.2  5.36
3 3         5   3.4  1.82
4 4         5   2.4  1.34
5 5         5   7.4  8.53
6 6         5   4    1.87
7 7         5   2.2  1.3 
8 8         5   4    2.65
9 9         5   4.6  4.39

Olhem a coluna dp: vai de 1,22 na praia 1 a 8,53 na praia 5 — sete vezes. Cinco amostras em cada uma, o mesmo protocolo em todas. A dispersão não é constante entre praias, que é exatamente o que o modelo linear supõe que seja.

E repare de onde vem a heterogeneidade: não de uma preditora contínua, mas do agrupamento. Isso não é ruído a corrigir — é estrutura do delineamento, e é o Encontro 7.

Passo 3 — Distribuição da resposta

ggplot(RK, aes(TOT.N)) +
  geom_histogram(bins = 20, fill = "#1c6e8c", colour = "white", alpha = .85) +
  theme_minimal(base_size = 15) +
  labs(x = "Anfíbios mortos por sítio", y = "Frequência")

Contagem, assimétrica à direita, de 2 a 104 em 52 sítios. Média 25,9 e variância 589,3 — a variância é 22,7 vezes a média. Para uma Poisson elas seriam iguais; já dá para saber, aqui, que ela não vai servir (Encontro 6).

Atenção: o modelo linear não assume que a resposta é normal. Assume que o resíduo é. Voltaremos a isso no Encontro 2 — é um dos mal-entendidos mais caros da estatística aplicada.

Passo 4 — Excesso de zeros

ggplot(RK, aes(TOT.N)) +
  geom_bar(fill = "#1c6e8c") +
  labs(x = "Anfíbios mortos", y = "Nº de sítios") +
  theme_minimal(base_size = 15)

Quantos zeros são “demais” depende da distribuição assumida — é uma pergunta sobre o modelo, não sobre os dados. Encontro 6.

Passo 5 — Colinearidade

RK |>
  select(D.PARK, OPEN.L, L.WAT.C, MONT.S) |>
  cor(use = "complete.obs") |>
  round(2)
        D.PARK OPEN.L L.WAT.C MONT.S
D.PARK    1.00   0.27    0.28   0.07
OPEN.L    0.27   1.00    0.23  -0.15
L.WAT.C   0.28   0.23    1.00  -0.04
MONT.S    0.07  -0.15   -0.04   1.00

Preditoras muito correlacionadas não violam premissa nenhuma — elas tornam os coeficientes individualmente não identificáveis. O modelo prediz bem e interpreta mal.

Passos 6 e 7 — Relações e interações

ggplot(RK, aes(D.PARK, TOT.N)) +
  geom_point(colour = "#1c6e8c") +
  geom_smooth(method = "loess", se = FALSE, colour = "#144f64") +
  labs(x = "Distância ao parque (m)", y = "Anfíbios mortos") +
  theme_minimal(base_size = 15)

Decrescente e claramente não linear. Uma reta ajustada aqui erraria de forma sistemática, não aleatória.

Passo 8 — Independência

A pergunta que não se responde com gráfico: responde-se olhando o delineamento amostral.

  • As observações vêm dos mesmos sítios em datas diferentes?
  • Do mesmo indivíduo?
  • De sítios vizinhos no espaço?

Se a resposta for sim para alguma, você precisa de efeitos aleatórios (Encontro 7) ou de uma estrutura de correlação.

O que NÃO fazer na exploração

  • Testar normalidade com Shapiro–Wilk e decidir o modelo a partir disso.
  • Rodar todas as correlações e escolher as significativas.
  • Decidir a hipótese depois de ver os gráficos e apresentá-la como anterior.
  • Remover observações até o pressuposto “passar”.

6. Fluxo reprodutível

O problema concreto

Você submete. Volta em 14 meses com “refaça a Figura 3 excluindo os juvenis”.

E então: em qual das sete pastas está o script que gerou a Figura 3? Que versão dos dados ela usou? Por que o número na tabela não bate com o do texto?

Reprodutibilidade é, antes de tudo, um favor que você faz a si mesmo.

Your best collaborator is yourself six months from now, and your past self doesn’t answer emails.

O mesmo problema, em 2016

Dear past-Hadley: PLEASE COMMENT YOUR CODE BETTER. Love present-Hadley.

— Hadley Wickham (@hadleywickham, 7 de abril de 2016)

Quem escreveu boa parte do tidyverse também não entende o próprio código de seis meses atrás. A conclusão não é que ele seja desorganizado — é que ninguém consegue, e por isso o comentário não é firula.

Comente o porquê, não o quê. # filtra juvenis é redundante com o código; # juvenis fora: o protocolo de campo mudou em 2019 e a medida não é comparável é o que o seu eu de 2028 precisa.

Um projeto, um diretório

meu-projeto/
├── meu-projeto.Rproj
├── dados/
│   ├── brutos/          # nunca editados, nunca sobrescritos
│   └── processados/
├── scripts/
├── figuras/
└── relatorio.qmd

Regra que resolve metade dos problemas: dados brutos são somente-leitura. Toda limpeza acontece em código.

Caminhos

# Nunca:
read.csv("/Users/diogo/Documents/projeto-final-v3/dados.csv")

# Sempre:
library(here)
read_csv(here("dados", "brutos", "anuros.csv"))

here() resolve a partir da raiz do projeto. O script roda na sua máquina, na do orientando e no GitHub Actions.

Como o here() acha a raiz

Ao ser carregado, o here sobe a árvore de diretórios a partir de onde o R está e para no primeiro diretório que contenha uma âncora. As duas que importam na prática: um arquivo .Rproj e uma pasta .git. Esse diretório vira a raiz, e here("dados", "x.csv") monta o caminho a partir dele.

here::here()                       # qual raiz ele encontrou
here::here("dados", "anuros.csv")  # o caminho, montado na hora

O detalhe que morde: um .Rproj vazio não conta. O critério exige que o arquivo comece com Version:. Sem âncora válida, o here não avisa nada — ele simplesmente devolve o diretório de trabalho atual, e o script passa a funcionar só quando você o abre do lugar certo.

Se here::here() apontar para um lugar estranho, é isso. Crie o projeto do RStudio, ou declare a raiz à mão com here::i_am("scripts/analise.R").

setwd() faz o oposto: fixa no código um caminho que só existe no seu computador. É a única linha de um script que tem garantia de quebrar na máquina de outra pessoa.

Quarto

Texto, código e resultado no mesmo arquivo. O número do texto é o número que o código calculou.

A riqueza média foi de `r round(mean(dados$riqueza), 1)` espécies.

Nunca mais copiar e colar um resultado — e nunca mais esquecer de atualizar o texto quando o dado muda.

git, em três comandos

git add .
git commit -m "Adiciona diagnóstico do modelo Poisson"
git push

O que você ganha:

  • histórico de por que cada mudança foi feita;
  • liberdade para experimentar sem medo de quebrar o que funcionava;
  • colaboração sem analise_final_v2_REALFINAL.R.

Se estes três comandos não forem familiares, a aula 3 da minha disciplina de introdução ao R cobre git e GitHub do começo, incluindo a configuração inicial. Para os detalhes e para quando algo der errado, Happy Git with R.

FAIR

Dados e código devem ser:

  • Findable — com identificador persistente (DOI);
  • Accessible — em repositório público (Zenodo, Dryad, OSF);
  • Interoperable — em formato aberto (.csv, não .xlsx com macro);
  • Reusable — com licença e dicionário de variáveis.

Depositar dados aumenta citação e é exigido por um número crescente de periódicos.

7. LLMs em estatística

Cooper, N. et al. 2024. Harnessing large language models for coding, teaching and inclusion. Methods in Ecology and Evolution 15:1757–1763.

O ponto de partida

Vocês já estão usando. Fingir que não é abdicar de formar critério.

O objetivo deste bloco não é proibir nem endossar. É responder: para que servem, para que não servem, e como declarar o uso.

O que um LLM faz

Prediz a próxima palavra a partir de um corpus gigantesco.

Ele não sabe estatística. Ele sabe como textos sobre estatística costumam continuar.

Consequência direta: é bom em código frequente (ggplot2, dplyr, lm()) e ruim em métodos raros ou recentes. Alucinação não é bug — é o comportamento esperado de um sistema que prefere plausibilidade a verdade.

Onde ajudam

  1. Explicar código herdado — o script sem comentários do orientando anterior.
  2. Comentar código próprio antigo — aquele de seis meses atrás.
  3. Traduzir — exemplo em Python para R; nlme para glmmTMB.
  4. Depurar erros crípticos — são especialmente bons nas mensagens de erro do lme4.
  5. Otimizar — um laço for virando purrr::map().
  6. Sugerir testes — para quem começa a escrever funções.

Onde fazem mal

  • Interpretação estatística. Vão inventar a interpretação de uma variância de efeito aleatório com toda a segurança do mundo.
  • Métodos ecológicos raros. Hmsc, mvabund, gllvm, glmmTMB com ziformula complexa — sub-representados no corpus, alta taxa de alucinação.
  • Matemática e lógica. Confundem log-odds com odds, invertem fórmulas.
  • Reprodutibilidade. Mesmo prompt, resposta diferente. Versão do modelo agora faz parte do método.

Terceirize o código. Nunca terceirize o pensamento estatístico.

Como usar bem

  • Contexto sempre. Não “faça um GLM”; sim “tenho contagem de girinos em 30 poças, com temperatura e área como covariáveis; quero GLM Poisson com glmmTMB e poça como efeito aleatório”.
  • Cole o erro inteiro, não a paráfrase.
  • Peça três alternativas — divergência entre elas é sinal de alucinação.
  • Peça explicação linha a linha antes de rodar. Se você não consegue acompanhar, não está pronto para usar aquele código.
  • Teste em 20 linhas simuladas antes de escalar.

Declaração e responsabilidade

  • Declarar modelo, versão e que parte do código foi gerada.
  • Prompts críticos vão como material suplementar.
  • O autor responde pelo código como se o tivesse escrito. Não existe “o ChatGPT errou”.
  • IA não pode ser coautora — política vigente em praticamente todos os periódicos da área.

Vale igual no trabalho final desta disciplina.

As três normas que valem para vocês

Norma O que exige
COPE, Authorship and AI tools IA não pode ser autora — não tem como assumir responsabilidade pelo trabalho; o uso deve ser inteiramente transparente
CNPq, Portaria nº 2.664, de 6 de março de 2026 Declarar qualquer uso de IA generativa, em qualquer fase da pesquisa, especificando ferramenta e finalidade; autores integralmente responsáveis, inclusive por plágio ou imprecisão da ferramenta; uso em pareceres não é recomendado
AIdIT (Drobniak et al. 2026) O formato da declaração: ferramenta e versão, cada uso mapeado à etapa do ciclo de pesquisa, e como a saída foi verificada

A Portaria do CNPq é a que tem consequência administrativa para bolsista. As três dizem a mesma coisa em graus diferentes: declare o que usou, e responda pelo que saiu.

A frase para levar

O LLM escreve o código; você escreve a ciência.

Fechamento

O que fica de hoje

  1. A pergunta vem antes dos dados — e o rótulo confirmatório/exploratório é honestidade básica.
  2. Exploração de dados é lista de verificação, não caça ao resultado.
  3. Reprodutibilidade é um favor ao seu eu futuro.
  4. LLM é ferramenta de código, não de interpretação.

O que fica de hoje, em uma linha

O ciclo PPDAC é o mapa; os quatro princípios são o critério de qualidade; o protocolo de oito passos é a lista de verificação. O resto do curso é a etapa “Análise”.

Hoje à tarde

Leitura: Gelman, Hill & Vehtari (2020), Regression and Other Stories, caps. 1 (Introduction) e 2 (Data and measurement) — dá para ler no intervalo do almoço.

Exercício: rodem o protocolo de oito passos nos seus dados e escrevam meia página sobre o que encontraram. Vamos usar isso nas práticas da semana inteira, então não deixem para depois.

Daqui a pouco: teste t, correlação e regressão deixam de ser três coisas.

Referências