E5 — GLM I: verossimilhança, binomial e Poisson
O primeiro encontro com modelos cuja resposta não é contínua e ilimitada — e com a pergunta que decide a qualidade de qualquer análise observacional: que covariáveis entram no modelo, e por quê?
Slides
Conteúdo
- Máxima verossimilhança — a ideia, com uma superfície de verossimilhança desenhada em R. Deviance e teste de razão de verossimilhanças.
- GLM binomial — proporções e dados binários; odds, log-odds, razão de chances versus risco relativo; separação completa e a correção de Firth.
- GLM Poisson — contagens; o log como ligação canônica; offset para esforço amostral desigual.
- Interpretar na escala certa — o coeficiente está em log; a biologia está na escala da resposta.
ggeffectsemarginaleffects. - DAGs e raciocínio causal (60 min) —
dagitty, critério backdoor, confounders (controlar) versus colisores (não controlar). Por que seleção estatística de variáveis não substitui pensar sobre causalidade.
Antes da aula de quarta, 23/09
Nas primeiras 2 h de quarta estarei em reunião. São duas tarefas, nesta ordem, mais uma de reserva: uma lição do swirl em português, que treina no console o GLM de Poisson do bloco 3, e depois o bloco 5 deste encontro — “Que covariáveis entram” —, que é o único autocontido e o que mais rende feito em vez de assistido: cada um precisa desenhar o DAG do próprio sistema. A teoria dos blocos 1 a 4 eu dou quando chegar — e vou mais rápido no 3, que vocês já terão praticado.
Tarefa 1 — GLM de Poisson no swirl (~35 min)
Comecem por aqui, porque é mecânico, corrige sozinho e não depende de mim estar na sala. A última lição do curso Regression Models da Johns Hopkins, que traduzimos para o português, chama-se Respostas de Contagem e é quase o roteiro do bloco 3 deste encontro: o log de lambda como função linear das preditoras, glm(y ~ x, poisson, dados), o intervalo na escala multiplicativa com exp(confint()) e o offset para esforço amostral desigual. No fim ela ainda calcula deviance(mdl)/df.residual(mdl) e discute sobredispersão — que é por onde a aula da tarde começa.
A instalação está em Instalação › swirl. Depois: library(swirl), swirl(), curso Modelos de Regressão, lição Respostas de Contagem.
Três coisas para trazer anotadas:
- A lição estima que as visitas crescem entre 0,2192 % e 0,2399 % por dia. De onde sai esse intervalo, e por que ele é multiplicativo e não aditivo?
- A razão deviance/gl do modelo dá cerca de 4,3. O que isso diz sobre os erros-padrão que o
summary()tinha imprimido duas telas antes? - O
offsetentra comolog(visits + 1), com coeficiente fixado em 1. Qual seria ooffsetno seu conjunto de dados — ou por que não há nenhum?
Tarefa 2 — o DAG do seu sistema
Leitura. Comecem pelo fluxograma conectando variáveis, no cap. 2 de Análises Ecológicas no R — é este mesmo raciocínio, em português e com exemplo ecológico. Quem quiser ir além, Arif & MacNeil (2023), Applying the structural causal model framework for observational causal inference in ecology, Ecological Monographs 93:e1554.
Leiam com três perguntas sobre o próprio trabalho em mente:
- Qual é a variável cujo efeito vocês querem estimar? Uma só.
- Que outras vocês mediram porque “é bom controlar”? Listem.
- Para cada uma: ela causa a preditora de interesse, é causada por ela, ou as duas são causadas por um terceiro fator?
Exercício. Abram os slides na seção Que covariáveis entram e sigam o exemplo com dagitty. Depois façam o de vocês:
library(dagitty)
g <- dagitty('dag {
SuaPreditora -> SuaResposta
Confundidor -> SuaPreditora
Confundidor -> SuaResposta
}')
adjustmentSets(g, exposure = "SuaPreditora", outcome = "SuaResposta")A pergunta que interessa: o conjunto que a função devolveu é igual à lista de covariáveis que vocês pretendiam pôr no modelo? Se não for, qual entrou, qual saiu, e por quê.
Me mandem por e-mail, antes do fim da reunião: o código do DAG, a saída do adjustmentSets(), uma frase dizendo que covariável vocês iam incluir e não vão mais — ou o contrário — e onde travaram, se travaram. É com isso que eu começo quando chegar.
Tarefa 3 — reserva, se eu demorar
Se a reunião esticar e vocês terminarem as duas primeiras, sigam para a lição Respostas Binárias, no mesmo curso do swirl (~30 min). Ela é o bloco 2 deste encontro, com o exemplo mais leve que existe: a chance de o Baltimore Ravens vencer, em função dos pontos que o time marca.
O que ela treina, quase na ordem em que veremos na aula:
- chance como \(p/(1-p)\), e por que várias maneiras de escrever a mesma razão são a mesma coisa;
glm(ravenWinNum ~ ravenScore, binomial, ravenData);- que
predict()devolve log da chance, não probabilidade — a conversão comexp(lodds)/(1 + exp(lodds))é o bloco 4 em miniatura; exp(confint(mdl)): o intervalo construído na escala do link e só depois exponenciado, que é a ordem em que eu vou insistir;anova(mdl),qchisq(0.95, 1)epchisq(3.5398, 1, lower.tail = FALSE)— o teste de razão de verossimilhanças do bloco 1, feito à mão.
Uma pergunta para trazer: o modelo dá aos Ravens 33 % de chance de vitória com 9 pontos, e nos dados não existe jogo com menos que isso. Onde fica a região equivalente no conjunto de vocês — aquela em que o modelo responde com toda a confiança sobre o que vocês nunca observaram?
Prática
Os enunciados estão no fim do deck e pedem que você use os seus próprios dados. Para acompanhar em sala, o mesmo roteiro rodado nos dados do curso, com um take-home por item:
Dados
RoadKills.txt— anfíbios atropelados em 52 segmentos da IP2, sul de Portugal (Ascensão & Mira 2005; reanálise em Zuur et al. 2009, cap. 16, doi:10.1007/978-0-387-87458-6_16); o Encontro 1 descreve a coleta.UV.csv— resposta binomial, contagem de células.camila_cauda_lagartos.txt— 223 lagartos Coleodactylus meridionalis: sexo, CRC, comprimento da cauda intacta e da regenerada, e se o indivíduo já sofreu autotomia. Aqui,Tail_stateé a resposta binária do bloco 2 — atenção: vale 1 quando a cauda está intacta, e nos slides ela é recodificada paracauda_perdida = 1 - Tail_state.Planilha_Pentastomida.txt— contagens de Raillietiella mottae em 195 lagartos; muitos zeros. É o conjunto do capítulo 8 de Análises Ecológicas no R, e volta nos Encontros 5 e 6.
Leituras
Obrigatória
- Agresti, A. 2015. Foundations of Linear and Generalized Linear Models. Wiley.
Complementar
- da Silva, F.R.; Gonçalves-Souza, T.; Paterno, G.; Provete, D.B. & Vancine, M.A. 2022. Análises Ecológicas no R. NUPEEA. — o fluxograma conectando variáveis, no cap. 2, é este mesmo raciocínio em português; cap. 8 para os GLMs.
- Gelman, A.; Hill, J. & Vehtari, A. 2020. Regression and Other Stories. Cap. 13 (Logistic regression), 14 (Working with logistic regression) e 15 (Other generalized linear models).
- Jones, E.; Harden, S. & Crawley, M.J. 2022. Generalised Linear Models. Cap. 11 de The R Book, 3ª ed. Wiley. p. 499–577. — a seção 11.1 é o mesmo arcabouço de hoje, com um subtítulo para cada peça: estrutura de erro, preditor linear, função de ligação, checagem do modelo e interpretação. A 11.4 é a resposta em proporção com erro binomial e a 11.5 a resposta binária — os dois blocos deste encontro. Quase 80 páginas, com a saída do R na frente: é referência de consulta, não leitura prévia.
- McElreath, R. 2020. Statistical Rethinking, 2ª ed., cap. 5 — The Many Variables & The Spurious Waffles, na versão em
brmsde Kurz. - Zuur, A.F. et al. 2009. Mixed Effects Models and Extensions in Ecology with R. Springer.
- Arif, S. & MacNeil, M.A. 2023. Applying the structural causal model framework for observational causal inference in ecology. Ecological Monographs 93:e1554.
- Gelman, A. et al. 2026. Bayesian Workflow. Chapman & Hall/CRC. Cap. 7, “Prediction, generalization, and causal inference”.
Recursos externos
Volta para o índice do curso.