Por um lado, a regressão linear é o alicerce para a predição de variáveis contínuas. Por outro, a regressão logística tem o mesmo peso, mas no contexto de modelos de classificação. Embora a regressão logística não seja a base sobre a qual se constroem os modelos preditivos mais avançados — como é o caso da regressão linear — , é possível afirmar, sem grandes dúvidas, que ela foi o modelo mais amplamente utilizado na história para problemas de classificação.
Assim como a regressão linear (e diferente de modelos mais sofisticados, como redes neurais ou árvores de decisão), a regressão logística mantém um forte potencial explicativo, além do poder preditivo. E, como bônus, ainda fornece a probabilidade de ocorrência de um evento.
Assim como no meu outro texto, sobre regressão linear, não entrarei em detalhes sobre o funcionamento interno do algoritmo. O foco aqui é a aplicação prática e a verificação das suposições que permitem uma análise confiável dos coeficientes e das variáveis explicativas. Decidi abordar esse tema porque tive muita dificuldade em superar o "platô" da curva de aprendizado: eu dominava a teoria e me sentia pronto para aplicar o modelo — até o momento em que precisei, de fato, aplicá-lo.
Ainda assim, alguns fundamentos são importantes para que, após o ajuste do modelo, a interpretação dos coeficientes seja mais clara (já que ela não é tão direta quanto na regressão linear).
De forma extremamente simplificada, o modelo logístico assume que a variável dependente Y representa uma probabilidade (de 0 a 1), onde 0 significa ausência da característica e 1, presença. O objetivo é obter uma equação de reta — sim, uma regressão linear, afinal a regressão logística é um modelo linear generalizado — que melhor se ajuste aos dados. Para isso, a probabilidade é transformada em log(chance) (ou log(odds), como é mais comumente encontrado): o valor 0 passa a ser −∞, o valor 1 passa a ser +∞, e o ponto médio de probabilidade (50%) passa a corresponder ao centro da escala (0). Assim, a equação linear pode ser ajustada como:

Diferentemente da regressão linear tradicional, os coeficientes não podem ser estimados pelo método dos mínimos quadrados (least squares). Essa técnica se baseia na distância entre os valores preditos e observados (os resíduos). Como a transformação para o log(odds) leva os extremos (0 e 1) a ±∞, essa abordagem não é adequada. Em vez disso, utiliza-se o método da máxima verossimilhança (maximum likelihood estimation), que busca os parâmetros que tornam os dados observados mais prováveis.
Uma vez ajustada a equação que melhor separa as classes, é necessário retornar à escala probabilística (0–1). Isso é feito aplicando a função logística, também chamada de função resposta:

DADOS
Os dados utilizados neste estudo foram obtidos no repositório Health Risk Prediction (Anonymized Real Data), disponível no Kaggle.
Após a seleção dos registros com valores de oxigenação (O₂) na mesma escala, obtivemos o seguinte DataFrame:

Como de costume, transformamos as variáveis categóricas em variáveis dummies (indicadoras), utilizando k — 1 categorias para cada variável, a fim de evitar o problema da multicolinearidade perfeita no ajuste do modelo:

Ao inspecionar os dados, é possível notar um certo desbalanceamento entre as classes. No entanto, como o objetivo aqui é apenas demonstrar a aplicação mais básica da regressão logística — isto é, a classificação binária — , optamos por agrupar as variáveis de risco em dois grandes grupos:
- pacientes com baixo risco à saúde (0)
- pacientes com alto risco à saúde (1)
Esse agrupamento resulta em um conjunto mais equilibrado entre as classes:

Caso o desbalanceamento entre classes permanecesse significativo, poderíamos empregar algumas estratégias de balanceamento, como:
Undersampling (redução da classe majoritária)
Oversampling (aumento da classe minoritária)
Antes de prosseguir para o ajuste do modelo, é importante verificar se os pressupostos da regressão logística são atendidos — isto é, se o modelo é adequado para os dados em questão. Os principais são:
- A variável dependente (Y) deve ser binária (ou categórica, no caso de modelos multiclasse).
- As variáveis independentes (X), quando contínuas, devem ter relação linear com o logaritmo das chances (log(odds)) da variável dependente.
- Ausência de multicolinearidade entre as variáveis explicativas.
- Independência dos registros (as observações não devem ser correlacionadas entre si).
- Tamanho amostral suficiente.
Assim como na regressão linear, algumas dessas suposições só podem ser verificadas após o ajuste do modelo. Portanto, começaremos avaliando aquelas que podem ser testadas antes da modelagem propriamente dita.
1. O resultado (Y) deve ser binário (ou categórico, no caso de modelos multiclasse)
Esse requisito é claramente atendido, já que converti as categorias originais em uma variável binária — representando pacientes com baixo risco (0) e alto risco (1) à saúde. Dessa forma, a variável dependente está no formato adequado para a aplicação da regressão logística binária.
3. Ausência de multicolinearidade
O primeiro passo para avaliar a presença de multicolinearidade é verificar se há correlações fortes entre as variáveis independentes. Uma alta correlação entre preditores pode indicar redundância de informação e instabilidade nas estimativas dos coeficientes.

Observa-se que algumas variáveis apresentam correlação moderada a forte, como Respiratory_Rate, Oxygen_Saturation, Systolic_BP, Heart_Rate, Temperature e Consciousness_A.
Para confirmar se essa correlação representa de fato multicolinearidade significativa, aplicamos o teste de Fator de Inflação da Variância (VIF — Variance Inflation Factor). Os resultados foram os seguintes:
- Respiratory_Rate → 2.44
- Oxygen_Saturation → 2.06
- Systolic_BP → 2.25
- Heart_Rate → 2.48
- Temperature → 1.99
- Consciousness_A → 2.62
- Consciousness_C → 1.19
- Consciousness_P → 1.54
- Consciousness_U → 1.75
- On_Oxygen_1 → 1.30
Todos os valores ficaram abaixo de 5, indicando que não há multicolinearidade preocupante. Correlações moderadas entre variáveis fisiológicas são esperadas e, neste caso, aceitáveis.
✅ Resultado: multicolinearidade descartada.
🔗 Para mais detalhes sobre como interpretar o teste VIF, confira este outro texto: Do linear ao não linear: explorando modelos de regressão na prática
4. Os registros devem ser independentes entre si
Neste caso, cada registro do conjunto de dados representa um paciente distinto. Não há medições repetidas (antes e depois) ou observações agrupadas por indivíduo. Portanto, podemos presumir com segurança que as observações são independentes entre si — ou seja, a medição de um paciente não influencia a medição de outro.
Ainda assim, após o ajuste do modelo, podemos aplicar métodos estatísticos específicos para verificar mais formalmente a independência dos resíduos e confirmar se essa suposição realmente se mantém.
5. A amostra deve ser suficientemente grande
Por fim, é importante garantir que a amostra seja grande o bastante para permitir estimativas estáveis e significativas dos coeficientes. Uma forma simples de verificar isso é avaliar se cada variável independente (X) possui observações suficientes em cada categoria do desfecho (Y).
Neste ponto, não entrarei em detalhes sobre essa verificação, pois o impacto da tamanho amostral insuficiente ficará mais claro ao analisarmos o modelo ajustado — quando certas limitações podem se manifestar diretamente nos resultados.
Ajuste do modelo e avaliação pós-ajuste
Agora podemos ajustar o modelo para avaliar as chamadas suposições "póstumas" — aquelas que só podem ser verificadas após o treinamento.
Como ponto de corte (threshold), adotaremos o valor padrão: probabilidade ≥ 0,5 → classe 1, já que a variável resposta não é rara neste conjunto de dados.
💡 Nota: em um cenário real, seria essencial aplicar etapas adicionais de validação — como divisão do conjunto em treino e teste e validação cruzada — para garantir a robustez do modelo. No entanto, essas técnicas não são o foco deste texto e, portanto, não foram implementadas aqui.
No modelo ajustado, temos:
- X = Respiratory_Rate, Oxygen_Saturation, Systolic_BP, Heart_Rate, Temperature, Consciousness_A, Consciousness_C, Consciousness_P, Consciousness_U, On_Oxygen_1
- y = Risk_Level_binary
Avaliando o desempenho do modelo
A avaliação do ajuste na regressão logística difere um pouco das métricas utilizadas na regressão linear.
O primeiro indicador é a acurácia, que representa a proporção de casos classificados corretamente:

