Curso
Depois de treinar um modelo de regressão logística, como ter certeza de que você pode confiar nos coeficientes?
A regressão logística é conhecida por ser simples. Com scikit-learn, você chama .fit(), lê as razões de chances (odds ratios) e pronto. Mas o que muita gente iniciante não sabe é que o modelo tem seus próprios pressupostos e, quando você não os segue, os coeficientes te enganam e as previsões saem erradas de maneiras que nenhum métrico de teste vai te contar.
Sendo sincero, a regressão logística tem menos pressupostos do que a regressão linear, e os que ela tem são fáceis de checar. Você só precisa rodar os diagnósticos certos antes de interpretar o output para saber em quais partes do modelo pode confiar.
Neste artigo, vou te guiar por cada pressuposto da regressão logística, como verificar cada um em Python e R, o que acontece quando são violados e quais alternativas usar quando os pressupostos não podem ser seguidos.
Se você é novo em ciência de dados e machine learning, leia nosso post sobre Simple Linear Regression para entender seus pressupostos e diagnósticos.
O que é regressão logística?
A regressão logística é um modelo de classificação que prevê a probabilidade de um desfecho categórico. Você fornece preditores e ele retorna um número entre 0 e 1 que pode ser lido como a probabilidade de pertencer a uma determinada classe.
A maioria das pessoas usa para classificação binária, como churn ou não churn, spam ou não spam. Variações como regressão logística multinomial e ordinal cobrem mais de duas classes, mas o caso binário é geralmente o que querem dizer quando falam "regressão logística".
Por baixo dos panos, o modelo ajusta uma combinação linear dos seus preditores e passa o resultado pela função logística. A saída é uma probabilidade, e os coeficientes mostram como cada preditor desloca o logit (log das chances).
Vale notar que a regressão logística é diferente da regressão linear. A segunda tem pressupostos familiares como normalidade dos resíduos, homocedasticidade, linearidade entre preditores e alvo. A regressão logística não faz esses pressupostos. Ela tem sua própria lista, e são diferentes o suficiente para que usar os pressupostos de uma regressão linear leve a conclusões equivocadas.
Para mais detalhes sobre regressão logística, confira nosso post que mostra a implementação em Python.
Por que os pressupostos da regressão logística importam
Eles importam porque se conectam diretamente ao que você faz com o modelo.
Se você respeita os pressupostos, os coeficientes significam o que você acha que significam. As razões de chances que você lê são válidas e as probabilidades do modelo refletem bem os resultados reais. Quando os pressupostos não são respeitados, tudo isso fica frágil de formas que uma matriz de confusão ou qualquer outro métrico não revela.
A boa notícia é que violações não são binárias. Um desvio leve, por exemplo, da linearidade do logit não torna seu modelo inútil. Só significa que suas razões de chances estão um pouco fora e suas previsões podem estar piores do que poderiam. Muitos modelos em produção convivem com verificações imperfeitas de pressupostos, e tudo bem.
O que você não quer é pular as checagens. Sem diagnósticos, você não sabe se está olhando para um problema pequeno ou grande até as previsões darem errado.
Visão geral dos pressupostos da regressão logística
Antes de entrar em cada pressuposto, aqui vai a lista completa que você precisa verificar.
| Pressuposto | O que exige | Diagnóstico comum |
|---|---|---|
| Observações independentes | Nenhum registro influencia outro registro | Desenho do estudo, correlação intraclasse |
| Variável de desfecho adequada | Binária, ou modelada com a variante correta | Inspecionar o alvo |
| Linearidade do logit | Preditores lineares no log das chances | Teste de Box-Tidwell, splines |
| Sem multicolinearidade severa | Preditores não fortemente correlacionados | VIF, matriz de correlação |
| Tamanho de amostra suficiente | Eventos suficientes por variável | Regra prática de EPV |
| Sem outliers altamente influentes | Nenhum registro isolado distorcendo o ajuste | Distância de Cook, leverage |
Tabela de pressupostos da regressão logística
Essa é a checklist completa. No restante do artigo, vou percorrer cada pressuposto com diagnósticos em Python e R, como é uma violação e o que fazer quando algo dá errado.
Os principais pressupostos da regressão logística
Pressuposto 1: a variável de desfecho é binária (ou modelada de forma apropriada)
A regressão logística padrão foi feita para um desfecho binário. A variável alvo deve ter exatamente duas categorias, e o modelo é construído em cima desse caso.
Os exemplos clássicos são churn ou não churn, doença ou não doença. Qualquer coisa que você possa formular como uma pergunta sim/não é um bom encaixe.
Quando o desfecho tem mais de duas categorias, você precisa de outra variante. A regressão logística multinomial lida com categorias não ordenadas, como segmentos de clientes ou tipos de produto. A regressão logística ordinal lida com categorias ordenadas, como notas de satisfação de 1 a 5, em que a ordem tem significado.
Forçar um desfecho multiclasse em um modelo binário geralmente implica colapsar categorias que não deveriam ser colapsadas. Se você tem um alvo de satisfação com cinco níveis e reduz para "satisfeito vs. não", perde informação que poderia ajudar seu modelo. Escolha a variante que combina com o formato do seu alvo.
Pressuposto 2: as observações são independentes
Cada linha do seu dataset deve trazer ao modelo informação que nenhuma outra linha já forneceu. Se dois registros estão ligados de uma forma que viola isso, seus erros-padrão e p-values deixam de significar o que deveriam.
O pressuposto falha sempre que observações compartilham estrutura que você não modelou. Um bom exemplo é a repetição de medidas no mesmo paciente, pois compartilham a biologia daquela pessoa. Outro exemplo é alunos agrupados na mesma sala, pois compartilham o professor e o ambiente.
Ao ignorar isso e ajustar uma regressão logística simples, o modelo trata cada linha como informação nova e reduz os erros-padrão mais do que deveria. Os coeficientes ainda podem parecer ok na superfície, mas os p-values e os intervalos de confiança ficarão otimistas demais.
As alternativas padrão são regressão logística de efeitos mistos e GEE. Modelos de efeitos mistos adicionam efeitos aleatórios para os grupos (paciente, sala) para o modelo considerar a correlação intragrupo. GEE, de generalized estimating equations, fornece efeitos médios populacionais com erros-padrão corrigidos, sem a máquina de efeitos aleatórios.
Escolha efeitos mistos quando você se importa com a variação dentro dos grupos. Escolha GEE quando quer efeitos marginais na população toda.
Pressuposto 3: linearidade do logit
Este é o pressuposto que mais confundem sobre regressão logística.
O modelo não assume que os preditores têm relação linear com o desfecho. Ele assume relação linear com o log das chances do desfecho. É uma afirmação diferente, e muda o que você deve checar.
O que é o logit
O logit é o logaritmo natural das chances. Para uma probabilidade p, as chances são p / (1 - p), e o logit é o log desse motivo:

