Quando o Desfecho É Sim/Não
A regressão linear prevê um número. Mas muitas das perguntas que valem a pena modelar são binárias: o cliente cancela, o paciente se recupera, o e-mail recebe um clique. Ajustar uma reta a um desfecho 0/1 quebra imediatamente - a reta alegremente prevê probabilidades de −0,3 ou 1,4, o que é um absurdo.
A regressão logística resolve isso modelando a probabilidade do desfecho por meio da transformação de log-odds (logit): log(p / (1 − p)) = intercepto + inclinação × x. A escala de log-odds percorre toda a reta dos números, então uma equação linear se encaixa naturalmente ali - e o mapeamento de volta comprime toda previsão em (0, 1) ao longo da conhecida curva em S. O preço do truque: os coeficientes vivem na escala de log-odds, e todo o jogo de ler uma regressão logística é traduzi-los de volta para algo que humanos entendam.
Ajustando: glm() com family = binomial
glm() (modelo linear generalizado) é o irmão mais velho de lm(); family = binomial seleciona a regressão logística. No mtcars, am registra o tipo de transmissão (1 = manual, 0 = automática) - carros econômicos tendem a ser manuais?
Duas coisas antes de ler a saída. Primeira, family = binomial não é opcional - omita-o e glm() ajusta silenciosamente mínimos quadrados ordinários. Segunda, o desfecho precisa ser binário: 0/1, lógico ou um fator de dois níveis (o R modela a probabilidade do segundo nível).
Agora o summary, bloco a bloco:
- Coefficients - o Estimate de
mpgé cerca de 0,31, e é uma inclinação em log-odds: cada mpg a mais soma 0,31 ao log-odds de ser manual. Positivo significa "aumenta a probabilidade", negativo significa "reduz" - além do sinal, a intuição de ninguém funciona nessa escala, e é por isso que a próxima seção existe. - z value e Pr(>|z|) - mesma lógica dos testes t da regressão (Estimate ÷ Std. Error, e depois um p-valor para "isso poderia ser zero?"), só que usando uma aproximação normal - daí z em vez de t. Aqui p ≈ 0,011: a associação entre mpg e tipo de transmissão dificilmente é ruído.
- Null deviance vs Residual deviance - deviance é a medida de mau ajuste do mundo glm (menor = melhor). A null deviance (43,2 em 31 df) é o modelo só com intercepto; a residual deviance (29,7 em 30 df) é a do seu. A queda de cerca de 13,6 ao custo de um df de preditor é o análogo em glm de "o R-quadrado subiu".
- AIC - uma nota de comparação de modelos que equilibra ajuste e complexidade; menor vence. Sem sentido sozinha, útil entre modelos candidatos sobre os mesmos dados.
De Log-Odds para Razões de Chances: exp(coef())
Exponenciar move os coeficientes da escala aditiva de log-odds para a escala multiplicativa de chances:
exp(0.307) ≈ 1.36, e aqui está o padrão de frase honesto para memorizar: "cada mpg a mais multiplica as chances de uma transmissão manual por cerca de 1,36." Uma razão de chances acima de 1 aumenta as chances, abaixo de 1 as reduz, exatamente 1 é nenhum efeito - e é por isso que o veredito de intervalo de confiança para razões de chances é "o intervalo exclui o 1?" (não o zero; o zero era a fronteira lá na escala de log-odds).
Cuidado com a linguagem: chances não são probabilidades. Chances = p / (1 − p), então probabilidade 0,75 são chances de 3. Multiplicar chances por 1,36 não é o mesmo que multiplicar probabilidade por 1,36 - e quando o desfecho é comum, a diferença é grande. Uma razão de chances de 2 para um desfecho raro se comporta como "aproximadamente o dobro do risco"; para um desfecho que ocorre em 50% dos casos, enfaticamente não. Nunca reporte uma razão de chances com a linguagem de razão de risco ("1,36 vezes mais provável") a menos que o desfecho seja raro.
Probabilidades Previstas: a Pegadinha do type = "response"
O bug mais comum de regressão logística encontrado por aí:
A primeira chamada retorna o padrão type = "link" - previsões na escala de log-odds, valores negativos e tudo. A segunda retorna probabilidades de verdade. Se suas "probabilidades" alguma vez saírem negativas ou acima de 1, é por isso. Rode o bloco: um carro de 15 mpg praticamente não tem chance de ser manual, um de 30 mpg é muito provavelmente manual, e a curva em S se dobra no meio.
Classificação: Limiar e a Tabela de Confusão
Probabilidades viram classes previstas ao se escolher um ponto de corte - 0,5 sendo a escolha padrão - e o placar honesto é uma tabela de previsto vs observado:
As células da diagonal são acertos; as duas células fora da diagonal são os dois erros diferentes (prever manual para um automático, e o contrário). A acurácia geral sozinha pode lisonjear muito um modelo - se 95% dos clientes não cancelam, "preveja que ninguém cancela" tira 95% enquanto pega zero cancelamentos - então sempre olhe os dois tipos de erro. E 0,5 é uma convenção, não uma lei: quando os dois erros têm custos diferentes, mova o limiar de acordo.
Uma ressalva de honestidade: esta tabela avalia o modelo sobre os mesmos dados nos quais ele foi ajustado, o que o lisonjeia. Uma avaliação real reserva dados que o modelo nunca viu.
Múltiplos Preditores
Exatamente como no lm() - acrescente termos com +, e toda interpretação ganha o qualificador "mantendo os demais constantes":
Cada coeficiente exponenciado agora é o multiplicador de chances para um aumento de uma unidade naquele preditor entre carros parecidos nos demais preditores. A maquinaria escala, mas as ressalvas da regressão linear também: preditores correlacionados embaralham os coeficientes uns dos outros.
Cuidados
- Separação completa. Se um preditor divide o desfecho perfeitamente (todo carro acima de certo mpg é manual, todo abaixo é automático), o coeficiente de máxima verossimilhança quer ser infinito. O R avisa -
glm.fit: fitted probabilities numerically 0 or 1 occurred- e reporta coeficientes enormes com erros padrão absurdos. Não publique esses números; simplifique o modelo, consiga mais dados ou use um método penalizado (os pacotesbrglm2oulogistf). - Eventos suficientes. A restrição que manda é a contagem do desfecho mais raro, não o total de linhas. Uma regra prática antiga pede da ordem de 10-15 eventos por preditor; os exemplos de 32 carros aqui servem para ensinar a mecânica, não como modelo de tamanhos de amostra publicáveis.
- Razões de chances não são razões de risco quando o desfecho é comum - coberto acima, repetido porque os revisores vão pegar mesmo que você não pegue.
O Que Você Leva Daqui
- Desfecho binário →
glm(y ~ x, data = df, family = binomial); nunca esqueça ofamily. - Coeficientes brutos são log-odds;
exp(coef(fit))dá razões de chances, e o valor nulo para seus intervalos é 1. - O padrão de frase: "cada aumento de uma unidade em x multiplica as chances do desfecho por exp(b)".
predict(..., type = "response")para probabilidades - o padrão retorna log-odds, a confusão número um.- Classifique com um limiar e julgue com uma tabela de confusão; a acurácia sozinha pode mentir.
- Fique atento a avisos de separação, conte seus eventos e não fantasie razões de chances como razões de risco.
A seguir: a maquinaria por trás de todo intervalo que você viu até aqui - intervalos de confiança com t.test(), confint() e prop.test().
Perguntas frequentes
Como rodar uma regressão logística no R?
Com glm() e family = binomial: fit <- glm(am ~ mpg, data = mtcars, family = binomial), depois summary(fit). O desfecho precisa ser binário - 0/1, TRUE/FALSE ou um fator de dois níveis. Esquecer family = binomial faz o R ajustar silenciosamente uma regressão linear comum.
Como interpretar os coeficientes do glm no R?
Os coeficientes brutos estão na escala de log-odds, na qual ninguém pensa. Exponencie-os - exp(coef(fit)) - para obter razões de chances: um valor de 1,36 para um preditor significa que cada aumento de uma unidade multiplica as chances do desfecho por cerca de 1,36. Valores acima de 1 aumentam as chances, abaixo de 1 as reduzem, exatamente 1 significa nenhum efeito.
Como obter probabilidades previstas do glm no R?
Use predict(fit, newdata, type = "response"). Essa é a pegadinha número um: o padrão type = "link" retorna log-odds, não probabilidades - então se suas "probabilidades" são negativas ou acima de 1, você esqueceu o type = "response".
Qual é a diferença entre chances e probabilidade?
Probabilidade é sucessos sobre todas as tentativas; chances (odds) são sucessos sobre fracassos. Uma probabilidade de 0,75 corresponde a chances de 3 (três sucessos por fracasso). As razões de chances da regressão logística multiplicam chances, não probabilidades - e quando o desfecho é comum, uma razão de chances pode ser bem maior que a razão de risco correspondente, então não apresente uma como a outra.