Calcule el estadístico R-cuadrado en R

Jesse John 30 enero 2023
  1. Fórmula para la estadística R-Squared
  2. Obtenga la estadística R-cuadrada del modelo de regresión lineal
  3. Calcule la estadística R-Squared manualmente
  4. Crear una función personalizada para calcular R-Squared
  5. Conclusión
Calcule el estadístico R-cuadrado en R

La estadística R-cuadrado es el número que se utiliza para evaluar qué tan bien se ajusta un modelo de regresión lineal a los datos. Da la proporción de varianza de la variable dependiente explicada por las variables independientes del modelo.

La estadística R-cuadrada se refiere únicamente a los modelos de regresión lineal. En un modelo de regresión lineal, la variable dependiente es cuantitativa.

El modelo asume que la variable dependiente depende linealmente de las variables independientes. R-squared también es relevante para extensiones simples del modelo lineal, incluidos los términos polinómicos y de interacción.

Los otros puntos a tener en cuenta sobre la estadística R-cuadrado son:

  • Es una proporción, por lo que no tiene unidad.
  • Como es una proporción, siempre va de 0 a 1.
  • Un valor de 0 significa que el modelo no explica varianza.
  • Un valor de 1 significa que el modelo explica toda la varianza.
  • Por lo general, se considera mejor un modelo que da un valor más alto de R-cuadrado.
  • Agregar más variables independientes siempre aumenta el valor de R-cuadrado. Esto puede sobreajustar el modelo a los datos. Por lo tanto, a veces puede ser útil elegir un modelo que dé un R-cuadrado ligeramente más bajo que otro que sobreajuste los datos.
  • El modelo lineal proporcionará una estadística R cuadrada válida solo para los datos utilizados para crear el modelo. El modelo puede predecir un vector de valores de variables dependientes utilizando un conjunto de datos diferente. Pero no deberíamos calcular una estadística R-cuadrada para tales valores predichos.

Fórmula para la estadística R-Squared

Supongamos que tratamos de predecir una variable Y usando algunas variables independientes. Construimos nuestro modelo de regresión lineal utilizando observaciones completas en las que se conocen los valores de todas las variables, incluida la variable dependiente, Y.

La media aritmética de Y es el valor estimado de Y en ausencia de un modelo de regresión lineal. Se toma como línea de base.

Las diferencias entre los valores observados de Y y la media aritmética de Y son las desviaciones totales. La suma de los cuadrados de estas diferencias se llama Total Sum of Squares, TSS.

Las diferencias entre los valores observados de Y e Y que predice el modelo de regresión lineal son las desviaciones residuales. Estas desviaciones se mantienen incluso después de intentar predecir Y usando las variables independientes en un modelo de regresión lineal.

La suma de los cuadrados de estas diferencias se denomina Suma Residual de Cuadrados, RSS. La estadística R-cuadrado se calcula como (TSS - RSS)/TSS. Así, el modelo ha explicado la proporción de la varianza de Y.

Un mejor modelo generalmente tendrá una estadística R cuadrada más alta porque RSS será más bajo.

Obtenga la estadística R-cuadrada del modelo de regresión lineal

La instalación básica de R incluye la función de modelado lineal, lm(), como parte del paquete stats, que se carga por defecto.

Nos ayuda a construir fácilmente modelos de regresión lineal. El primer argumento para esta función es la especificación del modelo.

Especificaremos que queremos ver cómo Y depende de X. El segundo argumento es la fuente de los datos. Especificamos el dataframe donde R encontrará las variables X e Y.

La función summary() reporta el estadístico R-cuadrado del modelo. En el siguiente ejemplo, construiremos un modelo de regresión lineal simple y obtendremos R para informar el valor de R-cuadrado.

Código de ejemplo:

# Create sample data.
# Independent variable, X.
X = c(1, 2, 3, 4, 5)
# Dependent Variable, Y, of the form 2x+1, with added error.
Y = c(2, 6, 7, 10, 9)