O logit
A regressão logística então ajusta uma equação linear nessa escala:

Fórmula da regressão logística
O lado direito é linear nos preditores. O lado esquerdo é o log das chances, não a probabilidade. A probabilidade que você realmente quer vem ao passar a combinação linear pela função logística, que é não linear.
Então, a relação entre qualquer preditor e a probabilidade é não linear. A relação entre qualquer preditor e o log das chances é que deve ser linear.
Por que isso importa na prática
Quando a linearidade do logit não se sustenta para algum preditor, o coeficiente desse preditor resume uma curva com uma linha reta. O modelo ainda te dá um número, e ele pode até ser estatisticamente significativo, mas não descreve a relação real nos seus dados.
Por exemplo, age pode ter um efeito em U no log das chances de uma doença, com alto risco nas pontas e menor no meio. Se você colocar age como um único termo linear, o coeficiente pode sair perto de zero e você concluir que idade não importa. Importa. A especificação é que está errada.
Checando a linearidade do logit
Você tem algumas opções para verificar esse pressuposto.
A checagem mais rápida é visual. Coloque cada preditor contínuo em decis e calcule o log das chances empírico em cada faixa, e plote o resultado contra o preditor. Uma linha aproximadamente reta indica que o pressuposto se sustenta. Uma curva clara indica que não. É um check informal, mas funciona bem quando há dados suficientes por faixa.
O teste de Box-Tidwell adiciona um termo de interação entre cada preditor contínuo e seu próprio log natural. Se a interação é estatisticamente significativa, a linearidade do logit é violada para aquele preditor. O teste só funciona em preditores estritamente positivos (já que não se toma log de zero ou negativos) e é sensível ao tamanho de amostra, como qualquer teste de significância.
Splines são outra opção. Em vez de checar se a linearidade se sustenta, você substitui o termo linear por uma base flexível, como spline cúbico restrito, e deixa o modelo ajustar o formato que precisa. Se o spline se ajusta muito melhor do que o termo linear (julgado por razão de verossimilhança ou AIC), você tem evidência de que a especificação linear era restritiva demais. Splines também servem de correção. Mantê-los no modelo final costuma ser a melhor resposta quando a linearidade falha.
O que fazer quando a linearidade falha
Se o pressuposto falha para um preditor, você tem algumas opções:
- Transformar o preditor (log ou raiz quadrada geralmente ajudam) até a relação parecer linear no log das chances
- Usar splines e aceitar um modelo um pouco mais complexo
Ambas mantêm você na família da regressão logística e são melhores do que excluir um preditor que é de fato informativo.
Pressuposto 4: sem multicolinearidade severa
A regressão logística lida com preditores correlacionados até certo ponto. Passando desse ponto, o modelo começa a se comportar mal de formas difíceis de perceber por qualquer métrico de teste.
Multicolinearidade acontece quando dois ou mais preditores carregam a mesma (ou muito parecida) informação. Talvez você tenha altura em polegadas e em centímetros no mesmo modelo. Talvez tenha receita total e receita por cliente junto com contagem de clientes.
Duas coisas dão errado quando há multicolinearidade:
- Coeficientes ficam instáveis: Se você adiciona ou remove uma única linha, o coeficiente de um preditor colinear pode oscilar ou mudar de sinal. O modelo ainda funciona, mas os coeficientes individuais deixam de ser significativos.
- Erros-padrão inflacionam: Com menos informação independente por preditor, o modelo fica menos certo sobre cada coeficiente. P-values sobem e efeitos reais podem voltar como não significativos.
As previsões geralmente ficam ok. Se você só se importa com a probabilidade prevista, multicolinearidade leve a moderada raramente causa problemas. O "dano" se concentra nos coeficientes e na inferência sobre eles.
Os dois checks são a matriz de correlação e o fator de inflação de variância (VIF). A matriz de correlação é a primeira coisa a olhar, especialmente pares com correlações acima de 0,8 ou 0,9 em valor absoluto. A limitação é que só pega colinearidade par a par, não o caso em que três ou mais preditores são coletivamente redundantes.
VIF cobre o caso multiway. Para cada preditor, o VIF mede quanto a variância do seu coeficiente é inflacionada pela colinearidade com os demais. VIF igual a 1 indica ausência de colinearidade; valores até 5 geralmente estão ok; acima de 10 é um forte sinal de que o preditor é redundante com outros no modelo.
Quando o VIF acende um alerta, o conserto mais fácil é remover um dos preditores colineares ou combiná-los em um único atributo, como uma soma ou razão. Se preferir manter todos, regularização (ridge ou elastic net) estabiliza os coeficientes sem te forçar a escolher.
Pressuposto 5: tamanho de amostra adequado
A regressão logística funciona com amostras pequenas, mas fica um pouco pouco confiável. Os coeficientes oscilam além do esperado e efeitos de classes raras ficam quase impossíveis de estimar.
O tamanho de amostra que importa aqui não é a contagem total de linhas. É o número de eventos (observações na classe minoritária). Um dataset com 100.000 linhas e 50 casos de fraude é um problema de amostra pequena, porque o modelo só tem 50 exemplos daquilo que precisa aprender.
É aí que entra eventos por variável (EPV). EPV é o número de observações da classe minoritária dividido pelo número de preditores no modelo. Se você tem 50 fraudes e 10 preditores, seu EPV é 5.
A antiga regra prática era EPV de pelo menos 10. Simulações mais recentes mostram que o número certo depende dos tamanhos de efeito nos seus dados e da regularização usada. EPVs tão baixos quanto 5 podem ser suficientes em alguns cenários, e EPVs de 20 ou mais podem ser necessários em outros.
A lição é tratar EPV como informação de alerta. Abaixo de 10, espere estimativas instáveis e considere métodos penalizados como regressão logística de Firth ou ridge. Abaixo de 5, consiga mais dados ou simplifique o modelo antes de confiar em qualquer coeficiente individual.
Desbalanceamento de classes é um problema relacionado, mas distinto.
Um dataset em que 99% dos casos são de uma classe ainda pode ter muitos eventos por variável em termos absolutos. O que muda é a taxa-base do desfecho, não o EPV. Dados desbalanceados tendem a produzir probabilidades conservadoras, e acurácia deixa de ser métrica útil. Para contornar, avalie com log-loss ou Brier score em vez de acurácia e considere pesos de classe ou ajuste de limiar se você precisa de decisões balanceadas.
Pressuposto 6: sem outliers altamente influentes
A regressão logística não assume que seus preditores são normalmente distribuídos. Preditores assimétricos e variáveis de contagem são ok. O que o modelo se importa é se alguma observação isolada tem influência desproporcional nos coeficientes ajustados.
Uma observação influente é aquela que, se removida, mudaria significativamente o modelo. Não é a mesma coisa que um resíduo outlier. Um ponto pode ter resíduo grande (o modelo previu mal) sem ser influente, e um ponto pode ser muito influente (o modelo depende muito dele) sem ter resíduo grande.
Você vai querer alguns diagnósticos que olhem para aspectos diferentes da influência:
- Leverage mede quão incomuns são os valores dos preditores de uma observação em relação ao resto dos dados. Leverage sozinho não significa que a observação é influente. Significa que o ponto tem potencial de ser influente se o desfecho não bater com o que seus preditores sugerem
- Distância de Cook combina leverage com o resíduo em um único número que estima o quanto os coeficientes ajustados mudariam se você removesse a observação. Valores grandes de Cook destacam os pontos que valem investigação. Convenções comuns são valores acima de 4/n (onde n é seu tamanho de amostra) ou simplesmente olhar os maiores valores de Cook no dataset
- Diagnósticos de resíduos são ótimos para casos que leverage e Cook não capturam. Resíduos de deviance e de Pearson sinalizam observações que o modelo tem dificuldade de ajustar. Um ponto com resíduo grande merece atenção mesmo que seu leverage seja moderado, já que o modelo está dizendo que não consegue explicar aquele caso com os outros preditores
Quando você encontra um ponto influente, a pergunta é se o ponto é real ou errado. Um erro de digitação é corrigido ou removido. Um caso real porém incomum fica, e você anota que suas conclusões dependem dele. Só não exclua pontos porque são influentes. É assim que se acaba com um modelo que se ajusta ao seu treino e a mais nada.
Equívocos comuns sobre os pressupostos da regressão logística
Grande parte da confusão vem de usar a checklist da regressão linear. Os pressupostos da regressão linear são conhecidos e ensinados em todo lugar, e aparecem na regressão logística onde não devem. Aqui estão os quatro mais comuns para esclarecer.
Regressão logística exige variáveis normalmente distribuídas
Falso. A regressão logística não faz suposição de normalidade sobre nenhuma variável do modelo.
O desfecho deve ser binário, não normal, e já cobrimos isso no Pressuposto 1. Os preditores também não são assumidos normais e podem ter o formato que os dados tiverem. O que importa é a relação entre preditores e o log das chances, não a distribuição marginal de cada variável.
Regressão logística exige homocedasticidade
Também é falso. Homocedasticidade (variância constante dos resíduos ao longo dos valores ajustados) é um pressuposto da regressão linear que não se aplica à logística.
A variância do desfecho na regressão logística depende da própria probabilidade prevista. Para um desfecho Bernoulli, a variância é p(1 - p), que é maior perto de p = 0.5 e menor perto de 0 e 1. A variância não é constante, e o modelo já leva isso em conta via a função de verossimilhança que maximiza.
Então, ao ajustar uma regressão logística, você não viola nada por ter probabilidades previstas com variâncias diferentes. É assim que o modelo funciona.
Preditores precisam ser normalmente distribuídos
Falso. A regressão logística não impõe suposição de distribuição sobre os preditores.
Você pode misturar preditores contínuos, binários, de contagem e categóricos no mesmo modelo. Preditores assimétricos estão ok. Caudas pesadas também. O modelo não liga para as formas marginais. O que importa é a linearidade do logit (Pressuposto 3), que é uma suposição sobre o formato da relação, não da distribuição.
Se a assimetria de um preditor gera problema, geralmente é por conta da linearidade do logit ou de outliers influentes.
Resíduos precisam ser normalmente distribuídos
Falso. Não há pressuposto de normalidade sobre os resíduos da regressão logística.
A regressão linear assume resíduos normais ao redor de zero, porque isso faz parte da sua inferência. A logística usa estimação por máxima verossimilhança em uma verossimilhança binomial, e a distribuição dos seus resíduos é determinada pelo desfecho (0 ou 1) e pela probabilidade ajustada. Eles não são normais e nem devem ser.
Então, quando você confere diagnósticos de resíduos para regressão logística (como no Pressuposto 6), está procurando observações influentes e pontos que o modelo não explica, não um sino perfeito.
Como checar os pressupostos da regressão logística em Python
Vou fazer os diagnósticos com statsmodels. Scikit-learn ajusta regressão logística, mas não fornece VIF, estatísticas de influência ou diagnósticos de resíduos por padrão.
Preparando o exemplo
Vou gerar um dataset sintético de churn com três preditores (idade, renda e score de gastos), onde idade e renda são propositalmente correlacionadas para a multicolinearidade ter o que detectar.
import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smf
np.random.seed(42)
n = 1000
age = np.random.normal(40, 12, n).clip(18, 80)
income = 30000 + 1500 * age + np.random.normal(0, 8000, n)
spending_score = np.random.uniform(1, 100, n)
logit_p = -3 + 0.04 * age + 0.02 * spending_score
p = 1 / (1 + np.exp(-logit_p))
y = np.random.binomial(1, p)
df = pd.DataFrame({
"churned": y,
"age": age,
"income": income,
"spending_score": spending_score,
})
model = smf.glm(
"churned ~ age + income + spending_score",
data=df, family=sm.families.Binomial()
).fit()
print(model.summary())

