Ir al contenido principal

Supuestos de la regresión logística: qué debes comprobar antes de modelar

Una guía práctica de los supuestos de la regresión logística, los diagnósticos que detectan incumplimientos en Python y R, y las alternativas cuando no se cumplen.
Actualizado 15 jun 2026  · 15 min leer

Después de entrenar un modelo de regresión logística, ¿cómo puedes estar seguro de que puedes fiarte de los coeficientes?

La regresión logística es conocida por su sencillez. Con scikit-learn, llamas a .fit(), lees los odds ratios y listo. Pero lo que muchos principiantes no saben es que el modelo tiene sus propios supuestos y, si no los respetas, los coeficientes te pueden llevar a error y las predicciones fallan de formas que ningún métrico te va a señalar.

En realidad, la regresión logística tiene menos supuestos que la regresión lineal, y los que tiene son fáciles de comprobar. Solo necesitas ejecutar los diagnósticos adecuados antes de interpretar la salida para saber qué partes del modelo son fiables.

En este artículo, te guiaré por cada supuesto de la regresión logística, cómo comprobar cada uno en Python y R, qué pasa cuando se incumplen y a qué alternativas recurrir cuando no se pueden respetar.

Si estás empezando en data science y machine learning, lee nuestro artículo sobre Simple Linear Regression para entender sus supuestos y diagnósticos.

¿Qué es la regresión logística?

La regresión logística es un modelo de clasificación que predice la probabilidad de un resultado categórico. Le das predictores y devuelve un número entre 0 y 1 que puedes leer como la probabilidad de pertenecer a una clase determinada.

La mayoría la usa para clasificación binaria: churn o no churn, spam o no spam. Variantes como la regresión logística multinomial y ordinal cubren más de dos clases, pero el caso binario es lo que la mayoría quiere decir cuando habla de "logistic regression".

Por debajo, el modelo ajusta una combinación lineal de tus predictores y pasa el resultado por la función logística. La salida es una probabilidad y los coeficientes te indican cómo cada predictor desplaza los log-odds.

Conviene señalar que la regresión logística es distinta de la lineal. La segunda tiene supuestos conocidos como normalidad de los residuales, homocedasticidad y linealidad entre predictores y objetivo. La regresión logística no hace esos supuestos. Tiene su propia lista, y son lo bastante diferentes como para que usar los supuestos de una regresión lineal te lleve a conclusiones erróneas.

Para más detalles sobre regresión logística, lee nuestro artículo que muestra su implementación en Python.

Por qué importan los supuestos de la regresión logística

Los supuestos importan porque se conectan directamente con lo que haces con el modelo.

Si respetas los supuestos, los coeficientes significan lo que crees que significan. Los odds ratios que lees son válidos y las probabilidades del modelo se ajustan bien a los resultados reales. Cuando los supuestos no se respetan, todo eso se tambalea de formas que una matriz de confusión u otra métrica no te mostrarán.

La buena noticia es que las violaciones no son binarias. Un desvío leve, por ejemplo, del supuesto de linealidad del logit no hará que tu modelo sea inútil. Simplemente significa que tus odds ratios están algo desplazados y tus predicciones pueden ser peores de lo que deberían. Muchos modelos en producción conviven con comprobaciones de supuestos imperfectas, y no pasa nada.

Lo que no quieres es saltarte las comprobaciones. Sin diagnósticos, no puedes saber si te enfrentas a un problema pequeño o grande hasta que las predicciones fallan.

Resumen de los supuestos de la regresión logística

Antes de entrar en cada supuesto, aquí tienes la lista completa que debes revisar.

Supuesto Qué exige Diagnóstico habitual
Observaciones independientes Ningún registro influye en otro Diseño del estudio, correlación intraclase
Variable objetivo adecuada Binaria, o modelada con la variante correcta Inspeccionar el objetivo
Linealidad del logit Predictores lineales en los log-odds Prueba de Box-Tidwell, splines
Sin multicolinealidad grave Predictores no fuertemente correlacionados VIF, matriz de correlaciones
Tamaño de muestra suficiente Suficientes eventos por variable Regla heurística EPV
Sin atípicos influyentes Ningún registro sesga el ajuste Distancia de Cook, leverage

