R² compara la variabilidad que explica el modelo con la variabilidad total de los datos. Es una herramienta importante para evaluar una recta, pero no debe interpretarse de manera aislada.
Un modelo tiene un buen ajuste cuando sus predicciones se encuentran razonablemente cerca de los valores observados y no dejan patrones sistemáticos en los residuos.
La calidad del ajuste no depende solamente de que la recta pase cerca de varios puntos. También hay que considerar el objetivo del análisis, las unidades del error y el costo de equivocarse.
Antes de ajustar una recta, podemos comparar cada valor observado con la media de y. La variabilidad total se resume mediante:
SCT significa suma de cuadrados total. Representa cuánta variación existe en y antes de utilizar x para explicar algo.
Después de ajustar la recta, cada observación tiene un residuo:
La variabilidad que queda sin explicar por el modelo es:
Un valor pequeño de SCE indica que los datos están cerca de sus predicciones, aunque siempre debe interpretarse en las unidades de y.
La parte de la variación asociada con las predicciones del modelo se denomina suma de cuadrados explicada:
Para evitar confundirla con la suma de cuadrados de errores, en este tema llamaremos SC explicada a esta cantidad y SC residual a la suma de los cuadrados de los residuos.
También puede escribirse como:
En una regresión lineal simple con intercepto, R² coincide con el cuadrado de la correlación de Pearson: R² = r².
Si R² = 0,72, se dice que el modelo explica el 72 % de la variabilidad observada de y en esa muestra mediante la relación lineal con x. El 28 % restante queda en los residuos o no está explicado por este modelo.
Decir “explica” en este contexto es una afirmación sobre variabilidad estadística, no una prueba de que x cause y.
Supongamos que para cinco observaciones obtenemos:
| y observado | ŷ estimado | Residuo | Residuo² |
|---|---|---|---|
| 52 | 51,6 | 0,4 | 0,16 |
| 56 | 56,3 | −0,3 | 0,09 |
| 61 | 61,0 | 0 | 0 |
| 65 | 65,7 | −0,7 | 0,49 |
| 71 | 70,4 | 0,6 | 0,36 |
La suma de cuadrados residual es 1,10. Si la suma de cuadrados total fuera 238,80:
En este ejemplo, la recta representa muy bien la variabilidad de las calificaciones observadas.
R² es una proporción sin unidades. Para saber si el error es aceptable en la práctica, hay que revisar medidas como el error estándar de la estimación, el error absoluto medio o la raíz del error cuadrático medio.
Un R² alto puede coexistir con errores grandes si la variable y tiene una dispersión enorme. Por eso no reemplaza la inspección de los residuos ni el análisis de las predicciones.
Una relación temporal común, una variable omitida o un valor atípico pueden producir un R² alto. Además, una curva puede tener muchos puntos cerca de una recta en una zona y mostrar un patrón sistemático en otra.
Siempre se debe observar la nube de puntos y el gráfico de residuos. Un único número no puede revelar todas las características de los datos.
En ciencias sociales, mediciones humanas o fenómenos con mucha variabilidad, un R² moderado o bajo puede acompañar una relación real y útil. Una variable puede ofrecer información predictiva aunque no explique la mayor parte de la variación individual.
La utilidad depende del propósito: explicar, predecir, seleccionar casos o tomar una decisión. El umbral aceptable se define en el contexto, no por una regla universal.
Al agregar variables, R² nunca disminuye en una regresión por mínimos cuadrados. Esto puede hacer que un modelo más complejo parezca mejor aunque la nueva variable aporte muy poco.
Para comparar modelos con distinta cantidad de predictores se puede utilizar R² ajustado, validación cruzada, criterios de información y medidas de error fuera de la muestra.
El porcentaje de variabilidad explicado por una recta no establece una relación causal. Un modelo puede predecir bien sin explicar el mecanismo que produce los datos.
Para hablar de causas hay que considerar el diseño del estudio, variables de confusión, temporalidad y conocimientos del área.
Un punto influyente puede aumentar o disminuir notablemente R². Conviene comparar el ajuste con y sin el caso, verificar la calidad de la medición y documentar la decisión.
Eliminar datos únicamente para obtener un R² mayor produce una conclusión sesgada y difícil de reproducir.
Este ejemplo ajusta la recta, calcula la suma de cuadrados total y residual, obtiene R² y dibuja el ajuste en un canvas que se muestra al ejecutar.
const datos = [
{ x: 1, y: 52 },
{ x: 2, y: 56 },
{ x: 3, y: 61 },
{ x: 4, y: 65 },
{ x: 5, y: 71 }
];
const mediaX = datos.reduce((suma, dato) => suma + dato.x, 0) / datos.length;
const mediaY = datos.reduce((suma, dato) => suma + dato.y, 0) / datos.length;
const numerador = datos.reduce((suma, dato) => suma + (dato.x - mediaX) * (dato.y - mediaY), 0);
const denominador = datos.reduce((suma, dato) => suma + (dato.x - mediaX) ** 2, 0);
const pendiente = numerador / denominador;
const intercepto = mediaY - pendiente * mediaX;
const predicciones = datos.map(dato => intercepto + pendiente * dato.x);
const sumaTotal = datos.reduce((suma, dato) => suma + (dato.y - mediaY) ** 2, 0);
const sumaResidual = datos.reduce((suma, dato, indice) => suma + (dato.y - predicciones[indice]) ** 2, 0);
const r2 = 1 - sumaResidual / sumaTotal;
console.log('SC total:', sumaTotal.toFixed(3));
console.log('SC residual:', sumaResidual.toFixed(3));
console.log('R²:', r2.toFixed(3));
console.log('Variabilidad explicada:', (r2 * 100).toFixed(1) + '%');
if (typeof document !== 'undefined') {
const canvas = document.getElementById('canvasR2Codigo');
const contexto = canvas.getContext('2d');
const area = { izquierda: 70, derecha: 780, arriba: 35, base: 390 };
const escalaX = valor => area.izquierda + (valor - 1) / 4 * (area.derecha - area.izquierda);
const escalaY = valor => area.base - (valor - 45) / 30 * (area.base - area.arriba);
contexto.clearRect(0, 0, canvas.width, canvas.height);
contexto.strokeStyle = '#b3cde5'; contexto.lineWidth = 1;
contexto.beginPath(); contexto.moveTo(area.izquierda, area.base); contexto.lineTo(area.derecha, area.base); contexto.stroke();
contexto.beginPath(); contexto.moveTo(area.izquierda, area.base); contexto.lineTo(area.izquierda, area.arriba); contexto.stroke();
contexto.strokeStyle = '#316b9c'; contexto.lineWidth = 3;
contexto.beginPath(); contexto.moveTo(escalaX(1), escalaY(intercepto + pendiente)); contexto.lineTo(escalaX(5), escalaY(intercepto + pendiente * 5)); contexto.stroke();
contexto.fillStyle = '#28577f';
datos.forEach(dato => { contexto.beginPath(); contexto.arc(escalaX(dato.x), escalaY(dato.y), 7, 0, Math.PI * 2); contexto.fill(); });
}El coeficiente de determinación resume la calidad del ajuste desde la perspectiva de la variabilidad explicada. Es útil para comunicar y comparar modelos, siempre que se acompañe con gráficos, medidas de error, revisión de supuestos y una interpretación prudente del contexto.