Resumo do modelo
O resumo dá coeficientes, erros-padrão, estatísticas z e p-values. age e spending_score aparecem como preditores significativos. O coeficiente de income é pequeno porque o desfecho não depende diretamente de renda. Seu efeito aparente é absorvido por idade.
Multicolinearidade com VIF
O statsmodels facilita muito esse cálculo:
from statsmodels.stats.outliers_influence import variance_inflation_factor
X = sm.add_constant(df[["age", "income", "spending_score"]])
vif = pd.DataFrame({
"feature": X.columns,
"VIF": [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]
})
print(vif[vif["feature"] != "const"])

Saída do VIF
Os VIFs de age e income ficam por volta de 5,5, mostrando multicolinearidade leve. spending_score fica perto de 1, que é o desejado. Sua variância não está inflada por colinearidade com os demais. VIFs acima de 5 são alertas leves; acima de 10 são problema sério para resolver logo. Aqui, a ação é remover um entre age e income ou combiná-los em um único atributo.
Linearidade do logit com Box-Tidwell
O teste de Box-Tidwell adiciona termos de interação entre cada preditor contínuo e seu log natural. Interações significativas sinalizam relação não linear no log das chances para aquele preditor.
df_bt = df.copy()
for col in ["age", "income", "spending_score"]:
df_bt[f"{col}_logx"] = df_bt[col] * np.log(df_bt[col])
bt_formula = (
"churned ~ age + income + spending_score + "
"age_logx + income_logx + spending_score_logx"
)
bt_model = smf.glm(
bt_formula, data=df_bt, family=sm.families.Binomial()
).fit()
interactions = ["age_logx", "income_logx", "spending_score_logx"]
print(bt_model.pvalues[interactions])