Tabla de supuestos de la regresión logística

Esa es toda la lista. En el resto del artículo te explicaré cada supuesto con diagnósticos en Python y R, cómo se ve una violación y qué hacer cuando algo falla.

Los supuestos principales de la regresión logística

Supuesto 1: la variable objetivo es binaria (o está modelada adecuadamente)

La regresión logística estándar está pensada para un resultado binario. La variable objetivo debe tener exactamente dos categorías, y el modelo se ha diseñado para ese caso.

Los ejemplos clásicos son churn o no churn, enfermedad o no enfermedad. Cualquier cosa que puedas formular como una pregunta de sí/no encaja bien.

Cuando tu resultado tiene más de dos categorías, necesitas otra variante. La regresión logística multinomial maneja categorías no ordenadas como segmentos de cliente o tipos de producto. La regresión logística ordinal maneja categorías ordenadas como puntuaciones de satisfacción del 1 al 5, donde el orden tiene significado.

Forzar un resultado multiclase en un modelo binario suele implicar colapsar categorías que no deberías. Si tienes un objetivo de satisfacción con cinco niveles y lo reduces a "satisfecho vs. no", pierdes información que podría haber ayudado al modelo. Elige la variante que se ajuste a la forma de tu objetivo.

Supuesto 2: las observaciones son independientes

Cada fila de tu dataset debería aportar al modelo información que ninguna otra fila ya aporte. Si dos registros están relacionados de una forma que viole esto, tus errores estándar y p-values no significarán lo que deberían.

El supuesto falla siempre que las observaciones compartan estructura que no has modelado. Un buen ejemplo son medidas repetidas del mismo paciente, ya que comparten su biología. Otro ejemplo son estudiantes agrupados en la misma clase, ya que comparten profesor y aula.

Si ignoras esto y ajustas una regresión logística simple, el modelo trata cada fila como información nueva y reduce más de la cuenta los errores estándar. Los coeficientes pueden parecer correctos a simple vista, pero los p-values y los intervalos de confianza serán demasiado optimistas.

Las alternativas estándar son la regresión logística de efectos mixtos y GEE. Los modelos de efectos mixtos añaden efectos aleatorios para los grupos (paciente, aula) para que el modelo tenga en cuenta la correlación intragrupo. GEE, siglas de generalized estimating equations, te da efectos promedio poblacionales con errores estándar corregidos, sin la maquinaria de efectos aleatorios.

Elige efectos mixtos cuando te importe la variación dentro de los grupos. Elige GEE cuando quieras efectos marginales a nivel global.

Supuesto 3: linealidad del logit

Este es el supuesto que más se malinterpreta en regresión logística.

El modelo no asume que tus predictores tengan una relación lineal con el resultado. Asume que tienen una relación lineal con los log-odds del resultado. Es una afirmación distinta y cambia lo que debes comprobar.

Qué es el logit

El logit es el logaritmo natural de los odds. Para una probabilidad p, los odds son p / (1 - p), y el logit es el logaritmo de ese cociente:

The logit

El logit

La regresión logística ajusta entonces una ecuación lineal en esta escala:

Logistic regression formula

Fórmula de la regresión logística

El lado derecho es lineal en los predictores. El lado izquierdo son los log-odds, no la probabilidad. La probabilidad que realmente te importa se recupera pasando la combinación lineal por la función logística, que es no lineal.

Así que la relación entre cualquier predictor y la probabilidad es no lineal. Lo que debe ser lineal es la relación entre cualquier predictor y los log-odds.

Por qué importa en la práctica

Cuando la linealidad del logit no se cumple para algún predictor, el coeficiente de ese predictor resume una curva con una línea recta. El modelo sigue devolviendo un número, y puede ser incluso estadísticamente significativo, pero no describe la relación real en tus datos.

