biodata ← Voltar ao blog
modelos passo a passo

Como interpretar a saída do glm() no R, linha a linha

# resposta curta

Na saída do glm(), os coeficientes estão na escala da função de ligação: num modelo de Poisson, é o log. Para ler o efeito, aplique exp() e transforme em razão. As estrelas só dizem se o efeito é diferente de zero. E antes de acreditar em qualquer p-valor, compare o desvio residual com os graus de liberdade.

Com besouros em armadilhas, código em R e um parágrafo pronto para a sua dissertação.

A pergunta antes do código

Uma mestranda instalou 30 armadilhas pitfall: 10 na mata, 10 na borda e 10 no pasto. A pergunta era simples: a conversão da mata em pasto reduz a abundância de besouros? Ela contou os besouros de cada armadilha e chegou com um número por armadilha e um script que rodava.

Antes de qualquer função, duas coisas decidem a análise. A variável resposta é uma contagem: não tem valor negativo, não tem vírgula e a variância costuma crescer com a média. E a unidade amostral é a armadilha, não o besouro. Isso já descarta a ANOVA comum e aponta para um modelo linear generalizado (GLM).

O dado: 30 armadilhas, três habitats

Os dados deste exemplo são simulados para imitar uma coleta com armadilhas pitfall. O código abaixo roda num R limpo.

R
library(ggplot2)

set.seed(5395)
# médias por habitat escolhidas para imitar um gradiente mata → pasto
armadilhas <- data.frame(
  habitat = factor(rep(c("Mata", "Pasto", "Borda"), each = 10),
                   levels = c("Mata", "Pasto", "Borda"))
)
armadilhas$abundancia <- rnbinom(30, mu = c(6.5, 3.25, 5.2)[armadilhas$habitat], size = 2)

Antes de ajustar, olhe. O gráfico mostra cada armadilha como um ponto e a média de cada habitat em azul.

Besouros por armadilha nos três habitats0510MataBordaPastoHabitatBesouros por armadilha
Figura 1. Besouros por armadilha em cada habitat (dados simulados). Pontos pretos: armadilhas. Azul: média e intervalo de confiança de 95%.

Já dá para ver duas coisas: o pasto tem menos besouros, e a dispersão dentro de cada habitat é grande. Guarde a segunda. Ela volta no último trecho da saída.

Como ler a saída do glm(), trecho por trecho

Clique em cada trecho destacado, ou leia as notas na ordem. A nota 6 é a que muda a conclusão.

> modelo <- (abundancia ~ habitat,
+               family = , data = armadilhas)
> summary(modelo)

Coefficients:
             Estimate Std. Error z value Pr(>|z|)
(Intercept)    2.0541     0.1132  18.142  < 2e-16 ***
habitatPasto       0.1961  -3.534 0.000409 
habitatBorda  -0.2963     0.1734  -1.709 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

    Null deviance: 108.84  on 29  degrees of freedom
Residual deviance:    degrees of freedom
  1. # glm()Abundância é contagem. A ANOVA comum supõe resíduos normais e variância constante, e pode prever número negativo de besouros. O GLM deixa escolher uma distribuição que combina com o dado.
  2. # family = poissonPoisson é o ponto de partida para contagens. Ela supõe que a variância é igual à média. Guarde isso.
  3. # estimate = -0.6931Escala do log. exp(-0,69) ≈ 0,5: no pasto há cerca de metade dos besouros da mata. É essa frase que vai para o texto.
  4. # ***O efeito dificilmente é zero. Não diz se é grande nem se importa biologicamente.
  5. # p = 0.0875Não é "quase significativo". É incerteza: a borda pode ter cerca de 25% menos besouros, ou o mesmo.
  6. # 95.59 on 27Desvio residual 3,5 vezes os graus de liberdade: sobredispersão. Os erros-padrão acima estão otimistas.

Se a sua saída tem um padrão parecido e você não sabe se é sobredispersão ou zero demais, é exatamente esse tipo de dúvida que resolvemos numa consultoria.