Saída do Box-Tidwell
Se algum desses p-values ficar abaixo de 0,05, a linearidade do logit é suspeita para aquele preditor. Aqui, o logit foi gerado linearmente, então as interações não devem ser significativas. Em dados reais, trate um resultado significativo como convite para plotar o log das chances empírico contra o preditor e decidir entre transformação ou spline.
Diagnósticos de influência
O statsmodels oferece distância de Cook e leverage via get_influence().
influence = model.get_influence()
cooks_d = influence.cooks_distance[0]
leverage = influence.hat_matrix_diag
flagged = pd.DataFrame({
"cooks_d": cooks_d,
"leverage": leverage,
}).sort_values("cooks_d", ascending=False).head(10)
print(flagged)

Saída dos diagnósticos de influência
O limiar da distância de Cook que vale investigar é aproximadamente 4/n. Com 1000 linhas, dá 0.004. Qualquer valor bem acima disso merece um olhar. Neste conjunto, as maiores distâncias de Cook ainda são pequenas em termos absolutos, que é o resultado bom-e-sem-graça que você geralmente quer.
Agora, uma visualização para facilitar a leitura da distribuição:

Diagnósticos de influência visualizados
Os pontos bem acima da linha tracejada são os que valem investigar. Existem alguns, mas não muitos.
Diagnósticos de resíduos
Os resíduos de deviance mostram quais observações o modelo tem dificuldade de ajustar.
deviance_resid = model.resid_deviance
fitted = model.fittedvalues
resid_df = pd.DataFrame({
"fitted": fitted,
"deviance": deviance_resid,
}).sort_values("deviance", key=abs, ascending=False).head(10)
print(resid_df)