# Make a data frame, df.
df = data.frame(X,Y)

# Build the linear regression model named lin.mod.
lin.mod = lm(formula = Y~X, data = df)

# Check R^2 in the model summary. It is labeled as Multiple R-squared.
summary(lin.mod)

Producción :

Call:
lm(formula = Y ~ X, data = df)

Residuals:
   1    2    3    4    5
-1.2  1.0  0.2  1.4 -1.4

Coefficients:
            Estimate Std. Error t value Pr(>|t|)
(Intercept)   1.4000     1.5319   0.914    0.428
X             1.8000     0.4619   3.897    0.030 *
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 1.461 on 3 degrees of freedom
Multiple R-squared:  0.8351,	Adjusted R-squared:  0.7801
F-statistic: 15.19 on 1 and 3 DF,  p-value: 0.02998

La llamada a la función summary() generó muchos resultados. El valor de Múltiple R-cuadrado es el que nos proponemos obtener.

Calcule la estadística R-Squared manualmente

El estadístico R-cuadrado se puede obtener utilizando la función para el coeficiente de correlación, cor(). Sin embargo, debemos asegurarnos de que lo usamos en el contexto correcto, solo cuando sea apropiado.

  • En el caso de regresión lineal simple, R-cuadrado es igual al cuadrado del coeficiente de correlación entre Y y X, donde X es la variable independiente.
  • En el caso de regresión lineal múltiple, R-cuadrado es igual al cuadrado del coeficiente de correlación entre Y y los valores de Y predichos por el modelo.

El siguiente ejemplo ilustra este cálculo con el modelo de regresión lineal simple que creamos.

Código de ejemplo:

# The cor() function gives the correlation coefficient.
# Its square is equal to the R-squared statistic.
cor(X,Y)^2

Producción :

> cor(X,Y)^2
[1] 0.8350515

Encontramos que el cuadrado del coeficiente de correlación es el mismo que el valor R-cuadrado informado por el resumen del modelo de regresión lineal.

Crear una función personalizada para calcular R-Squared

Si a menudo necesitamos calcular manualmente la estadística R-cuadrada entre dos vectores numéricos de igual longitud, podemos escribir una función personalizada para simplificar nuestra tarea.

La función personalizada tendrá la forma function_name = function(argument list) {body of function}. Se llamará de la siguiente manera: function_name(parameter list). Usaremos la función cor() en nuestra función personalizada.

Código de ejemplo:

# Define the custom function.
VectorRSq = function(x, y) {cor(x, y)^2}

# Call the custom function.
VectorRSq(X, Y)

Producción :

> VectorRSq(X, Y)
[1] 0.8350515

Obteniendo ayuda

Para obtener más información sobre la estadística R-cuadrado, lea el capítulo sobre Regresión lineal en el excelente libro de texto An Introduction to Statistical Learning, disponible en línea de forma gratuita.

Para obtener más información sobre cómo crear funciones personalizadas en R, lea el capítulo sobre funciones en el libro en línea de Hadley Wickham R for Data Science.

Para obtener ayuda con las funciones lm(), cor() o c(), haga clic en Ayuda > Buscar ayuda de R en el menú de R Studio e ingrese el nombre de la función sin paréntesis en el cuadro de búsqueda.

Conclusión

La estadística R-cuadrado se utiliza para evaluar qué tan bien se ajusta un modelo de regresión lineal a los datos. Solo es válido para los datos utilizados para crear el modelo. El resumen generado a partir de la función de modelado lineal, lm(), nos da el valor del estadístico R-cuadrado.

Si es necesario, podemos calcular el estadístico R-cuadrado entre dos vectores numéricos de igual longitud utilizando la función cor(). Se puede hacer directamente o a través de una función personalizada.

Autor: Jesse John
Jesse John avatar Jesse John avatar

Jesse is passionate about data analysis and visualization. He uses the R statistical programming language for all aspects of his work.