Qual distribuição usar no glm()?

A escolha começa pela natureza da variável resposta, não por uma tabela de testes.

Da variável resposta à família do GLM
A sua resposta é…Comece comPor quê
Contagem (indivíduos, espécies)poissonInteiros não negativos, variância igual à média
Contagem com variância muito maior que a médiabinomial negativaUm parâmetro a mais absorve a dispersão extra
Proporção (germinadas de 20 sementes)binomialSucessos em um número conhecido de tentativas
Presença e ausênciabinomialResposta 0 ou 1

O erro que a banca vai pegar: o desvio residual

Quase ninguém lê as duas últimas linhas da saída. É lá que o modelo avisa que a Poisson não serve.

a armadilha
sintoma
O desvio residual (95,59) é bem maior que os graus de liberdade (27). A razão é 3,5; com a Poisson adequada, ficaria perto de 1.
consequência
Os erros-padrão ficam pequenos demais e os p-valores, otimistas. Com a binomial negativa, o pasto continua com metade dos besouros da mata, mas o p-valor sobe para cerca de 0,05; a borda deixa de mostrar qualquer sinal (p ≈ 0,39).
correção
Cheque os resíduos com DHARMa::simulateResiduals() e, se a sobredispersão se confirmar, ajuste uma binomial negativa com glmmTMB.
R
library(glmmTMB)
library(DHARMa)

# a razão que a saída do summary() não calcula por você
deviance(modelo) / df.residual(modelo)

# binomial negativa: a variância pode crescer mais rápido que a média
modelo_nb <- glmmTMB(abundancia ~ habitat, family = nbinom2, data = armadilhas)
plot(simulateResiduals(modelo_nb))

Como escrever o resultado do glm() na dissertação

Dois parágrafos-modelo. Troque o que está destacado pelos seus dados.

métodos
A abundância de besouros por armadilha foi modelada com um modelo linear generalizado com distribuição binomial negativa e função de ligação log, tendo o habitat (mata, borda e pasto) como efeito fixo. O modelo foi ajustado com o pacote glmmTMB [versão] no R [versão], e o ajuste foi verificado por resíduos simulados (DHARMa). A distribuição de Poisson foi descartada por sobredispersão [razão desvio/gl].
resultados
As armadilhas no pasto capturaram cerca de metade dos besouros registrados na mata [razão = 0,50; IC 95%: 0,25–1,01]. Na borda, a abundância foi [26%] menor que na mata, mas o intervalo de confiança inclui a ausência de diferença [razão = 0,74; IC 95%: 0,38–1,47].

Perguntas frequentes

Por que o coeficiente do glm() é negativo?

Porque ele está na escala do log e compara o nível com a categoria de referência. Um coeficiente negativo quer dizer menos que a referência. Aplique exp() para ver quanto menos.

Qual a diferença entre desvio nulo e desvio residual?

O desvio nulo mede o quanto um modelo sem preditores se afasta dos dados. O residual mede o mesmo para o seu modelo. A diferença entre os dois é o quanto os preditores explicam.

O glm() mostra R²?

Não diretamente. Existem pseudo-R² para GLM, como os do pacote performance, mas eles não se leem como o R² da regressão linear. Use com cuidado e diga qual usou.

Para ir além

Leitura de base: o capítulo de modelos lineares generalizados do livro Análises Ecológicas no R, gratuito, explica as distribuições com calma.

Referências

  1. McCULLAGH, P.; NELDER, J. A. Generalized linear models. 2. ed. London: Chapman and Hall, 1989.
  2. ZUUR, A. F. et al. Mixed effects models and extensions in ecology with R. New York: Springer, 2009.
# como citar este post RODRIGUES, Vinícius. Como interpretar a saída do glm() no R, linha a linha. biodata, 2026. Disponível em: https://biodata.site/blog/interpretar-saida-glm-r/. Acesso em: .

Travou nesta análise com os seus dados?

Me mande a sua pergunta. A primeira conversa é sem custo.

Conversar no WhatsApp