Saída dos diagnósticos de resíduos
Resíduos de deviance muito positivos são casos em que o modelo atribuiu baixa probabilidade, mas o desfecho foi positivo. Resíduos muito negativos são o inverso. Cruze as observações com alto resíduo com os diagnósticos de influência acima. Um caso que é mal previsto e influente é o que mais vale investigar.
Como checar os pressupostos da regressão logística em R
O R tem suporte mais direto a esses diagnósticos. Quase tudo vem do glm() da base e do pacote car.
Preparando o exemplo
Vou gerar o mesmo tipo de dataset sintético do exemplo em Python, com idade e renda correlacionadas de propósito.
set.seed(42)
n <- 1000
age <- pmin(pmax(rnorm(n, mean = 40, sd = 12), 18), 80)
income <- 30000 + 1500 * age + rnorm(n, sd = 8000)
spending_score <- runif(n, min = 1, max = 100)
logit_p <- -3 + 0.04 * age + 0.02 * spending_score
p <- 1 / (1 + exp(-logit_p))
churned <- rbinom(n, size = 1, prob = p)
df <- data.frame(churned, age, income, spending_score)
model <- glm(churned ~ age + income + spending_score,
data = df, family = binomial)
summary(model)

Saída do resumo do modelo
O output de summary(model) traz coeficientes, erros-padrão, estatísticas z e p-values. age e spending_score devem aparecer como significativos, enquanto o efeito de income é absorvido por age.
Multicolinearidade com VIF
O pacote car fornece vif() para qualquer glm:
library(car)
vif(model)