Por ejemplo, age podría tener un efecto en U sobre los log-odds de una enfermedad, con riesgo alto en ambos extremos y menor en el centro. Si metes age como un único término lineal, el coeficiente podría salir cercano a cero y concluirías que la edad no importa. Sí importa. La especificación es incorrecta.

Cómo comprobar la linealidad del logit

Tienes varias opciones para comprobar este supuesto.

La comprobación más rápida es visual. Agrupa cada predictor continuo en deciles, calcula los log-odds empíricos en cada bin y representa el resultado frente al predictor. Una línea aproximadamente recta significa que el supuesto se cumple. Una curva clara significa que no. La comprobación es informal, pero funciona bien cuando tienes suficientes datos por bin.

La prueba de Box-Tidwell añade un término de interacción entre cada predictor continuo y su propio logaritmo natural. Si la interacción es estadísticamente significativa, el supuesto de linealidad del logit se incumple para ese predictor. La prueba solo funciona con predictores estrictamente positivos (no puedes tomar el logaritmo de cero o un número negativo) y, como cualquier prueba de significación, es sensible al tamaño muestral.

Los splines son otra opción. En lugar de comprobar si se cumple la linealidad, sustituyes el término lineal por una base flexible como un spline cúbico restringido y dejas que el modelo ajuste la forma que necesita. Si el spline ajusta mucho mejor que el término lineal (según la razón de verosimilitudes o el AIC), tienes evidencia de que la especificación lineal era demasiado restrictiva. Los splines también sirven como solución. Mantenerlos en el modelo final suele ser la mejor respuesta cuando la linealidad falla.

Qué hacer cuando falla la linealidad

Si el supuesto falla para un predictor, tienes un par de opciones:

  • Transforma el predictor (un logaritmo o una raíz cuadrada suelen bastar) hasta que la relación parezca lineal en los log-odds
  • Usa splines y acepta un modelo ligeramente más complejo

Ambas opciones te mantienen en la familia de la regresión logística y son mejores que excluir un predictor que en realidad aporta información.

Supuesto 4: sin multicolinealidad grave

La regresión logística tolera predictores correlacionados hasta cierto punto. A partir de ahí, el modelo empieza a comportarse mal de formas difíciles de detectar con métricas.

La multicolinealidad aparece cuando dos o más predictores contienen la misma (o muy similar) información. Tal vez tengas altura en pulgadas y altura en centímetros en el mismo modelo. O quizá ingresos totales e ingresos por cliente junto con el número de clientes.

Con multicolinealidad pasan dos cosas:

  • Los coeficientes se vuelven inestables: si añades o quitas una sola fila, el coeficiente de un predictor colineal puede oscilar o cambiar de signo. El modelo sigue funcionando, pero los coeficientes individuales dejan de ser interpretables.
  • Se inflan los errores estándar: con menos información independiente por predictor, el modelo está menos seguro de cada coeficiente. Suben los p-values y efectos reales pueden aparecer como no significativos.

Las predicciones suelen ir bien. Si solo te preocupa la probabilidad predicha, una multicolinealidad leve o moderada rara vez causa problemas. El "daño" se concentra en los coeficientes y en la inferencia que haces sobre ellos.

Las dos comprobaciones son la matriz de correlaciones y el factor de inflación de la varianza (VIF). Una matriz de correlaciones es lo primero que mirar, especialmente pares de predictores con correlaciones por encima de 0,8 o 0,9 en valor absoluto. La limitación es que solo detecta colinealidad por pares, no el caso multivía donde tres o más predictores son colectivamente redundantes.

El VIF sirve para el caso multivía. Para cada predictor, el VIF mide cuánto se infla la varianza de su coeficiente por la colinealidad con el resto. Un VIF de 1 significa ausencia de colinealidad, valores hasta 5 suelen estar bien y valores por encima de 10 señalan claramente que el predictor es redundante con otros del modelo.

Cuando el VIF señala algo, lo más fácil es eliminar uno de los predictores colineales o combinarlos en una única variable (por ejemplo, suma o ratio). Si prefieres mantenerlos, la regularización (ridge o elastic net) estabiliza los coeficientes sin obligarte a elegir.

Supuesto 5: tamaño de muestra adecuado