Acurácia = 0,9783 → um resultado excelente, indicando que o modelo acerta cerca de 98% das previsões.
A seguir, analisamos a matriz de confusão, que mostra em quais casos o modelo está acertando e onde ele erra:

Com base na frequência de verdadeiros positivos, verdadeiros negativos, falsos positivos e falsos negativos, podemos calcular outras métricas complementares — precisão, sensibilidade e especificidade:

- Precisão: 0,9825

- Sensibilidade: 0,9761

- Especificidade: 0,9737
Do ponto de vista preditivo, há sempre um equilíbrio delicado: capturar mais casos positivos (1's) costuma implicar classificar incorretamente alguns casos negativos (0's). O modelo ideal é aquele que identifica corretamente a maior parte dos 1's sem sacrificar a correta classificação dos 0's.
Para visualizar esse equilíbrio, utilizamos a curva ROC (Receiver Operating Characteristic) e calculamos a área sob a curva (AUC), que mede o poder discriminativo do modelo:

A curva ROC mostra o desempenho do modelo para diferentes pontos de corte (thresholds). No eixo x temos a taxa de falsos positivos (FPR) e, no eixo y, a taxa de verdadeiros positivos (TPR).
- Cada ponto da curva representa um equilíbrio diferente entre capturar positivos e evitar falsos positivos.
- Quanto mais próxima do canto superior esquerdo estiver a curva, melhor o modelo.
A AUC (Área sob a Curva ROC) resume o desempenho do modelo em um único número entre 0 e 1:
- AUC = 0,5 → modelo sem poder discriminativo (equivalente a um chute aleatório).
- AUC = 1,0 → modelo perfeito, capaz de separar todas as classes corretamente.
- Quanto mais próxima de 1, melhor a capacidade do modelo de diferenciar entre 0 e 1.
Avaliações "póstumas" das suposições
2. Relação linear entre variáveis contínuas (X) e log(odds) de Y
A primeira suposição que podemos avaliar após o ajuste do modelo é a linearidade entre as variáveis contínuas (X) e o logaritmo das chances (log(odds)) da variável dependente. Uma maneira de testar isso é com o teste de Box-Tidwell.
Infelizmente, não existe uma implementação nativa em Python para esse teste. Para contornar isso, utilizei o código disponibilizado por Kenneth Leung (link aqui).
O resultado indicou que a variável Respiratory_Rate apresenta uma relação não linear com log(odds) (p < 0,05), sugerindo que essa suposição não é atendida para esse preditor.

Ajustando variáveis não lineares
Para lidar com a não linearidade, é possível aplicar transformações matemáticas à variável, como:
- Logaritmo
- Quadrado
- Raiz quadrada
No caso, apliquei as três transformações e comparei os modelos usando a métrica AIC (Akaike Information Criterion).
A transformação com quadrado retornou o melhor ajuste segundo o AIC.
No entanto, ao verificar as métricas convencionais de desempenho, observamos um desequilíbrio significativo:
- Acurácia: 0,97 → 0,47
- AUC: 0,99 → 0,74
Isso mostra que, embora a transformação tenha melhorado o ajuste estatístico em termos de AIC, o modelo perdeu capacidade preditiva, tornando a transformação não prática para este conjunto de dados.
Além disso, a análise visual sugere que a relação até que se aproxima de uma linha reta… ou pelo menos meu cérebro insiste em acreditar nisso.

4. Os registros devem ser independentes entre si
Além da avaliação prévia — em que verificamos que cada registro se refere a um paciente distinto, sem medições antes/depois — , podemos usar o teste de Durbin-Watson para avaliar formalmente a independência entre os registros do conjunto de dados.
A interpretação geral do teste é a seguinte:
- ≈ 2 → resíduos independentes
- < 1,5 → autocorrelação positiva
- > 2,5 → autocorrelação negativa
No nosso caso, o teste retornou 2,036, indicando que os registros são independentes entre si.
✅ Em resumo, não há indícios de dependência entre observações, o que confirma que esta suposição está atendida.
Avaliação de registros influentes
Antes de seguirmos para o clímax da análise, uma suposição que deve ser avaliada é a presença de registros influentes no conjunto de dados, ou seja, observações que podem impactar significativamente os coeficientes e o ajuste do modelo.
No nosso caso, temos alguns:

Sempre que identificamos pontos influentes, o recomendado é seguir alguns passos:
1️⃣ Investigar o registro: verificar se se trata de um erro de digitação ou medição (por exemplo, valores claramente fora da realidade) ou se é um caso extremo real, como um paciente crítico, mas válido.
2️⃣ Decidir a ação apropriada:
- Se for erro de dado, corrigir ou remover é a escolha adequada.
- Se for um caso extremo válido, não se deve remover automaticamente. Nesse caso, é melhor:
- Ajustar o modelo usando métodos robustos (GLM com family Binomial e robust SE),
- Testar o impacto do registro influente comparando modelos com e sem ele,
- Reportar no estudo que a observação exerce influência sobre o modelo.
3️⃣ Reajustar o modelo: qualquer alteração nos registros — correção ou remoção — exige reajuste do modelo, já que coeficientes, odds ratios e métricas preditivas podem mudar significativamente. Sempre compare:
- Coeficientes (β)
- Odds ratios
- Sensibilidade / especificidade
- AUC da ROC
No nosso caso, os registros influentes são válidos, pois os valores das medições estão dentro da faixa clínica esperada. Por isso, foram mantidos no modelo, mesmo apresentando influência, garantindo que o ajuste reflita corretamente a realidade clínica do conjunto de dados.
Até agora, tudo certo: as suposições previamente avaliadas foram atendidas ou, quando necessário, potencialmente corrigidas. Falta agora verificar a última suposição:
5. A amostra deve ser suficientemente grande
Em conjuntos de dados enormes, essa suposição muitas vezes se torna pouco relevante. Entretanto, nosso conjunto não é dos maiores, então precisamos considerar algumas regras práticas. A mais comum é garantir um mínimo de 10 a 30 casos no desfecho menos frequente do modelo.
No entanto, podemos avaliar essa suposição de uma forma mais direta no nosso modelo, observando os coeficientes ajustados:

Note que alguns coeficientes são extremamente altos, o que pode indicar fenômenos conhecidos como complete separation ou quasi-complete separation. Além disso, a biblioteca retorna o seguinte alerta:
Possibly complete quasi-separation: A fraction 0.63 of observations can be perfectly predicted. This might indicate that there is complete quasi-separation. In this case some parameters will not be identified.
De forma simples, isso significa que uma variável preditora ou uma combinação de preditoras separa completamente os resultados da variável dependente. Ou seja, basta identificar essa variável para prever o desfecho sem erro: se ela está presente, Y=0; se não, Y=1.
No nosso modelo, esse comportamento parece estar relacionado às variáveis de Consciousness. Uma análise com tabelas de contingência confirma isso:
Consciousness_A

Repare que todos os casos em que Consciousness_A = False estão associados a Y=1. Em outras palavras, se Consciousness_A = False, não precisamos de um modelo para prever o risco — o paciente já está classificado como de alto risco.
Isso se reflete nas variáveis de consciência alterada: Consciousness_V = True, Consciousness_C = True, Consciousness_P = True ou Consciousness_U = True. Sempre que há alguma alteração na consciência, o desfecho é Y=1, o que explica os coeficientes altos e o alerta de quasi-complete separation.
Como corrigir?
Existem algumas alternativas para lidar com o problema de complete ou quasi-complete separation:
- Aumentar o conjunto de dados — adicionando mais observações para reduzir casos de separação perfeita.
- Combinar variáveis — por exemplo, agrupar categorias de consciência alterada versus consciência não alterada.
- Remover variáveis problemáticas — descartando preditores que causam separação completa.
- Aplicar penalização ao modelo — regularização, que ajusta os coeficientes de forma controlada.
A abordagem mais indicada é aplicar um modelo penalizado (CLARK; BLANCHARD; HUI; TIAN; WOODS, 2023), pois ela mantém todas as informações do conjunto e não exige uma nova amostragem, que nem sempre é viável.
No nosso caso, aplicando a penalização L2, os coeficientes foram ajustados e ficaram assim:

✅ Essa estratégia permite controlar os efeitos de variáveis altamente influentes sem perder dados importantes, mantendo a interpretabilidade e a estabilidade do modelo.
Ainda observamos alta influência da variável Temperature. Ao analisar com mais atenção, percebemos que valores acima de 38,7 ºC estão sempre associados a Y=1.
Para lidar com isso de forma prática, podemos transformar a temperatura em uma variável binária:
- Febre: > 37,5 ºC
- Não febre: ≤ 37,5 ºC
Após essa transformação, os coeficientes do modelo se tornam mais interpretáveis e refletem melhor o raciocínio clínico: ter febre aumenta o risco, mas não determina sozinho o desfecho do paciente.

✅ Com essa abordagem, mantemos a informação clínica relevante e controlamos a influência excessiva da variável, tornando o modelo mais estável e intuitivo.
Como interpretar os coeficientes?
Algo que a regressão logística tem parecido com a regressão linear é a sua interpretabilidade. Os coeficientes nos dizem algo:
- Intercepto (β = 0,310; OR = 1,36): representa a probabilidade base de risco elevado quando todas as variáveis estão em seus valores de referência.
- Frequência respiratória (β = 0,535; OR = 1,71): cada aumento de 1 unidade na frequência respiratória está associado a um acréscimo de aproximadamente 71% nas chances de risco elevado.
- Saturação de oxigênio (β = -0,925; OR = 0,40): cada aumento de 1 ponto percentual na saturação de O₂ reduz em cerca de 60% as chances de risco elevado.
- Pressão arterial sistólica (β = -0,145; OR = 0,86): cada aumento de 1 mmHg na pressão sistólica diminui em torno de 14% as chances de risco elevado.
- Frequência cardíaca (β = 0,135; OR = 1,14): cada aumento de 1 bpm eleva em cerca de 14% a probabilidade de risco elevado.
- Temperatura corporal (β = 0,991; OR = 2,69): pacientes com febre (>37,5 °C) apresentam aproximadamente 2,7 vezes mais chances de risco elevado.
- Nível de consciência "Alerta" (β = -0,575; OR = 0,56): pacientes alertas têm cerca de 44% menos chances de risco elevado, em comparação à categoria de referência (resposta à estímulo verbal).
- Nível de consciência "Confuso" (β = 0,183; OR = 1,20): o estado de confusão está associado a 20% mais chances de risco elevado, em relação à resposta verbal.
- Nível de consciência "Resposta à dor" (β = 0,093; OR = 1,10): responder apenas à dor aumenta em cerca de 10% as chances de risco elevado.
- Nível de consciência "Inconsciente" (β = 0,547; OR = 1,73): a inconsciência eleva em cerca de 73% as chances de risco elevado, comparado à resposta verbal.
- Uso de oxigênio suplementar (β = 0,938; OR = 2,55): pacientes em uso de O₂ têm aproximadamente 2,5 vezes mais chances de apresentar risco elevado.
Conclusão
A regressão logística é uma ferramenta poderosa, não apenas para predição, mas também para interpretação de fatores de risco. No entanto, para que os resultados sejam confiáveis, é essencial avaliar e, quando necessário, corrigir as suposições do modelo: linearidade do logit, ausência de multicolinearidade, independência dos registros e tamanho amostral adequado.
Além disso, lidar com registros influentes e variáveis que provocam separação completa garante que o modelo reflita a realidade clínica de forma robusta e interpretável. Com cuidados simples, como transformações binárias de variáveis ou modelos penalizados, podemos equilibrar precisão preditiva e significado clínico, tornando a regressão logística uma ferramenta confiável e prática para análise de risco.
Referências
CLARK, Robert G.; BLANCHARD, Wade; HUI, Francis K.C.; TIAN, Ran; WOODS, Haruka. Dealing with complete separation and quasi-complete separation in logistic regression for linguistic data. Research Methods In Applied Linguistics, v. 2, n. 1, p. 100044, abr. 2023. Elsevier BV. http://dx.doi.org/10.1016/j.rmal.2023.100044.