Saída do VIF no R
age e income devem voltar com VIF por volta de 5,7, mostrando a multicolinearidade embutida nos dados. spending_score fica perto de 1. Como em Python, valores acima de 5 merecem atenção e acima de 10 são um problema claro.
Linearidade do logit com Box-Tidwell
A função car::boxTidwell foi pensada para regressão linear, então na logística o melhor é adicionar as interações manualmente e reajustar:
df_bt <- df
df_bt$age_logx <- df_bt$age * log(df_bt$age)
df_bt$income_logx <- df_bt$income * log(df_bt$income)
df_bt$spending_score_logx <- df_bt$spending_score * log(df_bt$spending_score)
bt_model <- glm(
churned ~ age + income + spending_score +
age_logx + income_logx + spending_score_logx,
data = df_bt, family = binomial
)
interactions <- c("age_logx", "income_logx", "spending_score_logx")
summary(bt_model)$coefficients[interactions, ]

Saída do Box-Tidwell no R
O output mostra coeficiente e p-value para cada interação. P-values significativos sinalizam violação da linearidade do logit para aquele preditor. No dado sintético, o teste não deve rejeitar a linearidade. Em dados reais, complemente com gráficos de log das chances empírico ou ajuste um modelo com splines (do pacote splines) para preditores sinalizados.
Diagnósticos de influência
O R fornece cooks.distance() e hatvalues() na base, sem precisar de pacotes externos:
cooks_d <- cooks.distance(model)
leverage <- hatvalues(model)
influence_df <- data.frame(
index = seq_along(cooks_d),
cooks_d = cooks_d,
leverage = leverage
)
head(influence_df[order(-influence_df$cooks_d), ], 10)

Diagnósticos de influência no R
O limiar para a distância de Cook é o mesmo do Python: 4/n, ou 0.004 para 1000 linhas. Acima disso, vale investigar. Para um check visual rápido, plot(model, which = 4) gera o gráfico da distância de Cook em uma linha.