La regresión logística funciona con muestras pequeñas, pero es algo inestable. Los coeficientes oscilan más de la cuenta y los efectos de clases raras son casi imposibles de estimar.

El tamaño de muestra que importa aquí no es el número total de filas. Es el número de eventos (observaciones en la clase minoritaria). Un dataset con 100.000 filas y 50 casos de fraude es un problema de muestra pequeña, porque el modelo solo tiene 50 ejemplos del fenómeno que intenta aprender.

Ahí entra en juego los eventos por variable (EPV). EPV es el número de observaciones de la clase minoritaria dividido por el número de predictores del modelo. Si tienes 50 fraudes y 10 predictores, tu EPV es 5.

La vieja regla decía EPV de al menos 10. Trabajos de simulación más recientes muestran que el número adecuado depende del tamaño de los efectos en tus datos y de la regularización que uses. EPV de 5 pueden bastar en algunos casos y EPV de 20 o más pueden ser necesarios en otros.

La conclusión: trata el EPV como una señal de advertencia. Por debajo de 10, espera estimaciones inestables y considera métodos penalizados como la regresión logística de Firth o ridge. Por debajo de 5, consigue más datos o simplifica el modelo antes de fiarte de cualquier coeficiente.

El desbalance de clases es un problema relacionado pero distinto.

Un dataset donde el 99% de los casos son de una clase puede seguir teniendo suficientes eventos por variable en términos absolutos. Lo que cambia es la tasa base del resultado, no el EPV. Los datos desbalanceados tienden a producir estimaciones de probabilidad conservadoras y la accuracy deja de ser útil. Para sortearlo, evalúa con log-loss o Brier score en lugar de accuracy y considera pesos por clase o ajuste del umbral si necesitas decisiones equilibradas.

Supuesto 6: sin atípicos muy influyentes

La regresión logística no asume que tus predictores sigan una distribución normal. Predictores sesgados y variables de conteo no son un problema por sí solos. Lo que sí importa es si alguna observación tiene una influencia desproporcionada en los coeficientes ajustados.

Una observación influyente es aquella que, si la eliminas, cambia de forma apreciable el modelo. No es lo mismo que un residual atípico. Un punto puede tener un residual grande (el modelo lo predice mal) sin ser influyente, y puede ser muy influyente (el modelo se apoya mucho en él) sin tener un residual grande.

Querrás varios diagnósticos que miren distintos aspectos de la influencia:

  • Leverage mide lo inusuales que son los valores de los predictores de una observación respecto al resto. El leverage por sí solo no implica que una observación sea influyente. Indica que el punto puede serlo si su resultado no encaja con lo que sugieren sus predictores
  • Distancia de Cook combina leverage y residual en un único número que estima cuánto cambiarían los coeficientes ajustados si eliminas la observación. Valores grandes señalan puntos a investigar. Las convenciones habituales son valores por encima de 4/n (donde n es tu tamaño muestral) o fijarse en los mayores valores de tu dataset
  • Diagnósticos de residuales para los casos que no detectan leverage y Cook. Los residuales de devianza y de Pearson señalan observaciones que el modelo no logra ajustar bien. Un punto con residual grande merece atención aunque su leverage sea moderado: el modelo te está diciendo que no puede explicarlo con los otros predictores

Cuando encuentres un punto influyente, la pregunta es si el punto es real o está mal. Un error de introducción de datos se corrige o elimina. Un caso real pero inusual se queda, y anotas que tus conclusiones dependen de él. No excluyas puntos solo por ser influyentes: así terminas con un modelo que se ajusta a tu entrenamiento y a nada más.

Ideas equivocadas frecuentes sobre los supuestos de la regresión logística

Gran parte de la confusión viene de aplicar la lista de la regresión lineal. Sus supuestos son conocidos y se enseñan en todas partes, y se cuelan en la logística donde no tocan. Aquí van los cuatro más comunes para despejarlos.

La regresión logística requiere variables normalmente distribuidas

Falso. La regresión logística no hace ningún supuesto de normalidad sobre ninguna variable del modelo.

