Splines de regresión adaptativa multivariante en R

Las splines de regresión adaptativa multivariante (MARS) se pueden utilizar para modelar relaciones no lineales entre un conjunto de variables predictoras y una variable de respuesta .

Este método funciona de la siguiente manera:

1. Divida un conjunto de datos en k piezas.

2. Ajuste un modelo de regresión a cada pieza.

3. Utilice la validación cruzada de k-veces para elegir un valor para k .

Este tutorial proporciona un ejemplo paso a paso de cómo ajustar un modelo MARS a un conjunto de datos en R.

Paso 1: cargue los paquetes necesarios

Para este ejemplo, usaremos el conjunto de datos Salarios del paquete ISLR , que contiene los salarios anuales de 3,000 personas junto con una variedad de variables predictoras como edad, educación, raza y más.

Antes de ajustar un modelo MARS a los datos, cargaremos los paquetes necesarios:

biblioteca (ISLR)       #contiene 
biblioteca de conjuntos de datos de salarios (dplyr)      # 
biblioteca de lucha de datos (ggplot2)    # 
biblioteca de trazado (tierra)      # 
biblioteca de modelos de ajuste MARS ( símbolo de intercalación)      # ajustes de parámetros del modelo

Paso 2: Ver datos

A continuación, veremos las primeras seis filas del conjunto de datos con el que estamos trabajando:

#ver las primeras seis filas del 
encabezado de datos (salario)

       año edad región de educación de la raza maritl
231655 2006 18 1. Nunca se ha casado 1. Blanco 1. <HS Grad 2. Atlántico Medio
86582 2004 24 1. Nunca se casó 1. Blanco 4. Graduado universitario 2. Atlántico medio
161300 2003 45 2. Casado 1. Blanco 3. Algo de universidad 2. Atlántico Medio
155159 2003 43 2. Casado 3. Asiático 4. Graduado universitario 2. Atlántico Medio
11443 2005 50 4. Divorciado 1. Blanco 2. Graduado HS 2. Atlántico Medio
376662 2008 54 2. Casado 1. Blanco 4. Graduado universitario 2. Atlántico Medio
             jobclass health health_ins logwage salarial
231655 1. Industrial 1. <= Bueno 2. No 4.318063 75.04315
86582 2. Información 2.> = Muy buena 2. No 4.255273 70.47602
161300 1. Industrial 1. <= Bueno 1. Sí 4.875061 130.98218
155159 2. Información 2.> = Muy bien 1. Sí 5.041393 154.68529
11443 2. Información 1. <= Bueno 1. Sí 4.318063 75.04315
376662 2. Información 2.> = Muy bien 1. Sí 4.845098 127.11574

Paso 3: construir y optimizar el modelo MARS

A continuación, crearemos el modelo MARS para este conjunto de datos y realizaremos una validación cruzada de k veces para determinar qué modelo produce el RMSE de prueba más bajo (error cuadrático medio).

#crear una cuadrícula de sintonía
 hyper_grid <- expandir. cuadrícula (grado = 1: 3,
                          nprune = seq (2, 50, length.out = 10) %>% 
                          floor ())

#Haga que este ejemplo sea reproducible
 set.seed (1)

#fit MARS modelo usando k-fold cross-validation
 cv_mars <- train (
  x = subconjunto (Salario, seleccionar = -c (salario, logwage)),
  y = Salario $ salario,
  método = " tierra ",
  métrica = " RMSE ",
  trControl = trainControl (método = " cv ", número = 10),
  tuneGrid = hyper_grid)

# mostrar el modelo con el RMSE de prueba más bajo 
cv_mars $ results %>% 
  filter (nprune == cv_mars $ bestTune $ nprune, degree = cv_mars $ bestTune $ degree)    
grado nprune RMSE Rsquared MAE RMSESD RsquaredSD MAESD		
1 12 33.8164 0.3431804 22.97108 2.240394 0.03064269 1.4554

A partir del resultado, podemos ver que el modelo que produjo el MSE de prueba más bajo fue uno con solo efectos de primer orden (es decir, sin términos de interacción) y 12 términos. Este modelo produjo un error cuadrático medio (RMSE) de 33,8164 .

Nota: Utilizamos el método = ”tierra” para especificar un modelo MARS. Puede encontrar la documentación de este método aquí .

También podemos crear un gráfico para visualizar la prueba RMSE en función del grado y el número de términos:

#display test RMSE por términos y grado
ggplot (cv_mars)

Modelo MARS en R

En la práctica, encajaríamos un modelo MARS junto con varios otros tipos de modelos como:

Luego compararíamos cada modelo para determinar cuál conduce al error de prueba más bajo y elegiríamos ese modelo como el óptimo para usar.

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

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

Deja un comentario

Un modelo de regresión lineal puede ser útil para dos cosas: (1) Cuantificar la relación entre una o más variables…
statologos comunidad-2

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

You have Successfully Subscribed!