Regresión de componentes principales en R (paso a paso)

Dado un conjunto de p variables predictoras y una variable de respuesta, la regresión lineal múltiple utiliza un método conocido como mínimos cuadrados para minimizar la suma de los residuos al cuadrado (RSS):

RSS = Σ (y i – ŷ i ) 2

dónde:

  • Σ : símbolo griego que significa suma
  • y i : El valor de respuesta real para la i- ésima observación
  • ŷ i : el valor de respuesta predicho basado en el modelo de regresión lineal múltiple

Sin embargo, cuando las variables predictoras están altamente correlacionadas, la multicolinealidad puede convertirse en un problema. Esto puede hacer que las estimaciones de los coeficientes del modelo no sean confiables y tengan una alta varianza.

Una forma de evitar este problema es utilizar la regresión de componentes principales , que encuentra M combinaciones lineales (conocidas como «componentes principales») de los predictores p originales y luego usa mínimos cuadrados para ajustar un modelo de regresión lineal utilizando los componentes principales como predictores.

Este tutorial proporciona un ejemplo paso a paso de cómo realizar la regresión de componentes principales en R.

Paso 1: cargue los paquetes necesarios

La forma más sencilla de realizar la regresión de componentes principales en R es mediante el uso de funciones del paquete pls .

# instalar paquete pls (si aún no está instalado) 
install.packages (" pls ")

cargar biblioteca de paquetes de
 pls (pls)

Paso 2: ajuste el modelo de PCR

Para este ejemplo, usaremos el conjunto de datos R integrado llamado mtcars que contiene datos sobre varios tipos de autos:

#ver las primeras seis filas del conjunto de datos mtcars
cabeza (mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21,0 6160110 3,90 2,620 16,46 0 1 4 4
Mazda RX4 Wag 21.0 6160110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22,8 4108 93 3,85 2,320 18,61 1 1 4 1
Hornet 4 Impulso 21,4 6258110 3,08 3,215 19,44 1 0 3 1
Hornet Sportabout 18,7 8360175 3,15 3,440 17,02 0 0 3 2
Valiente 18,1 6225105 2,76 3,460 20,22 1 0 3 1

Para este ejemplo, ajustaremos un modelo de regresión de componentes principales (PCR) utilizando hp como variable de respuesta y las siguientes variables como variables predictoras:

  • mpg
  • disp
  • maldita sea
  • peso
  • qsec

El siguiente código muestra cómo ajustar el modelo de PCR a estos datos. Tenga en cuenta los siguientes argumentos:

  • scale = TRUE : Esto le dice a R que cada una de las variables predictoras debe ser escalada para tener una media de 0 y una desviación estándar de 1. Esto asegura que ninguna variable predictiva sea demasiado influyente en el modelo si se mide en diferentes unidades .
  • validation = ”CV” : Esto le dice a R que use k-veces la validación cruzada para evaluar el desempeño del modelo. Tenga en cuenta que esto usa k = 10 pliegues por defecto. También tenga en cuenta que puede especificar «LOOCV» en su lugar para realizar una validación cruzada de dejar uno fuera .
#Haga que este ejemplo sea reproducible
 set.seed (1)

#fit PCR model
 model <- pcr (hp ~ mpg + disp + drat + wt + qsec, data = mtcars, scale = TRUE , validation = " CV ")

Paso 3: elija la cantidad de componentes principales

Una vez que hemos ajustado el modelo, necesitamos determinar la cantidad de componentes principales que vale la pena mantener.

La forma de hacerlo es mirando el error cuadrático medio de la raíz de prueba (prueba RMSE) calculado por la validación cruzada de k-veces:

#Ver resumen del resumen de ajuste del modelo
 (modelo)

Datos: Dimensión X: 32 5 
	Dimensión Y: 32 1
Método de ajuste: svdpc
Número de componentes considerados: 5

VALIDACIÓN: RMSEP
Validado de forma cruzada utilizando 10 segmentos aleatorios.
       (Intercepción) 1 comps 2 comps 3 comps 4 comps 5 comps
CV 69,66 44,56 35,64 35,83 36,23 36,67
adjCV 69,66 44,44 35,27 35,43 35,80 36,20

ENTRENAMIENTO:% de varianza explicada
    1 comps 2 comps 3 comps 4 comps 5 comps
X 69,83 89,35 95,88 98,96 100,00
CV 62,38 81,31 81,96 81,98 82,03

Hay dos tablas de interés en la salida:

1. VALIDACIÓN: RMSEP

Esta tabla nos dice el RMSE de prueba calculado por la validación cruzada de k-veces. Podemos ver lo siguiente:

  • Si solamente se utiliza el término de intersección en el modelo, el RMSE prueba es 69.66 .
  • Si agregamos el primer componente principal, la prueba RMSE cae a 44.56.
  • Si agregamos el segundo componente principal, la prueba RMSE cae a 35,64.

Podemos ver que agregar componentes principales adicionales en realidad conduce a un aumento en el RMSE de prueba. Por lo tanto, parece que sería óptimo utilizar solo dos componentes principales en el modelo final.

2. ENTRENAMIENTO:% de variación explicada

Esta tabla nos dice el porcentaje de la varianza en la variable de respuesta explicada por los componentes principales. Podemos ver lo siguiente:

  • Utilizando solo el primer componente principal, podemos explicar el 69,83% de la variación en la variable de respuesta.
  • Al agregar el segundo componente principal, podemos explicar el 89,35% de la variación en la variable de respuesta.

Tenga en cuenta que siempre podremos explicar más varianza utilizando más componentes principales, pero podemos ver que agregar más de dos componentes principales en realidad no aumenta mucho el porcentaje de varianza explicada.

También podemos visualizar la prueba RMSE (junto con la prueba MSE y R-squared) en función del número de componentes principales utilizando la función validationplot () .

#visualize gráficos de validación cruzada
 validationplot (modelo)
validationplot (modelo, val.type = "MSEP")
validationplot (modelo, val.type = "R2")

Regresión de componentes principales en R

Gráfico de validación cruzada de regresión de componentes principales en R

Gráfica de R-cuadrado de regresión de componentes principales en R

En cada gráfico podemos ver que el ajuste del modelo mejora al agregar dos componentes principales, pero tiende a empeorar cuando agregamos más componentes principales.

Por lo tanto, el modelo óptimo incluye solo los dos primeros componentes principales.

Paso 4: use el modelo final para hacer predicciones

Podemos utilizar el modelo de PCR final con dos componentes principales para hacer predicciones sobre nuevas observaciones.

El siguiente código muestra cómo dividir el conjunto de datos original en un conjunto de entrenamiento y prueba y usar el modelo de PCR con dos componentes principales para hacer predicciones en el conjunto de prueba.

#define los conjuntos de entrenamiento y prueba
 train <- mtcars [1:25, c ("hp", "mpg", "disp", "drat", "wt", "qsec")]
y_test <- mtcars [26: nrow (mtcars), c ("hp")]
test <- mtcars [26: nrow (mtcars), c ("mpg", "disp", "drat", "wt", "qsec")]
    
#utilizar modelo para hacer predicciones en un modelo de conjunto de prueba
 <- pcr (hp ~ mpg + disp + drat + wt + qsec, data = train, scale = TRUE , validation = " CV ")
pcr_pred <- predecir (modelo, prueba, ncomp = 2 )

#calcular RMSE
 sqrt ( mean ((pcr_pred - y_test) ^ 2))

[1] 56.86549

Podemos ver que el RMSE de prueba resulta ser 56.86549 . Ésta es la desviación promedio entre el valor predicho de hp y el valor observado de hp para las observaciones en el conjunto de prueba.

El uso completo del código R en este ejemplo se puede encontrar aquí .

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

Una forma de cuantificar la relación entre dos variables es utilizar el coeficiente de correlación de Pearson , que es…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!