curso
R-cuadrado ajustado: Una explicación clara con ejemplos
La regresión lineal es una poderosa herramienta en el análisis y la ciencia de datos. Se utiliza para cuantificar la relación entre una variable dependiente y una o varias variables independientes. Si estás familiarizado con la regresión lineal, puede que también estés familiarizado con la medida común de bondad de ajuste denominada r-cuadrado, que indica la proporción de la varianza de la variable dependiente que se explica por la(s) variable(s) independiente(s). Sin embargo, puede que estés menos familiarizado con la r-cuadrado ajustada, que suele utilizarse con modelos más complejos con múltiples predictores.
Este artículo te proporcionará una comprensión exhaustiva de la r-cuadrado ajustada, su importancia en la evaluación de modelos, sus diferencias clave con la r-cuadrado y sus aplicaciones en escenarios de regresión múltiple, para que puedas tener un dominio completo de estas estadísticas de modelos. Para empezar, recomiendo encarecidamente seguir el curso Introducción a la regresión con modelos estadísticos en Python de DataCamp y nuestro curso Introducción a la regresión en R para aprender sobre los modelos de regresión y cómo interpretar las distintas métricas de rendimiento, incluida la r-cuadrado ajustada.
¿Qué es el R-cuadrado ajustado?
La R-cuadrado mide la proporción de varianza de la variable dependiente explicada por la variable o variables independientes del modelo. La r-cuadrado ajustada también explica la varianza, pero tiene una consideración adicional: Como su nombre indica, ajusta el valor r-cuadrado penalizando la inclusión de variables irrelevantes, es decir, altamente colineales. Para ello, tiene en cuenta tanto el número de predictores como el tamaño de la muestra.
Para hallar la r-cuadrado ajustada, primero tenemos que hallar la r-cuadrado. Aunque hay distintas formas de hallar el valor r-cuadrado, la fórmula que aparece a continuación es una de las más habituales:
Fórmula para r-cuadrado
Aquí, la r-cuadrado se calcula como uno menos el cociente de la suma de cuadrados residuales sobre la suma total de cuadrados.
Dónde:
- RSS = Suma de los residuos al cuadrado (suma de las diferencias al cuadrado entre los valores observados y los predichos)
- SCT = Suma total de cuadrados (suma de las diferencias al cuadrado entre los valores observados y la media de los valores observados)
Fórmula para la r-cuadrado ajustada
Tras hallar el valor de r-cuadrado, podemos hallar el r-cuadrado ajustado. Para ello, introducimos nuestro valor r-cuadrado en la fórmula siguiente.
Dónde:
- R² = r-cuadrado del modelo
- n = número de observaciones (puntos de datos)
- p = número de predictores (variables independientes)
Para practicar, podemos poner un ejemplo. Considera este escenario: Tenemos un conjunto de datos con 30 observaciones. Creamos un modelo de regresión lineal múltiple con cinco predictores. Descubrimos un r-cuadrado de 0,8. Así es como podemos tomar esta información para hallar la r-cuadrado ajustada:
Quizá te preguntes por el -1 de la ecuación, tanto en el numerador como en el denominador. Para aclararlo, n-1 en el numerador tiene en cuenta los grados de libertad, corrigiendo el uso de la media muestral al calcular la varianza. Esto se debe a que, al calcular la varianza, solemos utilizar la media muestral como estimación de la media poblacional. Como la media de la muestra no es la verdadera media de la población, la varianza tiende a subestimarse. Para corregir este sesgo, reducimos los grados de libertad en 1.
En el denominador, n-p-1 ajusta el número de predictores p del modelo, donde p es el número de variables independientes. El -1 adicional en el denominador corrige la estimación del intercepto del modelo, que también consume un grado de libertad. Debemos recordar que, en un modelo de regresión, estimamos tanto los coeficientes de pendiente de los predictores como el intercepto para tener en cuenta toda la complejidad.
¿En qué se diferencia el R-cuadrado ajustado del R-cuadrado?
Aunque tanto la r-cuadrado como la r-cuadrado ajustada evalúan el rendimiento del modelo de regresión, existe una diferencia clave entre ambas métricas. El valor r-cuadrado siempre aumenta o permanece igual cuando se añaden más predictores al modelo, aunque esos predictores no mejoren significativamente el poder explicativo del modelo. Esta cuestión puede crear una impresión engañosa sobre la eficacia del modelo.
La r-cuadrado ajustada ajusta el valor de la r-cuadrado para tener en cuenta el número de variables independientes del modelo. El valor r-cuadrado ajustado puede disminuir si un nuevo predictor no mejora el ajuste del modelo, lo que lo convierte en una medida más fiable de la precisión del modelo. Por esta razón, el r-cuadrado ajustado puede ser utilizado como herramienta por los analistas de datos para ayudarles a decidir qué predictores incluir.
Cuándo utilizar el R-cuadrado ajustado
Saber cuándo utilizar r-cuadrado ajustado en lugar de r-cuadrado es importante para construir modelos fiables. A continuación se exponen supuestos en los que resulta adecuado utilizar la r-cuadrado ajustada para evaluar los modelos.
- Regresión múltiple: En general, la r-cuadrado ajustada es una métrica más fiable porque tiene en cuenta el número de predictores, lo que garantiza una mejor evaluación del rendimiento del modelo.
- Comparación de modelos: La r-cuadrado ajustada es útil cuando se comparan modelos con distintos números de predictores para elegir los de mejor rendimiento.
- Para evitar el sobreajuste: La r-cuadrado ajustada ayuda penalizando la inclusión de predictores irrelevantes para garantizar que sólo se incluyen los predictores que mejoran el rendimiento del modelo.
En general, aunque la r-cuadrado ajustada es preferible a la r-cuadrado en los modelos de regresión múltiple porque tiene en cuenta el número de predictores y penaliza la adición de variables irrelevantes, hay algunos supuestos en los que utilizar la r-cuadrado puede seguir siendo adecuado:
- Comparaciones sencillas entre modelos: Si comparas modelos con el mismo número de predictores, la r-cuadrado puede utilizarse para medir la bondad general del ajuste sin preocuparse por el sobreajuste, ya que ambos modelos tienen la misma complejidad.
- Enfoque de Poder Explicativo: Si tu objetivo es únicamente comprender qué parte de la variación de la variable dependiente se explica por las variables independientes, independientemente del número de predictores, la r-cuadrado puede ofrecer una interpretación más directa.
Interpretación práctica de la R-cuadrado ajustada
Consideremos un ejemplo en el que entrarían en juego los matices entre r-cuadrado y r-cuadrado ajustado. Supongamos que tenemos estos dos modelos de regresión:
- El modelo 1 tiene un r-cuadrado de 0,9 y un r-cuadrado ajustado de 0,75.
- El modelo 2 tiene un R-cuadrado de 0,85 y un R-cuadrado ajustado de 0,8.
Podríamos decir que el modelo 1 parece explicar más de la varianza global de los datos porque tiene un valor r-cuadrado más alto. Pero también tenemos que considerar que el modelo 2 podría explicar más de la verdadera relación subyacente entre las variables porque tiene en cuenta predictores irrelevantes. La mayor r-cuadrado ajustada del modelo 2 sugiere que proporciona un ajuste más fiable al penalizar la complejidad innecesaria, y también podría ser menos propenso al sobreajuste. Personalmente, y a falta de otra información, elegiría el modelo 2.
R-cuadrado ajustado en R y Python
Exploremos ejemplos prácticos de cálculo de la r-cuadrado ajustada en R y Python. Utilizaremos el conjunto de datos "Pescadería" de Kaggle, que sirve para estimar el peso de un pez en función de su especie y sus medidas físicas. Para simplificar, redondearemos el resultado a cinco decimales.
R cuadrado ajustado en R
Descarga el conjunto de datos y guárdalo en tu directorio de trabajo. Utiliza el código siguiente para ajustar un modelo lineal que prediga el peso del pez en función de algunas variables diferentes, como Length1
, Height
, Width
, y Length3
, que se refieren a la longitud vertical del pez, la altura del pez, la anchura diagonal del pez y la longitud transversal del pez, respectivamente.
# Load the dataset
data <- read.csv("data/Fish.csv")
# Remove rows with missing values
data <- na.omit(data)
# Model 1: Using 4 predictors ('Length1', 'Height', 'Width', 'Length3')
model1 <- lm(Weight ~ Length1 + Height + Width + Length3, data = data)
Ahora, comprobamos los valores r-cuadrado y r-cuadrado ajustado, y vemos lo siguiente. El r-cuadrado ajustado es muy parecido al valor r-cuadrado, sólo que ligeramente más lento.
r_squared_model1 <- round(summary(model1)$r.squared, 4)
r_squared_model1 <- round(summary(model1)$adj.r.squared, 4)
0.88527
0.88229
¿Y si ahora intentamos crear otro modelo añadiendo otro predictor? Esta vez, creamos un segundo modelo y añadimos Length2
, que se refiere a la longitud diagonal del pez. Del mismo modo que antes, podemos comprobar los valores r-cuadrado y r-cuadrado ajustado de nuestro nuevo modelo.
# Model 2: Adding one more predictor ('Length2')
model2 <- lm(Weight ~ Length1 + Height + Width + Length3 + Length2, data = data)
r_squared_model2 <- round(summary(model1)$r.squared, 4)
r_squared_model2 <- round(summary(model1)$adj.r.squared, 4)
0.88529
0.88154
Para el modelo 2, podemos ver que el valor r-cuadrado apenas aumentó en comparación con el modelo 1. Además, vemos que el valor r-cuadrado ajustado disminuyó, y la disminución del r-cuadrado ajustado fue mayor que el aumento del valor r-cuadrado. Esto nos dice que el predictor que añadimos no era bueno.
Si lo pensamos bien, Length2
, que se refiere a la longitud diagonal del pez, probablemente estaba muy correlacionada con las demás variables del modelo o con una combinación lineal de las demás variables del modelo. En concreto, esperamos que la longitud diagonal del pez esté muy correlacionada con la longitud del pez y la longitud transversal del pez. Así que vemos que nuestra nueva variable no añadía información nueva y relevante.
En aras de la exhaustividad, también podemos demostrar cómo hallar el r-cuadrado ajustado a mano. Utilizamos el valor r-cuadrado y los parámetros del modelo, y seguimos la fórmula que hemos mostrado antes.
# Save R-squared as a variable
r_squared_model2 <- summary(model2)$r.squared
# Get the number of observations (n) for both models
n <- nrow(data) # Same for both models
# Get the number of predictors (excluding intercept) for each model
p_model1 <- length(coef(model1)) - 1
p_model2 <- length(coef(model2)) - 1
# Adjusted r-squared formula for Model 1
adjusted_r_squared_model1 <- 1 - ((1 - r_squared_model1) * (n - 1)) / (n - p_model1 - 1)
# Adjusted r-squared formula for Model 2
adjusted_r_squared_model2 <- 1 - ((1 - r_squared_model2) * (n - 1)) / (n - p_model2 - 1)
# Print R-squared values for both models
cat("R-Squared for Model 1:", r_squared_model1, "\n")
cat("R-Squared for Model 2:", r_squared_model2, "\n")
# Print the Adjusted R-Squared values for both models
cat("Adjusted R-Squared for Model 1:", adjusted_r_squared_model1, "\n")
cat("Adjusted R-Squared for Model 2:", adjusted_r_squared_model2, "\n")
r-cuadrado ajustado en Python
El código siguiente muestra una implementación del mismo ejemplo en Python.
# Import requied libraries
import pandas as pd
import statsmodels.api as sm
# Load the dataset
data = pd.read_csv('data/Fish.csv')
# Drop rows with missing values if any exist
data = data.dropna()
# Define predictors for Model 1 (4 variables)
X1 = data[['Length1', 'Height', 'Width', 'Length3']]
# Add a constant (intercept)
X1 = sm.add_constant(X1)
# Define the target variable 'Weight'
y = data['Weight']
# Fit Model 1
model1 = sm.OLS(y, X1).fit()
# Define predictors for Model 2 (5 variables)
X2 = data[['Length1', 'Height', 'Width', 'Length3', 'Length2']]
# Add a constant (intercept)
X2 = sm.add_constant(X2)
# Fit Model 2
model2 = sm.OLS(y, X2).fit()
# Save r-squared as a variable
r_squared_model1 = model1.rsquared # R-Squared for Model 1
r_squared_model2 = model2.rsquared # R-Squared for Model 2
# Get the number of observations
n = X1.shape[0] # Same for both models
# Get the number of predictors (excluding intercept) for each model
p_model1 = X1.shape[1] - 1 # Number of predictors for Model 1
p_model2 = X2.shape[1] - 1 # Number of predictors for Model 2
# Adjusted R-Squared formula for Model 1
adjusted_r_squared_model1 = 1 - ((1 - r_squared_model1) * (n - 1)) / (n - p_model1 - 1)
# Adjusted R-Squared formula for Model 2
adjusted_r_squared_model2 = 1 - ((1 - r_squared_model2) * (n - 1)) / (n - p_model2 - 1)
# Print R-squared for both models
print("R-Squared for Model 1:", r_squared_model1)
print("R-Squared for Model 2:", r_squared_model2)
# Print the Adjusted R-Squared values for both models
print("Adjusted R-Squared for Model 1:", adjusted_r_squared_model1)
print("Adjusted R-Squared for Model 2:", adjusted_r_squared_model2)
También podemos utilizar funciones en Python para hallar los valores r-cuadrado y r-cuadrado ajustado de los modelos de regresión:
# Model 1
print("Model 1 R-Squared:", model1.rsquared)
print("Model 1 Adjusted R-Squared:", model1.rsquared_adj)
# Model 2
print("Model 2 R-Squared:", model2.rsquared)
print("Model 2 Adjusted R-Squared:", model2.rsquared_adj)
Si has tenido algún problema con las secciones de código anteriores, consulta nuestros tutoriales Fundamentos de la regresión lineal en Python y Cómo hacer regresión lineal en R para aprender la guía paso a paso para implementar e interpretar diferentes métricas del modelo de regresión. Si Excel es tu herramienta de análisis preferida, consulta nuestro tutorial sobre Regresión lineal en Excel: Una guía completa para principiantes para aprender a implementar y visualizar modelos de regresión lineal en Excel.
R-cuadrado ajustado, R-cuadrado y R-cuadrado predicho
Al considerar la r-cuadrado ajustada, deberíamos tomarnos un tiempo para mantener claros nuestros términos. Hay algunos términos que parecen similares pero tienen finalidades diferentes. Aquí he creado una tabla que compara algunas ideas parecidas pero distintas: r-cuadrado, r-cuadrado ajustado y r-cuadrado predicho.
Métrica | Medidas | Caso práctico | Puntos fuertes | Limitaciones |
---|---|---|---|---|
R-cuadrado | Proporción de varianza explicada por el modelo | Comprender lo bien que se ajusta el modelo a los datos de entrenamiento | Fácil de interpretar y proporciona rápidamente el ajuste del modelo | Engañoso al comparar modelos con diferentes predictores, vulnerable al sobreajuste |
R-cuadrado ajustado | Proporción de varianza explicada, ajustada al número de predictores | Comparación de modelos con diferente número de predictores | Penaliza la adición de variables irrelevantes, evita el sobreajuste | No indica el rendimiento predictivo de los nuevos datos |
R-cuadrado previsto | Cómo de bien predice el modelo los nuevos datos | Evaluar el rendimiento del modelo con datos no vistos | Indica lo bien que generaliza el modelo a nuevos datos | Requiere validación cruzada o un conjunto de datos de reserva, caro desde el punto de vista informático |
Errores comunes sobre la R-cuadrada ajustada
Por último, veamos algunos errores comunes, porque hay algunos malentendidos habituales sobre su uso en la regresión.
- Un R-cuadrado ajustado bajo significa que el modelo es pobre: Un r-cuadrado ajustado bajo no significa necesariamente que el modelo sea malo o irrelevante. El valor bajo puede indicar que las variables independientes del modelo no explican una gran proporción de la varianza de la variable dependiente, pero dependiendo del tema, eso podría esperarse.
- El cuadrado R ajustado no puede ser negativo: Técnicamente, la r-cuadrado ajustada puede ser negativa cuando el modelo explica una proporción extremadamente baja de la varianza de la variable dependiente y, al mismo tiempo, utiliza muchos predictores, lo que da lugar a penalizaciones que crean una situación con r-cuadrado ajustada negativa.
- El R-cuadrado ajustado siempre disminuye al añadir variables: La r-cuadrado ajustada disminuirá si la nueva variable no mejora el rendimiento del modelo, pero aumentará si la nueva variable añade valor real al modelo. Imagina un modelo con un mal predictor, y luego añades uno bueno; el r-cuadrado ajustado aumentará.
Reflexiones finales sobre la R-cuadrado ajustada
La r-cuadrado ajustada es una métrica importante para evaluar el rendimiento de los modelos de regresión, sobre todo cuando se trata de múltiples variables independientes. En comparación con la métrica r-cuadrado, proporciona una medida más realista y fiable de la precisión del modelo cuando intervienen múltiples predictores.
Si tienes curiosidad por saber cómo R y Python encuentran los coeficientes de los modelos de regresión lineal, consulta los siguientes tutoriales: Tutorial de Ecuación Normal para Regresión Lineal y Descomposición QR en Aprendizaje Automático: Guía detallada.
Conviértete en un Científico ML
R-cuadrado ajustado Preguntas frecuentes
¿En qué se diferencia la r-cuadrado ajustada de la r-cuadrado?
Mientras que la r-cuadrado mide la proporción de varianza de la variable dependiente explicada por las variables independientes, siempre aumenta cuando se añaden más predictores. La r-cuadrado ajustada tiene en cuenta el número de predictores y disminuye si las variables adicionales no contribuyen a la significación del modelo.
¿Cuándo debo utilizar la r-cuadrado ajustada?
La r-cuadrado ajustada es útil para comparar la bondad de ajuste de modelos de regresión con distintos números de predictores o cuando te preocupa el sobreajuste.
¿Puede ser negativo el valor r-cuadrado ajustado?
La r-cuadrado ajustada puede ser negativa cuando el modelo explica muy poca varianza en la variable dependiente e incluye muchos predictores, lo que da lugar a penalizaciones que resultan en un valor negativo.
¿Por qué el valor r-cuadrado ajustado es siempre igual o inferior al valor r-cuadrado?
La r-cuadrado ajustada es siempre igual o inferior a la r-cuadrado porque está diseñada para añadir una penalización por añadir predictores innecesarios al modelo.
¿Cuándo debo utilizar la r-cuadrado predicha en lugar de la r-cuadrado ajustada?
La r-cuadrado pronosticada es útil para evaluar el rendimiento del modelo con datos nuevos no vistos.
¿Cuál es la diferencia entre f-cuadrado ajustado y otras métricas de evaluación de modelos de regresión lineal como el RMSE?
La r-cuadrado ajustada mide la proporción de varianza explicada por el modelo, teniendo en cuenta el número de predictores, mientras que el RMSE (error cuadrático medio) cuantifica la diferencia media entre los valores observados y los predichos. En otras palabras, el RMSE se centra en el error de predicción, mientras que el r-cuadrado ajustado se centra en el ajuste del modelo.
¿La r ajustada al cuadrado sólo se aplica a la regresión lineal?
Sí, la r-cuadrado ajustada se asocia principalmente a los modelos de regresión lineal múltiple. Para los modelos no lineales, como las funciones exponenciales y logarítmicas, se suelen utilizar otras métricas como el AIC o el BIC para penalizar la complejidad del modelo y evaluar la bondad del ajuste.
¿Qué significa que los valores r-cuadrado y r-cuadrado ajustado de un modelo de regresión lineal sean muy diferentes?
Una gran diferencia entre r-cuadrado y r-cuadrado ajustado sugiere que el modelo incluye predictores irrelevantes. La r-cuadrado ajustada penaliza las variables innecesarias, así que si ves una gran diferencia entre las dos, puede que tengas predictores que estén fuertemente correlacionados.
¿Es lo mismo r-cuadrado y r-cuadrado ajustado en la regresión lineal simple?
En una regresión lineal simple, es decir, una regresión con una variable dependiente y una sola variable independiente, la r-cuadrado y la r-cuadrado ajustada serían iguales.
Aprende con DataCamp
curso
Introduction to Regression in R
curso
Supervised Learning in R: Regression
blog
Intervalos de confianza frente a intervalos de predicción: Comprender la diferencia

Arun Nanda
25 min
tutorial
Regresión lineal múltiple en R: tutorial con ejemplos
tutorial
Tutorial de regresión lineal en R
Eladio Montero Porras
15 min
tutorial
Tutorial de ecuación normal para regresión lineal
tutorial
Regresión logística en R Tutorial
tutorial