La variable de salida debe ser binaria, no normal, como vimos en el supuesto 1. Los predictores tampoco se asumen normales y pueden tener la forma que tenga el dato. Lo que importa es la relación entre predictores y log-odds, no la distribución marginal de cada variable.

La regresión logística requiere homocedasticidad

También es falso. La homocedasticidad (varianza constante de los residuales a lo largo del rango de valores predichos) es un supuesto de la regresión lineal que no aplica a la logística.

La varianza del resultado en regresión logística depende de la probabilidad predicha. Para un resultado Bernoulli, la varianza es p(1 - p), máxima cerca de p = 0.5 y mínima cerca de 0 y 1. La varianza no es constante, y el modelo lo tiene en cuenta en la función de verosimilitud que maximiza.

Así que, cuando ajustas una regresión logística, no violas nada por tener probabilidades predichas con varianzas distintas. Es como debe ser el modelo.

Los predictores deben ser normales

Falso. La regresión logística no impone supuestos de distribución sobre los predictores.

Puedes mezclar predictores continuos, binarios, de conteo y categóricos en el mismo modelo. Predictores sesgados o de colas pesadas no son problema. Al modelo no le importan las formas marginales. Lo único que le importa es la linealidad del logit (supuesto 3), que es un supuesto sobre la forma de la relación, no de la distribución.

Si la asimetría de un predictor genera problemas, suele ser por la linealidad del logit o por atípicos influyentes.

Los residuales deben ser normales

Falso. No hay supuesto de normalidad sobre los residuales en regresión logística.

La regresión lineal asume residuales normalmente distribuidos alrededor de cero, porque así funciona su inferencia. La logística usa estimación de máxima verosimilitud con una verosimilitud binomial, y la distribución de sus residuales viene determinada por el resultado (0 o 1) y la probabilidad ajustada. No son normales ni deben serlo.

Así que, cuando revises diagnósticos de residuales en logística (como en el supuesto 6), buscas observaciones influyentes y puntos que el modelo no explica, no una campana.

Cómo comprobar los supuestos de la regresión logística en Python

Haré los diagnósticos con statsmodels. Scikit-learn ajusta regresión logística pero no te da VIF, estadísticas de influencia ni diagnósticos de residuales de serie.

Preparación del ejemplo

Generaré un dataset sintético de churn con tres predictores (edad, ingresos y spending score), donde edad e ingresos están correlacionados a propósito para que haya multicolinealidad 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())

Model summary

Resumen del modelo

El resumen te da coeficientes, errores estándar, estadísticos z y p-values. age y spending_score salen como predictores relevantes. El coeficiente de income es diminuto porque el resultado no depende directamente de ingresos. Su aparente efecto lo absorbe la edad.

Multicolinealidad con VIF

Statsmodels lo hace facilísimo:

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"])

VIF output

Salida de VIF

Los VIF de age e income rondan 5,5, lo que indica multicolinealidad leve. spending_score sale cerca de 1, que es lo deseable: su varianza no está inflada por colinealidad con otros. VIF por encima de 5 son avisos leves; por encima de 10 es un problema serio que debes resolver ya. Aquí lo lógico es quitar age o income o combinarlos en una sola variable.

Linealidad del logit con Box-Tidwell

La prueba de Box-Tidwell añade términos de interacción entre cada predictor continuo y su logaritmo natural. Interacciones significativas señalan una relación no lineal en los log-odds para ese predictor.

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])

Box-Tidwell output

Salida de Box-Tidwell

Si alguno de estos p-values sale por debajo de 0,05, el supuesto de linealidad del logit es dudoso para ese predictor. Aquí el logit se generó linealmente, así que las interacciones no deberían ser significativas. En datos reales, trata un resultado significativo como señal para graficar los log-odds empíricos frente a ese predictor y decidir si conviene una transformación o un spline.

Diagnósticos de influencia

Statsmodels te da acceso a la distancia de Cook y al leverage con 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)

Influence diagnostics output

Salida de diagnósticos de influencia

