Código completo para este ejemplo en la parte inferior de esta publicación.
Se utiliza la regresión múltiple cuando su variable de respuesta es continua y tiene al menos K covariables, o variables independientes que están correlacionadas linealmente con ella. Los datos son del formulario:
(Y₁, x₁), …, (yᵢ, xᵢ), …, (yₙ, xₙ)
donde xᵢ = (xᵢ₁, …, xᵢₖ) es un vector de covariables y N es el número de observaciones. Aquí, Xi es el vector de los valores de K covariables para la observación ésima.
Comprender los datos
Para hacer esto concreto, imagine el siguiente escenario:
Le gusta correr y rastrear su rendimiento grabando la distancia que ejecuta cada día. Más de 100 días consecutivos, recopila cuatro piezas de información:
- La distancia que corres,
- La cantidad de horas que pasaste corriendo
- La cantidad de horas que dormiste anoche
- Y la cantidad de horas que trabajaste
Ahora, en el día 101, grabaste todo excepto la distancia que corriste. Desea estimar ese valor faltante usando la información que tiene: la cantidad de horas que pasó en funcionamiento, la cantidad de horas que durmió la noche anterior y la cantidad de horas que trabajó ese día.
Para hacer esto, puede confiar en los datos de los 100 días anteriores, lo que toma el formulario:
(Y₁, x₁), …, (yᵢ, xᵢ), …, (y₁₀₀, x₁₀₀)
Aquí, cada uno Yᵢ es la distancia que corriste en el día iy cada vector covariable Xᵢ = (xᵢ₁, xᵢ₂, xᵢ₃) corresponde a:
- Xᵢ₁: Número de horas dedicadas a correr,
- Xᵢ₂: Número de horas durmió la noche anterior,
- Xᵢ₃: Número de horas trabajadas ese día.
El índice i = 1, …, 100 se refiere a los 100 días con datos completos. Con este conjunto de datos, ahora puede ajustar un modelo de regresión lineal múltiple para estimar la variable de respuesta faltante para el día 101.
Especificación del modelo
Si asumimos la relación lineal entre la variable de respuesta y las covariables, que puede medir utilizando la correlación de Pearson, podemos especificar el modelo como:
para i = 1, …, n donde e (ϵᵢ | xᵢ₁, …, xᵢₖ). Para tener en cuenta la intersección, la primera variable se establece en Xᵢ₁ = 1, para i = 1, …, n. Para estimar el coeficiente, el modelo se expresa en la notación de la matriz.
Y las covariables serán denotadas por:
Entonces, podemos reescribir el modelo como:
Y = xβ + ε
Estimación de coeficientes
Suponiendo que la matriz (k+1)*(k+1) es invertible, la forma de la estimación de mínimos cuadrados viene dada por:
Podemos derivar la estimación de la función de regresión, una estimación imparcial de σ² y un intervalo de confianza 1 -α aproximado para βⱼ:
- Estimación de la función de regresión: r (x) = ∑ⱼ₌₁ᵏ βⱼ xⱼ
- σ̂² = (1 / (n – k)) × ∑ᵢ₌₁ⁿ ε̂ᵢ² donde ϵ̂ = y – xβ̂ es el vector de los residuos.
- Y β̂ⱼ ± Tₙ₋ₖ, ₁₋α⁄₂ × SE (β̂ⱼ) es una aproximación (1 – α) intervalo de confianza. Donde se (β̂ⱼ) es el elemento diagonal JTH de la matriz σ̂² (xᵀ x) ⁻¹
Ejemplo de aplicación
Debido a que no registramos los datos de nuestro rendimiento en ejecución, utilizaremos un conjunto de datos de delitos de 47 estados en 1960 que se puede obtener de aquí. Antes de ajustar una regresión lineal, hay muchos pasos que debemos seguir.
Comprender diferentes variables de los datos.
Las primeras 9 observaciones de los datos están dadas por:
R Age S Ed Ex0 Ex1 LF M N NW U1 U2 W X
79.1 151 1 91 58 56 510 950 33 301 108 41 394 261
163.5 143 0 113 103 95 583 1012 13 102 96 36 557 194
57.8 142 1 89 45 44 533 969 18 219 94 33 318 250
196.9 136 0 121 149 141 577 994 157 80 102 39 673 167
123.4 141 0 121 109 101 591 985 18 30 91 20 578 174
68.2 121 0 110 118 115 547 964 25 44 84 29 689 126
96.3 127 1 111 82 79 519 982 4 139 97 38 620 168
155.5 131 1 109 115 109 542 969 50 179 79 35 472 206
85.6 157 1 90 65 62 553 955 39 286 81 28 421 239
Los datos tienen 14 variables continuas (la variable de respuesta R, las 12 variables predictoras y una variable categórica s):
- R: Tasa de criminalidad: # de delitos reportados a la policía por millón de población
- Edad: el número de hombres de 14 a 24 años por 1000 población
- S: variable indicadora para estados del sur (0 = no, 1 = sí)
- Ed: Media # de años de escolarización x 10 para personas de 25 años o más
- Ej0: 1960 Gasto per cápita en la policía por parte del gobierno estatal y local
- EX1: 1959 Gasto per cápita en la policía por parte del gobierno estatal y local
- LF: tasa de participación de la fuerza laboral por 1000 hombres urbanos civiles de 14 a 24 años.
- M: El número de hombres por 1000 hembras
- N: tamaño de la población estatal en cientos de miles
- NW: El número de no blancos por 1000 población
- U1: Tasa de desempleo de los hombres urbanos por cada 1000 de 14 a 24 años
- U2: Tasa de desempleo de los hombres urbanos por 1000 de 35 a 35 años
- W: Valor mediano de bienes y activos transferibles o ingresos familiares en decenas de $
- X: El número de familias por 1000 ganando por debajo de 1/2 el ingreso medio
Los datos no tienen valores faltantes.
Análisis gráfico de la relación entre las covariables x y la variable de respuesta Y
El análisis gráfico de la relación entre las variables explicativas y la variable de respuesta es un paso cuando se realiza una regresión lineal.
Ayuda a visualizar tendencias lineales, detectar anomalías y evaluar la relevancia de las variables antes de construir cualquier modelo.
Algunas variables se correlacionan positivamente con la tasa de criminalidad, mientras que otras se correlacionan negativamente.
Por ejemplo, observamos una fuerte relación positiva entre R (la tasa de criminalidad) y EX1.
En contraste, la edad parece estar correlacionada negativamente con el crimen.
Finalmente, el diagrama de caja de la variable binaria S (región que indica: norte o sur) sugiere que la tasa de criminalidad es relativamente similar entre las dos regiones. Luego, podemos analizar la matriz de correlación.
Mapa de calor de la matriz de correlación de Pearson
La matriz de correlación nos permite estudiar la fuerza de la relación entre variables. Mientras que la correlación de Pearson se usa comúnmente para medir las relaciones lineales, el Correlación de Spearman es más apropiado cuando queremos capturar relaciones monotónicas y potencialmente no lineales entre variables.
En este análisis, utilizaremos la correlación de Spearman para explicar mejor tales asociaciones no lineales.
La primera fila de la matriz de correlación muestra la fuerza de la relación entre cada covariable y la variable de respuesta R.
Por ejemplo, EX0 y EX1 muestran una correlación superior al 60% con R, lo que indica una asociación fuerte. Estas variables parecen ser buenos predictores de la tasa de criminalidad.
Sin embargo, dado que la correlación entre EX0 y EX1 es casi perfecta, probablemente transmiten información similar. Para evitar la redundancia, podemos seleccionar solo uno de ellos, preferiblemente el que tiene la correlación más fuerte con R.
Cuando varias variables son fuertemente correlacionados entre sí (una correlación del 60%, por ejemplo)tienden a transportar información redundante. En tales casos, mantenemos solo uno de ellos, el que está más fuertemente correlacionado con la variable de respuesta R. Esto nos permite reducir la multicolinealidad.
Este ejercicio nos permite seleccionar estas variables: [‘Ex1’, ‘LF’, ‘M’, ’N’, ‘NW’, ‘U2’].
Estudio de multicolinealidad utilizando el VIF (factores de inflación de varianza)
Antes de ajustar la regresión logística, es importante estudiar la multicolinealidad.
Cuando existe una correlación entre los predictores, los errores estándar de las estimaciones del coeficiente aumentan, lo que lleva a una inflación de sus variaciones. El factor de inflación de la varianza (VIF) es una herramienta de diagnóstico utilizada para medir cuánto se infla la varianza del coeficiente de un predictor debido a la multicolinealidad, y generalmente se proporciona en la salida de regresión bajo una columna “VIF”.
Este VIF se calcula para cada predictor en el modelo. El enfoque es retroceder la variable predictor I-TH contra todos los demás predictores. Luego obtenemos Rᵢ², que se puede usar para calcular el VIF usando la fórmula:
La siguiente tabla presenta los valores de VIF para las seis variables restantes, todas las cuales están por debajo de 5. Esto indica que la multicolinealidad no es una preocupación, y podemos continuar con el ajuste del modelo de regresión lineal.
Ajuste de una regresión lineal en seis variables
Si ajustamos una regresión lineal de la tasa de criminalidad en 10 variables, obtenemos lo siguiente:
Diagnóstico de residuos
Antes de interpretar los resultados de la regresión, primero debemos evaluar la calidad de los residuos, particularmente verificando la autocorrelación, la homoscedasticidad (varianza constante) y la normalidad. El diagnóstico de residuos viene dado por la tabla a continuación:
- El Durbin-Watson ≈2 no indica autocorrelación en los residuos.
- Desde el omnibus hasta la curtosis, todos los valores muestran que los residuos son simétricos y tienen una distribución normal.
- El bajo número de condición (3.06) confirma que no existe multicolinealidad entre los predictores.
Puntos principales para recordar
También podemos evaluar la calidad general del modelo a través de indicadores como la estadística R-cuadrado y F, que muestran resultados satisfactorios en este caso. (Consulte el Apéndice para obtener más detalles).
Ahora podemos interpretar los coeficientes de regresión desde una perspectiva estadística.
Excluyimos intencionalmente cualquier interpretación específica del negocio de los resultados.
El objetivo de este análisis es ilustrar algunos pasos simples y esenciales para modelar un problema utilizando una regresión lineal múltiple.
En el nivel de significancia del 5%, dos coeficientes son estadísticamente significativos: EX1 y NW.
Esto no es sorprendente, ya que estas fueron las dos variables que mostraron una correlación superior al 40% con la variable de respuesta R. Las variables que no son estadísticamente significativas pueden eliminarse o reevaluarse, o retener, dependiendo del contexto y los objetivos del estudio.
Esta publicación le ofrece algunas pautas para realizar una regresión lineal:
- Es importante verificar linealidad a través del análisis gráfico y para estudiar el correlación entre la variable de respuesta y los predictores.
- Examinar las correlaciones entre las variables ayuda a reducir multicolinealidad y apoya selección de variables.
- Cuando dos predictores están altamente correlacionados, pueden transmitir información redundante. En tales casos, puede retener el que es más fuertemente correlacionado con la respuestao, basado en la experiencia en el dominio, el que tiene mayor relevancia comercial o interpretabilidad práctica.
- El Factor de inflación de varianza (VIF) es una herramienta útil para cuantificar y evaluar la multicolinealidad.
- Antes de interpretar estadísticamente los coeficientes del modelo, es esencial verificar la autocorrelación, la normalidad y la homoscedasticidad de los residuos para garantizar que se cumplan los supuestos del modelo.
Si bien este análisis proporciona información valiosa, también tiene ciertas limitaciones.
La ausencia de valores faltantes en el conjunto de datos simplifica el estudio, pero este rara vez es el caso en los escenarios del mundo real.
Si estás construyendo un modelo predictivoes importante dividir los datos en capacitación, pruebasy potencialmente un Conjunto de validación fuera del tiempo para garantizar una evaluación robusta.
Para selección de variablestécnicas como selección paso a paso y se pueden aplicar otros métodos de selección de características.
Al comparar múltiples modelos, es esencial definir apropiado Métricas de rendimiento.
En el caso de la regresión lineal, las métricas de uso común incluyen la Error absoluto medio (MAE) y el Error cuadrado medio (MSE).
Créditos de imagen
Todas las imágenes y visualizaciones en este artículo fueron creadas por el autor utilizando Python (Pandas, Matplotlib, Seaborn y Plotly) y Excel, a menos que se indique lo contrario.
Referencias
Wasserman, L. (2013). Todas las estadísticas: un curso conciso de inferencia estadística. Springer Science & Business Media.
Datos y licencias
El conjunto de datos utilizado en este artículo contiene estadísticas demográficas y relacionadas con el crimen para 47 estados de EE. UU. En 1960.
Se origina en el programa de informes de delitos uniformes (UCR) del FBI y fuentes adicionales del gobierno de los Estados Unidos.
Como trabajo del gobierno de EE. UU., Los datos están en el dominio público bajo 17 Código de los Estados Unidos § 105 y es libre de usar, compartir y reproducir sin restricción.
Fuentes:
Codos
Importar datos
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# Load the dataset
df = pd.read_csv('data/Multiple_Regression_Dataset.csv')
df.head()
Análisis visual de las variables
Create a new figure
# Extract response variable and covariates
response = 'R'
covariates = [col for col in df.columns if col != response]
fig, axes = plt.subplots(nrows=4, ncols=4, figsize=(20, 18))
axes = axes.flatten()
# Plot boxplot for binary variable 'S'
sns.boxplot(data=df, x='S', y='R', ax=axes[0])
axes[0].set_title('Boxplot of R by S')
axes[0].set_xlabel('S')
axes[0].set_ylabel('R')
# Plot regression lines for all other covariates
plot_index = 1
for cov in covariates:
if cov != 'S':
sns.regplot(data=df, x=cov, y='R', ax=axes[plot_index], scatter=True, line_kws={"color": "red"})
axes[plot_index].set_title(f'{cov} vs R')
axes[plot_index].set_xlabel(cov)
axes[plot_index].set_ylabel('R')
plot_index += 1
# Hide unused subplots
for i in range(plot_index, len(axes)):
fig.delaxes(axes[i])
fig.tight_layout()
plt.show()
Análisis de la correlación entre variables
spearman_corr = df.corr(method='spearman')
plt.figure(figsize=(12, 10))
sns.heatmap(spearman_corr, annot=True, cmap="coolwarm", fmt=".2f", linewidths=0.5)
plt.title("Correlation Matrix Heatmap")
plt.show()
Filtrando predictores con alta intercorrelación (ρ> 0.6)
# Step 2: Correlation of each variable with response R
spearman_corr_with_R = spearman_corr['R'].drop('R') # exclude R-R
# Step 3: Identify pairs of covariates with strong inter-correlation (e.g., > 0.9)
strong_pairs = []
threshold = 0.6
covariates = spearman_corr_with_R.index
for i, var1 in enumerate(covariates):
for var2 in covariates[i+1:]:
if abs(spearman_corr.loc[var1, var2]) > threshold:
strong_pairs.append((var1, var2))
# Step 4: From each correlated pair, keep only the variable most correlated with R
to_keep = set()
to_discard = set()
for var1, var2 in strong_pairs:
if abs(spearman_corr_with_R[var1]) >= abs(spearman_corr_with_R[var2]):
to_keep.add(var1)
to_discard.add(var2)
else:
to_keep.add(var2)
to_discard.add(var1)
# Final selection: all covariates excluding the ones to discard due to redundancy
final_selected_variables = [var for var in covariates if var not in to_discard]
final_selected_variables
Análisis de multicolinealidad utilizando VIF
from statsmodels.stats.outliers_influence import variance_inflation_factor
from statsmodels.tools.tools import add_constant
from sklearn.preprocessing import StandardScaler
X = df[final_selected_variables]
X_with_const = add_constant(X)
vif_data = pd.DataFrame()
vif_data["variable"] = X_with_const.columns
vif_data["VIF"] = [variance_inflation_factor(X_with_const.values, i)
for i in range(X_with_const.shape[1])]
vif_data = vif_data[vif_data["variable"] != "const"]
print(vif_data)
Coloque un modelo de regresión lineal en seis variables después de la estandarización, no dividir los datos en tren y prueba
from sklearn.preprocessing import StandardScaler
from statsmodels.api import OLS, add_constant
import pandas as pd
# Variables
X = df[final_selected_variables]
y = df['R']
scaler = StandardScaler()
X_scaled_vars = scaler.fit_transform(X)
X_scaled_df = pd.DataFrame(X_scaled_vars, columns=final_selected_variables)
X_scaled_df = add_constant(X_scaled_df)
model = OLS(y, X_scaled_df).fit()
print(model.summary())