Diagnósticos de influência no R visualizados
Diagnósticos de resíduos
A função residuals() do R retorna os resíduos de deviance de um glm:
deviance_resid <- residuals(model, type = "deviance")
fitted_vals <- fitted(model)
resid_df <- data.frame(
fitted = fitted_vals,
deviance = deviance_resid
)
head(resid_df[order(-abs(resid_df$deviance)), ], 10)

Diagnósticos de resíduos no R
Resíduos absolutos grandes são casos que o modelo errou. Cruze esses casos com os flags de distância de Cook para achar observações que são ao mesmo tempo mal ajustadas e influentes.
Para ver tudo de uma vez, influence.measures(model) retorna uma tabela que combina distância de Cook, leverage, DFBETAs e outras estatísticas em um só lugar. É a forma mais rápida de varrer todos os diagnósticos padrão de um glm ajustado.
O que acontece quando os pressupostos são violados?
A maioria das violações não quebra seu modelo a ponto de ele não funcionar. Elas fazem o modelo se comportar mal de forma sutil, que você só nota se souber o que procurar.
Quatro consequências aparecem com mais frequência:
- Coeficientes instáveis: Pequenas mudanças nos dados (algumas linhas a mais ou a menos, leve mudança na engenharia de atributos) podem mudar muito os coeficientes ou inverter seus sinais. É o que a multicolinearidade faz e também o que acontece quando sua amostra é pequena demais para o número de preditores
- Mau calibramento: As probabilidades previstas deixam de bater com as taxas reais nos dados. Ele prevê 30% de churn para um grupo e você observa 15%. A acurácia pode continuar boa, mas as probabilidades estão erradas. Violações da linearidade do logit e outliers influentes contribuem para isso
- Inferência enganosa: Este é o mais difícil de notar, pois o modelo ainda produz erros-padrão e p-values com cara de certos. Observações correlacionadas reduzem os erros-padrão abaixo do que deveriam, e especificações erradas de preditores os inflacionam. De todo modo, os p-values não significam o que você acha
- Queda na qualidade preditiva: O sintoma mais óbvio, embora muitas vezes o menor na prática. As previsões costumam resistir melhor do que os coeficientes, por isso times focados só em acurácia costumam perder os sinais de alerta.
Mas, honestamente, violações raramente tornam um modelo inútil. Elas tornam partes dele não confiáveis, e as partes afetadas dependem de qual pressuposto quebrou. É por isso que os diagnósticos importam.
Alternativas quando os pressupostos da regressão logística falham
Se seus diagnósticos apontam problemas que você não consegue resolver dentro da regressão logística, o próximo passo é usar um modelo que não faz essas suposições.
Os modelos aditivos generalizados (GAMs) são a próxima parada. Um GAM mantém a função de ligação logística e a estrutura aditiva interpretável, mas substitui os termos lineares por funções suaves de cada preditor. Você ganha coeficientes-com-forma em vez de números únicos, resolvendo o problema da linearidade do logit. GAMs ainda são paramétricos o suficiente para inspecionar e interpretar, o que os torna um bom próximo passo quando a linearidade não pode se sustentar.
Modelos baseados em árvores são a alternativa mais flexível. Random forests e gradient boosting não fazem suposições sobre distribuições dos preditores nem sobre formatos de relação. Lidam com multicolinearidade e capturam não linearidade. Eles não fornecem a interpretação fácil de coeficientes da regressão logística, mas tendem a performar melhor em métricas preditivas quando os dados têm estrutura não linear ou interações que você não colocou no modelo.
A escolha entre GAMs e modelos de árvore depende do que você precisa do modelo.
- Escolha GAMs quando interpretabilidade é prioridade e você quer ver como cada preditor afeta o log das chances
- Escolha gradient boosting quando qualidade preditiva é prioridade e você aceita um modelo menos transparente
Vale dizer que os pressupostos da regressão logística são mais fáceis de checar do que ignorar. Se você consegue corrigir com uma transformação, um spline, regularização ou uma amostra melhor, a interpretabilidade e a inferência da logística geralmente superam o que você ganha ao migrar para um modelo mais flexível.
Então, vá para GAMs ou árvores quando os diagnósticos mostram que os pressupostos realmente não se sustentam, não só porque regressão logística não é o algoritmo mais moderno.
Boas práticas para modelagem com regressão logística
Por fim, siga esta lista curta para sempre ter um modelo confiável:
- Inspecione os pressupostos antes de interpretar: Rode VIF, teste de Box-Tidwell e diagnósticos de influência antes de ler os coeficientes. Se você interpreta primeiro e verifica depois, vai acabar defendendo números que não validou. Você não quer ser essa pessoa na reunião
- Use regularização quando a amostra for pequena: Ridge ou elastic net estabilizam coeficientes quando EPV é baixo ou preditores são correlacionados. A troca é um pequeno viés por uma grande redução de variância, que quase sempre compensa
- Valide em dados não vistos: Separe um conjunto de teste ou use validação cruzada. Métricas de treino superestimam desempenho sempre que há espaço para overfitting, e a logística tem quando você tem muitos preditores ou eventos raros
- Avalie a calibração: Acurácia esconde se suas probabilidades previstas batem com as taxas reais. Use log-loss ou Brier score, e olhe um gráfico de calibração quando probabilidades importam para decisões de negócio
Conclusão
Sinceramente, a regressão logística é um dos modelos mais tolerantes que você pode ajustar.
Ela tolera preditores assimétricos e desfechos desbalanceados, e não liga para a cara dos resíduos. O que ela não tolera é relação mal especificada com o log das chances ou um conjunto de preditores que carregam a mesma informação.
Por isso linearidade do logit e multicolinearidade são os dois checks que valem ser tratados como obrigatórios. São eles que distorcem o modelo de formas que nenhuma métrica de teste captura. Os outros quatro pressupostos também são relevantes, mas esses dois são onde você deve focar de verdade.
Para jogar seguro, rode os diagnósticos junto com a avaliação, não depois. Um modelo que prevê bem e passa nas checagens de pressupostos é um modelo que você pode bancar. Qualquer coisa abaixo disso é um modelo que você treinou, mas não verificou de verdade.
Se isso parece complexo, é porque é mesmo. Ser um bom engenheiro de machine learning exige bastante, então recomendamos que você se inscreva na nossa Machine Learning Scientist in Python track. São 85 horas de conteúdo para te deixar pronto para o mercado em 2026.
FAQs
A regressão logística tem pressupostos?
Sim. A regressão logística tem menos pressupostos do que a regressão linear, mas não é livre de pressupostos. Os principais cobrem o formato da variável de desfecho, a independência das observações, a linearidade do log das chances e a ausência de alta multicolinearidade ou pontos altamente influentes.
Quais são os pressupostos mais importantes da regressão logística?
Os dois que mais importam são a linearidade do logit e a ausência de alta multicolinearidade. A linearidade do logit é a mais mal compreendida, já que a regressão logística não assume relação linear entre preditores e desfecho, e sim entre preditores e o log das chances. A multicolinearidade importa porque distorce coeficientes e infla erros-padrão sem afetar a acurácia, então pode se esconder de qualquer verificação que olha só o desempenho preditivo.
O que acontece se os pressupostos da regressão logística forem violados?
Depende de qual pressuposto quebra. Violações da linearidade do logit ou multicolinearidade forte danificam silenciosamente os coeficientes enquanto deixam a acurácia intacta, por isso passam despercebidas. Falhas de independência inflacionam ou encolhem erros-padrão, tornando p-values não confiáveis. A maioria das violações não torna o modelo inútil, mas deixa partes dele pouco confiáveis de formas que só a acurácia não mostra.
A regressão logística exige preditores normalmente distribuídos?
Não. A regressão logística não impõe suposições de distribuição sobre os preditores. Você pode misturar preditores contínuos, categóricos, assimétricos e com caudas pesadas no mesmo modelo sem problema. O que importa é a relação entre cada preditor e o log das chances, não o formato marginal do próprio preditor.
Qual é um bom limiar de VIF para regressão logística?
Valores de VIF até 5 geralmente estão ok, valores entre 5 e 10 sugerem multicolinearidade moderada que merece investigação e valores acima de 10 sinalizam que um ou mais preditores são redundantes. Os limiares não são regras rígidas, mas convenções, já que a interpretação do VIF depende do tamanho da amostra e da precisão desejada. Se o VIF de um preditor é alto e seu erro-padrão parece instável entre subconjuntos de dados, há evidência de que a colinearidade está causando problema.