El umbral de la distancia de Cook que merece investigación es aproximadamente 4/n. Con 1000 filas, es 0.004. Cualquier valor muy por encima requiere un vistazo. En este dataset, las mayores distancias de Cook siguen siendo pequeñas en términos absolutos, que es el resultado bueno-aburrido que sueles querer.

Ahora creo una visualización para que la distribución se lea mejor:

Influence diagnostics visualized

Diagnósticos de influencia visualizados

Los puntos que quedan muy por encima de la línea discontinua son los que hay que investigar. Hay algunos, pero no demasiados.

Diagnósticos de residuales

Los residuales de devianza te indican qué observaciones el modelo tiene problemas para 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)

Residual diagnostics output

Salida de diagnósticos de residuales

Residuales de devianza muy positivos son casos a los que el modelo asignó baja probabilidad pero fueron positivos. Residuales muy negativos, lo contrario. Cruza las observaciones con residual alto con los diagnósticos de influencia anteriores. Un caso a la vez mal predicho e influyente es el más interesante de investigar.

Cómo comprobar los supuestos de la regresión logística en R

R trae soporte más integrado para estos diagnósticos. Casi todo lo que necesitas viene con glm() de base y el paquete car.

Preparación del ejemplo

Generaré el mismo tipo de dataset sintético que en Python, con edad e ingresos correlacionados a 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)

Model summary output

Salida del resumen del modelo

La salida de summary(model) te da coeficientes, errores estándar, estadísticos z y p-values. age y spending_score deberían parecer relevantes, mientras que el efecto de income queda absorbido por age.

Multicolinealidad con VIF

El paquete car te da vif() para cualquier glm:

library(car)

vif(model)

VIF output in R

Salida de VIF en R

age e income darán VIF alrededor de 5,7, que muestra la multicolinealidad introducida. spending_score estará cerca de 1. Como en Python, valores por encima de 5 merecen atención y por encima de 10 son un claro problema.

Linealidad del logit con Box-Tidwell

La función car::boxTidwell está pensada para regresión lineal, así que en logística lo mejor es añadir manualmente los términos de interacción y re-ajustar:

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, ]

Box-Tidwell output in R

Salida de Box-Tidwell en R

La salida muestra el coeficiente y el p-value de cada interacción. P-values significativos indican violación del supuesto de linealidad del logit para ese predictor. En los datos sintéticos no debería rechazarse la linealidad. En datos reales, continúa con gráficos de log-odds empíricos o ajusta un modelo con splines (del paquete splines) para cualquier predictor señalado por la prueba.

Diagnósticos de influencia

R proporciona cooks.distance() y hatvalues() en base, sin paquetes de terceros:

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)

Influence diagnostics in R

Diagnósticos de influencia en R

El umbral de la distancia de Cook es el mismo que en Python: 4/n, o 0.004 para 1000 filas. Cualquier valor muy por encima merece investigación. Para una comprobación visual rápida, plot(model, which = 4) de base R te da el gráfico de Cook en una línea.

Diagnósticos de influencia en R visualizados

Diagnósticos de residuales

La función residuals() de R te da los residuales de devianza de un 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)

Residual diagnostics in R

Diagnósticos de residuales en R

Residuales de devianza absolutos grandes son casos en los que la predicción del modelo falló. Cruza estos con las señales de distancia de Cook para encontrar observaciones a la vez mal ajustadas e influyentes.

Para verlo todo de un vistazo, influence.measures(model) devuelve una tabla que combina distancia de Cook, leverage, DFBETAs y otras estadísticas de influencia en un mismo sitio. Es la forma más rápida de escanear los diagnósticos estándar de un glm ajustado.

¿Qué pasa cuando se violan los supuestos?

La mayoría de violaciones no rompen tu modelo en el sentido de que deje de funcionar. Lo hacen comportarse mal de forma sutil, y solo lo notas si sabes qué buscar.

Cuatro consecuencias aparecen la mayor parte del tiempo:

  1. Coeficientes inestables: pequeños cambios en los datos (añadir o quitar unas pocas filas, un ligero cambio en el feature engineering) pueden cambiar drásticamente los coeficientes o su signo. Esto lo causa la multicolinealidad, y también sucede cuando tu muestra es demasiado pequeña para el número de predictores
  2. Pobre calibración: las probabilidades predichas dejan de corresponderse con las tasas reales. Predice 30% de churn para un grupo y observas 15%. La accuracy puede seguir bien, pero las probabilidades están desajustadas. Incumplimientos de la linealidad del logit y atípicos influyentes contribuyen a esto
  3. Inferencias engañosas: esta es la más difícil de ver, porque el modelo sigue produciendo errores estándar y p-values que parecen correctos. Observaciones correlacionadas reducen los errores estándar por debajo de lo debido, y especificaciones equivocadas los inflan. En ambos casos, los p-values no significan lo que crees
  4. Calidad de predicción degradada: el síntoma más evidente, aunque a menudo el menor. Las predicciones suelen aguantar mejor que los coeficientes, por eso los equipos que solo miran accuracy suelen pasar por alto las señales de alarma.

Ahora bien, las violaciones rara vez hacen que un modelo sea inútil. Hacen que algunas partes no sean fiables, y cuáles dependen de qué supuesto se ha roto. Por eso importan los diagnósticos.

Alternativas cuando fallan los supuestos de la regresión logística

Si tus diagnósticos apuntan a problemas que no puedes arreglar dentro de la regresión logística, el siguiente paso es usar un modelo que no haga esos supuestos.

Los modelos aditivos generalizados (GAM) son lo primero que miraría. Un GAM mantiene el enlace logístico y la estructura aditiva interpretable, pero sustituye los términos lineales por funciones suaves de cada predictor. Obtienes coeficientes con forma en lugar de números únicos, lo que resuelve el problema de la linealidad del logit. Los GAM siguen siendo lo bastante paramétricos como para inspeccionar e interpretar, lo que los convierte en un buen paso más allá de la logística cuando la linealidad no se sostiene.

Los modelos basados en árboles son la alternativa más flexible. Random forests y gradient boosting no hacen supuestos sobre las distribuciones de los predictores ni sobre la forma de las relaciones. Manejan la multicolinealidad e incluso capturan no linealidades. No te dan la interpretación sencilla por coeficientes que ofrece la logística, pero suelen rendir mejor en métricas predictivas cuando hay estructura no lineal o interacciones que no metiste en el modelo.

La elección entre GAM y árboles depende de lo que necesites del modelo.

  • Elige GAM cuando la interpretabilidad sea prioritaria y quieras ver cómo afecta cada predictor a los log-odds
  • Elige un árbol potenciado (gradient boosting) cuando priorices la calidad de predicción y aceptes un modelo menos transparente

Ten en cuenta que los supuestos de la regresión logística son más fáciles de comprobar que de ignorar. Si puedes arreglar el problema con una transformación, un spline, regularización o una mejor muestra, la interpretabilidad y la inferencia de la logística suelen superar a lo que obtienes al cambiar a un modelo más flexible.

Por tanto, pasa a GAM o árboles cuando los diagnósticos te digan que los supuestos realmente no se cumplen, no solo porque la regresión logística no sea el algoritmo de moda.

Buenas prácticas para modelar con regresión logística

Y por último, sigue esta lista corta para obtener siempre un modelo en el que puedas confiar:

  • Revisa los supuestos antes de interpretar: ejecuta VIF, prueba de Box-Tidwell y diagnósticos de influencia antes de leer los coeficientes. Si interpretas primero y compruebas después, te verás defendiendo números que no verificaste. No quieres ser esa persona en la reunión
  • Usa regularización cuando la muestra sea pequeña: ridge o elastic net estabilizan los coeficientes cuando el EPV es bajo o los predictores están correlacionados. El intercambio es un pequeño sesgo por una gran reducción de varianza, que suele compensar
  • Valida en datos no vistos por el modelo: reserva un conjunto de prueba o usa validación cruzada. Las métricas de entrenamiento sobreestiman el rendimiento cuando hay margen de sobreajuste, y la logística lo tiene cuando hay muchos predictores o eventos raros
  • Evalúa la calibración: la accuracy oculta si tus probabilidades predichas se corresponden con tasas reales. Usa log-loss o Brier score para evaluar y mira un gráfico de calibración cuando las probabilidades importen para el negocio

Conclusión

La verdad es que la regresión logística es de los modelos más tolerantes que puedes ajustar.

Tolera predictores sesgados y resultados desbalanceados, y no le importan tus residuales. Lo que no tolera es una relación mal especificada con los log-odds, o un conjunto de predictores que aportan la misma información.

Por eso la linealidad del logit y la multicolinealidad son las dos comprobaciones que conviene tratar como obligatorias. Son las que distorsionan el modelo de formas que ninguna métrica puede detectar. Los otros cuatro supuestos también importan, pero estos dos son en los que de verdad debes centrarte.

Para ir sobre seguro, ejecuta los diagnósticos junto con la evaluación, no después. Un modelo que predice bien y pasa sus comprobaciones de supuestos es un modelo que puedes defender. Cualquier cosa por debajo es un modelo que has entrenado pero que en realidad no has verificado.

Si esto te suena complejo, es porque lo es. Convertirte en un buen machine learning engineer requiere mucho, así que te recomendamos inscribirte en nuestro Machine Learning Scientist in Python track. 85 horas de contenidos te dejarán listo para trabajar en 2026.


Dario Radečić's photo
Author
Dario Radečić
LinkedIn
Científico de Datos Senior con base en Croacia. Top Tech Writer con más de 700 artículos publicados, generando más de 10M de visitas. Autor del libro Automatización del aprendizaje automático con TPOT.

FAQs

¿La regresión logística tiene supuestos?

Sí. La regresión logística tiene menos supuestos que la lineal, pero no está libre de ellos. Los principales abarcan la forma de la variable objetivo, la independencia de las observaciones, la linealidad de los log-odds y la ausencia de multicolinealidad elevada o puntos muy influyentes.

¿Cuáles son los supuestos más importantes de la regresión logística?

Las dos más importantes son la linealidad del logit y la ausencia de multicolinealidad elevada. La linealidad del logit es la más malinterpretada, ya que la logística no asume linealidad entre predictores y resultado, pero sí entre predictores y log-odds. La multicolinealidad importa porque distorsiona coeficientes e infla errores estándar sin afectar a la accuracy, de modo que puede pasar desapercibida si solo miras el rendimiento predictivo.

¿Qué pasa si se violan los supuestos de la regresión logística?

Depende de qué supuesto se rompa. Las violaciones de la linealidad del logit o una multicolinealidad fuerte dañan silenciosamente los coeficientes mientras la accuracy permanece intacta, por eso son fáciles de pasar por alto. Fallos de independencia inflan o reducen los errores estándar, volviendo poco fiables los p-values. La mayoría de violaciones no hacen inútil el modelo, pero vuelven poco fiables algunas partes de formas que la accuracy no revela.

¿La regresión logística requiere predictores normalmente distribuidos?

No. La regresión logística no impone supuestos de distribución sobre los predictores. Puedes mezclar predictores continuos, categóricos, sesgados y de colas pesadas en el mismo modelo sin problema. Lo que importa es la relación entre cada predictor y los log-odds, no la forma marginal del predictor.

¿Cuál es un buen umbral de VIF para regresión logística?

Los VIF hasta 5 suelen estar bien, entre 5 y 10 sugieren multicolinealidad moderada que conviene investigar, y por encima de 10 señalan que uno o más predictores son redundantes. Los umbrales no son reglas rígidas, sino convenciones: la interpretación del VIF depende del tamaño muestral y de la precisión que necesites. Si el VIF de un predictor es alto y su error estándar parece inestable entre subconjuntos de datos, tienes indicios de que la colinealidad está causando problemas.

Temas

Aprende con DataCamp

Curso

Introducción a la regresión en R

4 h
77.1K
Predice los precios de la vivienda y la tasa de clics de los anuncios implementando, analizando e interpretando análisis de regresión en R.
Ver detallesRight Arrow
Iniciar curso
Ver másRight Arrow