El conjunto de datos extraídos de manera simulada con inteligencia artificial generativa,representa la evaluación de la calidad del servicio en una organización, considerando factores operativos, humanos y contextuales que influyen en la percepción del cliente, son alrededor de 2000 registros. Todas las variables del conjunto de datos son de tipo numérico, por lo que no es necesario algún tipo de preparación de variables o transformarlas; estas son las variables independientes.
Se puede percibir de manera general que en este conjunto de datos, existen variable relevantes como tiempo_respuesta, satisfaccion_cliente, numero_quejas, capacitacion_empelado, disponibilidad_servico; probablemente existan variables muy correlacionadas y/o colineales como tiempo_respuesta_2, satisfaccion_2; tal vez existan variables derivadas de otras por lo que puedan estar correlacioandas indice_servicio, eficiencia_operativa y posiblemnnte existan variables poco deterministas para las predicción de la calidad de servicio como clima, dia_semana.
La variable dependiente es calidad_servicio como un indicador global de un valor numérico posiblemente encuestado y calculado que identifica la calidad del servicio percibida por el cliente; integra múltiples factores como eficiencia, atención, disponibilidad y experiencia del servicio, entre otros.
El documento markdown se puede encontrar en el servicio rpubs.com en el espacio del autor https://rpubs.com/rpizarrog/1427800.
Los datos para su descarga se encuentran en el servico github.com https://raw.githubusercontent.com/rpizarrog/Libro-Aprendizaje-Automatico.-Casos-de-Estudio-con-R-y-Python/refs/heads/main/datos/calidad%20en%20el%20servicio%20para%20Multiple%20Lasso%20y%20Ridge.csv
Las funciones se pueden encontrar en https://raw.githubusercontent.com/rpizarrog/Libro-Aprendizaje-Automatico.-Casos-de-Estudio-con-R-y-Python/refs/heads/main/R%20MarkDown/funciones/funciones%20para%20regresiOn%20lineal%20mUltiple_Lassso_y_Ridge.R
Implementar, evaluar un modelo de regresión lineal múltiple así como compararlo con los modelos generalizados y regulados como Lasso y Ridge que permitan predecir calidad en el servico de una organización.
Los datos deberán estar particionados en 70% para datos de entrenamiento y 30% para datos de validación
El modelo será óptimo si satisface los postulados de la regresión y si el valor de r square adjustado está por encima del 85%.
# install.packages("readr")
# install.packages("tidyverse")
# install.packages("psych")
# install.packages("dplyr")
# install.packages("ggplot2")
# install.packages("caret")
# install.packages("broom")
# install.packages("lmtest")
# install.packages("car")
# install.packages("stats")
# install.packages("flextable")
# install.packages("officer")
# install.packages("patchwork")
# install.packages("performance")
# install.packages("see")
# install.packages("car")
# install.packages("nortest")
# install.packages("lmtest")
library(readr) # cargar datos datos
library(tidyverse) # Para manipular
library (psych) # Para descriobir datos
library(dplyr) # Manipulación de datos
library(ggplot2) # gráficos
library(caret) # partición de datos
library(broom) # tidy modelos
library(lmtest) # Durbin-Watson
library(car) # VIF y diagnóstico, entre otras
library(stats) # lm, shapiro.test
library(patchwork) # Graficos organizados en columnas renglones
# Tablas compatibles con Word
library(flextable)
library(officer)
library(performance) # Para evaluar postulados de modelos
library(see) # Para evaluar postulados de modelos dependencia de performance
library(car) # Para verificar postulados de los modelos
library(nortest) # Para pruebas de normalidad Anderson-Darling
library(lmtest) # Para pruebas de homocedasticidad Breusch–Pagan y prueba de White y otras pruebas
library(glmnet) # Para modelos Lasso y Ridge
Se cargan funciones preparadas para el caso que se encuentra en la dirección URL del portal de github.com.
# source("../funciones/funciones para regresiOn lineal mUltiple_Lassso_y_Ridge.R") # Local
url <- "https://raw.githubusercontent.com/rpizarrog/Libro-Aprendizaje-Automatico.-Casos-de-Estudio-con-R-y-Python/refs/heads/main/R%20MarkDown/funciones/funciones%20para%20regresiOn%20lineal%20mUltiple_Lassso_y_Ridge.R"
source(url) # URL Internet
# datos <- f_cargar_datos("../datos/datos_frijol.csv")
url <- "https://raw.githubusercontent.com/rpizarrog/Libro-Aprendizaje-Automatico.-Casos-de-Estudio-con-R-y-Python/refs/heads/main/datos/calidad%20en%20el%20servicio%20para%20Multiple%20Lasso%20y%20Ridge.csv"
datos <- f_cargar_datos(url)
Con la función f_visualizar_head_tail_reducido_word(), se presentan los primeros y últimos registros, además de las primeras 4 y últimas 4 columnas del conjunto de datos.
f_visualizar_head_tail_reducido_word(datos)
tiempo_respuesta | satisfaccion_cliente | numero_quejas | capacitacion_empleado | ... | eficiencia_operativa | clima | dia_semana | calidad_servicio |
|---|---|---|---|---|---|---|---|---|
11.04 | 7.2 | 7.47 | 6.16 | ... | 0.58 | 12.46 | 3 | 102.57 |
7.84 | 7.16 | 4.35 | 5.19 | ... | 2.17 | 25.72 | 4 | 112.76 |
10.28 | 7.08 | 8.71 | 8.41 | ... | 2.41 | 21.02 | 1 | 105.95 |
9.83 | 6.17 | 1.78 | 8.1 | ... | 0.12 | 27.17 | 5 | 102.94 |
8.67 | 6.38 | 3.45 | 5.63 | ... | 1.18 | 22.09 | 6 | 103.39 |
4.97 | 7.6 | 6.04 | 6.26 | ... | 2.99 | 28.86 | 6 | 114.32 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
8.39 | 5.77 | 5.22 | 4.95 | ... | 0.58 | 23.37 | 4 | 101.06 |
8.09 | 7.87 | 4.78 | 5.51 | ... | 1.02 | 32.81 | 5 | 104.06 |
6.82 | 6.1 | 7.83 | 6.8 | ... | 2.28 | 30.62 | 5 | 102.35 |
8.16 | 7.56 | 2.88 | 6.74 | ... | -1.03 | 21.7 | 1 | 114.22 |
11.24 | 7.64 | 8.05 | 5.95 | ... | -0.79 | 13.15 | 6 | 98.71 |
11.04 | 6.53 | 8.69 | 3.5 | ... | -2.51 | 31.35 | 2 | 79.79 |
Con la función f_describir_datos() se muestran los estadísticos de las variables numéricas.
f_describir_datos(datos)
## $describe
## vars n mean sd median trimmed mad min max
## tiempo_respuesta 1 2000 10.00 1.96 10.00 9.99 1.91 3.90 16.83
## satisfaccion_cliente 2 2000 6.98 1.00 6.97 6.98 1.02 3.33 10.09
## numero_quejas 3 2000 5.02 2.04 5.04 5.01 1.99 -1.68 12.48
## capacitacion_empleado 4 2000 6.04 1.51 6.04 6.04 1.49 1.32 11.77
## experiencia_empleado 5 2000 8.00 2.00 7.95 7.97 1.97 1.36 15.58
## disponibilidad_servicio 6 2000 9.01 1.01 9.00 9.01 1.02 5.78 13.44
## tiempo_respuesta_2 7 2000 10.00 2.03 9.99 9.99 1.96 3.39 16.86
## satisfaccion_2 8 2000 6.29 0.95 6.30 6.29 0.96 3.09 9.63
## indice_servicio 9 2000 8.02 0.89 8.02 8.02 0.88 5.33 11.26
## eficiencia_operativa 10 2000 0.81 1.52 0.75 0.81 1.50 -3.83 5.62
## clima 11 2000 25.08 5.07 25.16 25.08 5.22 7.14 43.28
## dia_semana 12 2000 4.02 2.00 4.00 4.02 2.97 1.00 7.00
## calidad_servicio 13 2000 102.63 9.26 102.34 102.59 9.35 73.98 136.66
## range skew kurtosis se
## tiempo_respuesta 12.93 0.04 -0.02 0.04
## satisfaccion_cliente 6.76 -0.02 -0.19 0.02
## numero_quejas 14.16 0.03 0.03 0.05
## capacitacion_empleado 10.45 0.09 0.13 0.03
## experiencia_empleado 14.22 0.16 0.11 0.04
## disponibilidad_servicio 7.66 0.07 0.04 0.02
## tiempo_respuesta_2 13.47 0.03 0.03 0.05
## satisfaccion_2 6.54 -0.01 -0.17 0.02
## indice_servicio 5.93 0.09 0.07 0.02
## eficiencia_operativa 9.45 0.03 -0.07 0.03
## clima 36.14 -0.01 0.09 0.11
## dia_semana 6.00 0.00 -1.23 0.04
## calidad_servicio 62.68 0.06 0.07 0.21
##
## $structure
## [1] "'data.frame':\t2000 obs. of 13 variables:\n $ tiempo_respuesta : num 11.04 7.84 10.28 9.83 8.67 ...\n $ satisfaccion_cliente : num 7.2 7.16 7.08 6.17 6.38 7.6 6.69 7.22 6.49 5.53 ...\n $ numero_quejas : num 7.47 4.35 8.71 1.78 3.45 6.04 6.43 5.67 6.24 6.67 ...\n $ capacitacion_empleado : num 6.16 5.19 8.41 8.1 5.63 6.26 6.79 4.96 4.61 6.44 ...\n $ experiencia_empleado : num 8.59 8.43 10.17 6.41 6.79 ...\n $ disponibilidad_servicio: num 8.58 10.45 9.08 7.1 10.29 ...\n $ tiempo_respuesta_2 : num 10.93 7.54 10.1 10.04 8.22 ...\n $ satisfaccion_2 : num 6.5 6.29 6.3 5.5 6.04 7.25 6.03 6.88 6.21 4.96 ...\n $ indice_servicio : num 7.52 9.49 7.38 6.89 8.44 8.2 8.31 9.39 7.95 7.47 ...\n $ eficiencia_operativa : num 0.58 2.17 2.41 0.12 1.18 2.99 -0.11 3.38 0.75 1.36 ...\n $ clima : num 12.5 25.7 21 27.2 22.1 ...\n $ dia_semana : num 3 4 1 5 6 6 4 4 2 2 ...\n $ calidad_servicio : num 103 113 106 103 103 ..."
Se particionan los datos 70% para datos de entrenamiento y 30% para datos de validación llamando a la función f_particonar_datos(); luego se presentan en las TABLAS los primeros y últimos registros de ambas particiones
particion <- f_particionar_datos(datos)
datos_entrenamiento <- particion$datos_entrenamiento
datos_validacion <- particion$datos_validacion
f_visualizar_head_tail_reducido_word(datos_entrenamiento)
tiempo_respuesta | satisfaccion_cliente | numero_quejas | capacitacion_empleado | ... | eficiencia_operativa | clima | dia_semana | calidad_servicio |
|---|---|---|---|---|---|---|---|---|
11.83 | 6.27 | 4.02 | 7.13 | ... | 0 | 31.57 | 5 | 110.53 |
12.16 | 6.19 | 5.29 | 5.33 | ... | 5.17 | 28.51 | 2 | 118.89 |
7.72 | 8.38 | 6.26 | 6.39 | ... | 2 | 18.41 | 7 | 111.88 |
11.08 | 6.28 | 5.25 | 6.23 | ... | -0.45 | 28.82 | 7 | 92.7 |
9.7 | 6.66 | 3.21 | 7.37 | ... | 3.25 | 15.71 | 1 | 108.86 |
7.21 | 8.47 | 4.27 | 4.81 | ... | 0.72 | 41.68 | 5 | 109.17 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
12.7 | 5.05 | 4.15 | 7.42 | ... | 0.04 | 29.52 | 6 | 88.6 |
8.98 | 7.19 | 3.16 | 7.8 | ... | -0.15 | 24.82 | 6 | 108.34 |
10.41 | 6.13 | 3.39 | 7.96 | ... | 0.3 | 31.27 | 2 | 104.14 |
7.99 | 7.91 | 2.86 | 5.97 | ... | 0.39 | 23.57 | 1 | 107.83 |
9.39 | 7.64 | 6.84 | 6.59 | ... | 1.64 | 32.2 | 6 | 109.42 |
9.98 | 7.98 | 6.37 | 5.13 | ... | 1.73 | 19.3 | 4 | 103.32 |
f_visualizar_head_tail_reducido_word(datos_validacion)
tiempo_respuesta | satisfaccion_cliente | numero_quejas | capacitacion_empleado | ... | eficiencia_operativa | clima | dia_semana | calidad_servicio |
|---|---|---|---|---|---|---|---|---|
11.04 | 7.2 | 7.47 | 6.16 | ... | 0.58 | 12.46 | 3 | 102.57 |
10.28 | 7.08 | 8.71 | 8.41 | ... | 2.41 | 21.02 | 1 | 105.95 |
9.56 | 6.74 | 3.94 | 5.4 | ... | 2.7 | 26.43 | 7 | 111.89 |
4.91 | 9.11 | 4.08 | 6.15 | ... | 3.1 | 21.24 | 6 | 126.55 |
12.69 | 7.03 | 6.87 | 4.68 | ... | -1.36 | 20.9 | 5 | 89.55 |
11.23 | 8.42 | 4.24 | 4.52 | ... | 1.38 | 25.63 | 7 | 103.12 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
8.92 | 7.54 | 1.38 | 7.28 | ... | 1.05 | 20.78 | 2 | 123.11 |
8.15 | 6.39 | 4.21 | 4.96 | ... | 0.97 | 25.17 | 2 | 95.06 |
7.37 | 7.21 | 4.2 | 5.33 | ... | 1.42 | 27.22 | 4 | 109.05 |
9.18 | 6.49 | 6.15 | 5.03 | ... | 2.68 | 24.03 | 6 | 103.33 |
10.55 | 7.15 | 3.29 | 4.11 | ... | 2.68 | 19.37 | 7 | 107.73 |
11.04 | 6.53 | 8.69 | 3.5 | ... | -2.51 | 31.35 | 2 | 79.79 |
Al construir el modelo de regresión múltiple, se observa que los coeficientes que influyen en las las variables tiempo_respuesta, satisfaccion_cliente, numero_quejas, capacitacion_empleado, experiencia_empleado, son estadísticamente significativas a un 99.9% de confianza; luego la variable tiempo_respuesta_2 es significativa estadísticamente a un 90% y las variables satisfaccion_2, indice_servicio, eficiencia_operativa, clima y dia_semana son coeficientes con poco significado estadístico, por lo que hay que poner atención en estas variables y en la manera en que se construye el modelo.
Los valores r square y r square ajustado están por encima del 0.85 que significa que las variable dependiente explican aproximadamente el 85% la variabilidad de la calidad del servicio.
modelo_RLM <- f_construir_modelo_RLM(datos_entrenamiento, "calidad_servicio")
##
## ============================
## Modelo de Regresión Lineal Múltiple
## ============================
## Variable dependiente: calidad_servicio
## Número de observaciones: 1400
## Número de variables independientes: 12
##
## Call:
## lm(formula = formula_modelo, data = datos_modelo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.7993 -2.0347 -0.0223 2.1860 9.1262
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 51.10548 1.21015 42.231 <2e-16 ***
## tiempo_respuesta -1.56859 0.17995 -8.717 <2e-16 ***
## satisfaccion_cliente 2.65110 0.27014 9.814 <2e-16 ***
## numero_quejas -1.41318 0.03941 -35.860 <2e-16 ***
## capacitacion_empleado 1.87552 0.05368 34.938 <2e-16 ***
## experiencia_empleado 2.47867 0.10331 23.992 <2e-16 ***
## disponibilidad_servicio 2.89463 0.11483 25.208 <2e-16 ***
## tiempo_respuesta_2 -0.36065 0.16540 -2.181 0.0294 *
## satisfaccion_2 0.35659 0.26892 1.326 0.1850
## indice_servicio 0.04293 0.16030 0.268 0.7889
## eficiencia_operativa 0.07707 0.15867 0.486 0.6272
## clima -0.01768 0.01602 -1.104 0.2699
## dia_semana -0.01508 0.04107 -0.367 0.7135
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.025 on 1387 degrees of freedom
## Multiple R-squared: 0.8931, Adjusted R-squared: 0.8921
## F-statistic: 965.2 on 12 and 1387 DF, p-value: < 2.2e-16
Ejecutando la función f_multicolinealidad() se verifica que las variables que participan en el modelo, no tengan colinealidad o no estén correlacionadas. Los resultados se observan en modo consola:
resultado_vif <- f_multicolinealidad(modelo_RLM)
##
## ============================
## Diagnóstico de Multicolinealidad (VIF)
## ============================
## Variable VIF Interpretacion
## tiempo_respuesta tiempo_respuesta 19.51 Alta (problema serio)
## satisfaccion_cliente satisfaccion_cliente 10.94 Alta (problema serio)
## numero_quejas numero_quejas 1.01 Baja (aceptable)
## capacitacion_empleado capacitacion_empleado 1.01 Baja (aceptable)
## experiencia_empleado experiencia_empleado 6.75 Moderada (precaución)
## disponibilidad_servicio disponibilidad_servicio 2.05 Baja (aceptable)
## tiempo_respuesta_2 tiempo_respuesta_2 17.39 Alta (problema serio)
## satisfaccion_2 satisfaccion_2 9.94 Moderada (precaución)
## indice_servicio indice_servicio 3.07 Baja (aceptable)
## eficiencia_operativa eficiencia_operativa 9.00 Moderada (precaución)
## clima clima 1.00 Baja (aceptable)
## dia_semana dia_semana 1.01 Baja (aceptable)
Se identifican variables como tiempo_respuesta, satisfaccion_cliente, tiempo_respuesta_2 como problemas serio; luego la variable derivada llamada eficiencia_operativa también indica problema serio de colinealidad; también la variable denomiada satisfaccion_2 como problema moderado que es de llamar la atención, Se concluyen que estas variables están correlacionadas.
Ejecutando la función f_linealidad(), se valida el postulado de linealidad
f_linealidad_grid(modelo_RLM)
##
## ============================
## Diagnóstico de Linealidad (Grid)
## ============================
## - Los residuos deben verse aleatorios.
## - La línea roja (loess) debe ser aproximadamente horizontal.
## - Patrones curvos indican no linealidad.
La prueba de Ramsey RESET evalúa si faltan términos no lineales en el modelo. CITA Wooldrige o lo que es lo mismo si no hay evidencia de curvatura sugiere que no existe linealidad entre los residuales y las variables independientes.
f_linealidad_test(modelo_RLM)
##
## ============================
## Test de Linealidad (Ramsey RESET)
## ============================
##
## RESET test
##
## data: modelo
## RESET = 0.37346, df1 = 2, df2 = 1385, p-value = 0.6884
##
##
## Interpretación:
## ✔ No se rechaza H0 → El modelo es lineal (no hay evidencia de curvatura)
##
## RESET test
##
## data: modelo
## RESET = 0.37346, df1 = 2, df2 = 1385, p-value = 0.6884
Se valida el postulado de homocedasticidad llamando la función f_homocedasticidad(); esta función encapsula las pruebas de Breush-Pegan y White, el resultado indica que los residuales si gozan de la condición de homocedasticidad.
resultado_homo <- f_homocedasticidad(modelo_RLM)
##
## ============================
## Diagnóstico de Homocedasticidad
## ============================
##
## Breusch–Pagan:
##
## studentized Breusch-Pagan test
##
## data: modelo
## BP = 8.55, df = 12, p-value = 0.7408
##
##
## White Test (manual):
## Estadístico: 1.6906
## p-value: 0.4294
##
## Interpretación:
## ✔ BP: No hay heterocedasticidad
## ✔ White: No hay heterocedasticidad
Se valida el postulado de normalidad de los residuos del modelo de regresión mediante al ejecución de la función f_normalidad preparada para esta tarea. La densidad de los residuos se observa de manera normal y con la gráfico qq-plot los residuos se alinean adecuadamente; los valores de p-value son mayores a 0.05 por lo que el postulado de normalidad de los residuos es satisfactorio para este modelo con las pruebas de Shapiro-Wilk y Kolmogorov-Smirnov no así la prueba de Anderson-Darling.
f_normalidad(modelo_RLM)
##
## ============================
## Diagnóstico de Normalidad
## ============================
## Prueba p_value Interpretacion
## 1 Shapiro-Wilk 0.0915 Normalidad
## 2 Anderson-Darling 0.0242 No normalidad
## 3 Kolmogorov-Smirnov 0.4636 Normalidad
Ahora para verificar el postulado de independencia de residuos, se ejecuta la función f_independencia() que devuelve el gráfico sen donde los residuos se homogeneizan a la linea roja con valor cero. En los subtítulo de la imagen, el valor de Durbin-Watson alrededor de dos y el p-value por enciman de 0.05. Se concluye que si hay independencia de residuos en el modelo entrenado de regresión múltiple con estos datos.
tabla_independencia <- f_independencia(modelo_RLM, "Modelo RLM - Frijol")
##
## ============================
## Diagnóstico de Independencia
## ============================
## Prueba Estadistico p_value Interpretacion Decision
## 1 Durbin-Watson 1.9925 0.4429 Sin autocorrelación ✔ No se rechaza H0
ecuacion <- f_ecuacion_modelo(modelo_RLM)
##
## ============================
## Ecuación del Modelo de Regresión
## ============================
##
## ŷ = 51.1055 - 1.5686*tiempo_respuesta + 2.6511*satisfaccion_cliente - 1.4132*numero_quejas + 1.8755*capacitacion_empleado + 2.4787*experiencia_empleado + 2.8946*disponibilidad_servicio - 0.3607*tiempo_respuesta_2 + 0.3566*satisfaccion_2 + 0.0429*indice_servicio + 0.0771*eficiencia_operativa - 0.0177*clima - 0.0151*dia_semana
ecuacion
## [1] "ŷ = 51.1055 - 1.5686*tiempo_respuesta + 2.6511*satisfaccion_cliente - 1.4132*numero_quejas + 1.8755*capacitacion_empleado + 2.4787*experiencia_empleado + 2.8946*disponibilidad_servicio - 0.3607*tiempo_respuesta_2 + 0.3566*satisfaccion_2 + 0.0429*indice_servicio + 0.0771*eficiencia_operativa - 0.0177*clima - 0.0151*dia_semana"
Para evaluar el modelo de regresión múltiple, se ejecuta la función f_evaluacion() que devuelve los estadísticos R_square, R_square_ajustado, MSE, RMSE y MAE
El modelo de regresión lineal múltiple es óptimo en términos de calidad predictiva con un valor de r square=0.89 y r square ajustado=0.89; además con valores de RMSE y MAE alrededor de 4 y 3 unidades de margen de error en las predicciones.
f_evaluacion(list(modelo_RLM), list(datos_validacion), "calidad_servicio", "Regresión Lineal Múltiple")
##
## ============================
## Evaluación de Modelos
## ============================
## Modelo R_square R_square_ajustado MSE RMSE MAE
## 1 Regresión Lineal Múltiple 0.8974 0.8953 9.0071 3.0012 2.3766
El modelo de regresión lineal múltiple tienen calidad predictiva sin embargo, presenta problemas de multicolinealidad.
La pregunta es ¿qué hacer para disminuir la multicolienalidad?, la respuesta es que se puede eliminar variables, combinar variables que suena sensato, y aplicar modelos de que controlan los valores de los coeficientes como Lasso y Ridge.
En este caso, se siguen dos estrategias y alternativas además del modelo original que servirán de comparación y muy ilustrativas:
De acuerdo con la estrategia 1, se construye otro modelo lineal múltiple con variables combinadas y depuradas; se sugiere combinar (sumar los valores) tiempo_respuesta y tiempo_respuesta_2 en una sola variable llamada tiempo_respuesta_indicador, luego combinar (sumar los valores) satisfaccion_cliente con satisfaccion_cliente_2 y dejarlo en una variable única llamada satisfaccion_cliente_indicador, y dejar la variable eficiencia_operativa como está.
Se construye un nuevo conjunto de datos con variables combinadas y depuradas, este se llama datos_depurados.
datos_depurados <- data.frame(
tiempo_respuesta_indicador = datos$tiempo_respuesta + datos$tiempo_respuesta_2,
satisfaccion_cliente_indicador = datos$satisfaccion_cliente + datos$satisfaccion_2,
numero_quejas = datos$numero_quejas,
capacitacion_empleado = datos$capacitacion_empleado,
experiencia_empleado = datos$experiencia_empleado,
disponibilidad_servicio = datos$disponibilidad_servicio,
indice_servicio = datos$indice_servicio,
eficiencia_operativa = datos$eficiencia_operativa,
clima = datos$clima,
dia_semana = datos$dia_semana,
calidad_servicio = datos$calidad_servicio
)
f_visualizar_head_tail_reducido_word(datos_depurados)
tiempo_respuesta_indicador | satisfaccion_cliente_indicador | numero_quejas | capacitacion_empleado | ... | eficiencia_operativa | clima | dia_semana | calidad_servicio |
|---|---|---|---|---|---|---|---|---|
21.97 | 13.7 | 7.47 | 6.16 | ... | 0.58 | 12.46 | 3 | 102.57 |
15.38 | 13.45 | 4.35 | 5.19 | ... | 2.17 | 25.72 | 4 | 112.76 |
20.38 | 13.38 | 8.71 | 8.41 | ... | 2.41 | 21.02 | 1 | 105.95 |
19.87 | 11.67 | 1.78 | 8.1 | ... | 0.12 | 27.17 | 5 | 102.94 |
16.89 | 12.42 | 3.45 | 5.63 | ... | 1.18 | 22.09 | 6 | 103.39 |
10.1 | 14.85 | 6.04 | 6.26 | ... | 2.99 | 28.86 | 6 | 114.32 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
16.15 | 10.76 | 5.22 | 4.95 | ... | 0.58 | 23.37 | 4 | 101.06 |
16.08 | 14.81 | 4.78 | 5.51 | ... | 1.02 | 32.81 | 5 | 104.06 |
12.63 | 11.61 | 7.83 | 6.8 | ... | 2.28 | 30.62 | 5 | 102.35 |
16.8 | 14.82 | 2.88 | 6.74 | ... | -1.03 | 21.7 | 1 | 114.22 |
22.88 | 14.56 | 8.05 | 5.95 | ... | -0.79 | 13.15 | 6 | 98.71 |
22.07 | 12.02 | 8.69 | 3.5 | ... | -2.51 | 31.35 | 2 | 79.79 |
particion <- f_particionar_datos(datos_depurados)
datos_entrenamiento_dep <- particion$datos_entrenamiento
datos_validacion_dep <- particion$datos_validacion
f_visualizar_head_tail_reducido_word(datos_entrenamiento_dep)
## New names:
## New names:
## New names:
## • `...` -> `...5`
tiempo_respuesta_indicador | satisfaccion_cliente_indicador | numero_quejas | capacitacion_empleado | ... | eficiencia_operativa | clima | dia_semana | calidad_servicio |
|---|---|---|---|---|---|---|---|---|
23.17 | 11.92 | 4.02 | 7.13 | ... | 0 | 31.57 | 5 | 110.53 |
24.58 | 11.93 | 5.29 | 5.33 | ... | 5.17 | 28.51 | 2 | 118.89 |
15.01 | 16.27 | 6.26 | 6.39 | ... | 2 | 18.41 | 7 | 111.88 |
21.37 | 12.15 | 5.25 | 6.23 | ... | -0.45 | 28.82 | 7 | 92.7 |
19.26 | 12.72 | 3.21 | 7.37 | ... | 3.25 | 15.71 | 1 | 108.86 |
14.39 | 15.92 | 4.27 | 4.81 | ... | 0.72 | 41.68 | 5 | 109.17 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
25.95 | 9.11 | 4.15 | 7.42 | ... | 0.04 | 29.52 | 6 | 88.6 |
18.73 | 13.17 | 3.16 | 7.8 | ... | -0.15 | 24.82 | 6 | 108.34 |
21.07 | 11.45 | 3.39 | 7.96 | ... | 0.3 | 31.27 | 2 | 104.14 |
15.71 | 15.63 | 2.86 | 5.97 | ... | 0.39 | 23.57 | 1 | 107.83 |
18.22 | 14.92 | 6.84 | 6.59 | ... | 1.64 | 32.2 | 6 | 109.42 |
20.56 | 15.1 | 6.37 | 5.13 | ... | 1.73 | 19.3 | 4 | 103.32 |
f_visualizar_head_tail_reducido_word(datos_validacion_dep)
tiempo_respuesta_indicador | satisfaccion_cliente_indicador | numero_quejas | capacitacion_empleado | ... | eficiencia_operativa | clima | dia_semana | calidad_servicio |
|---|---|---|---|---|---|---|---|---|
21.97 | 13.7 | 7.47 | 6.16 | ... | 0.58 | 12.46 | 3 | 102.57 |
20.38 | 13.38 | 8.71 | 8.41 | ... | 2.41 | 21.02 | 1 | 105.95 |
19.88 | 12.97 | 3.94 | 5.4 | ... | 2.7 | 26.43 | 7 | 111.89 |
9.36 | 17.19 | 4.08 | 6.15 | ... | 3.1 | 21.24 | 6 | 126.55 |
24.92 | 13.55 | 6.87 | 4.68 | ... | -1.36 | 20.9 | 5 | 89.55 |
22.41 | 16.27 | 4.24 | 4.52 | ... | 1.38 | 25.63 | 7 | 103.12 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
18.76 | 14.32 | 1.38 | 7.28 | ... | 1.05 | 20.78 | 2 | 123.11 |
16.06 | 12.27 | 4.21 | 4.96 | ... | 0.97 | 25.17 | 2 | 95.06 |
14.56 | 14.23 | 4.2 | 5.33 | ... | 1.42 | 27.22 | 4 | 109.05 |
18.7 | 12.75 | 6.15 | 5.03 | ... | 2.68 | 24.03 | 6 | 103.33 |
21.87 | 13.75 | 3.29 | 4.11 | ... | 2.68 | 19.37 | 7 | 107.73 |
22.07 | 12.02 | 8.69 | 3.5 | ... | -2.51 | 31.35 | 2 | 79.79 |
Se construye el modelo de regresión múltiple con datos de entrenamiento depurados, se observa que los coeficientes que influyen en las las variables tiempo_respuesta_indicador, satisfaccion_cliente_indicador, numero_quejas, capacitacion_empleado, experiencia_empleado, disponibilidad_servicio son estadísticamente significativas a un 99.9% de confianza; luego la variable indice_servicio, eficiencia_operativa, clima y dia_semana son coeficientes con poco significado estadístico, por lo que hay que poner atención en estas variables y en la manera en que se construye el modelo.
Los valores r square y r square ajustado están por encima del 0.89 que significa que las variable dependiente explican aproximadamente el 89% la variabilidad de la calidad del servicio.
modelo_RLM_depurado <- f_construir_modelo_RLM(datos_entrenamiento_dep, "calidad_servicio")
##
## ============================
## Modelo de Regresión Lineal Múltiple
## ============================
## Variable dependiente: calidad_servicio
## Número de observaciones: 1400
## Número de variables independientes: 10
##
## Call:
## lm(formula = formula_modelo, data = datos_modelo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -10.2292 -2.0699 -0.0102 2.1853 9.4090
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 51.441662 1.217620 42.248 <2e-16 ***
## tiempo_respuesta_indicador -0.939560 0.037242 -25.229 <2e-16 ***
## satisfaccion_cliente_indicador 1.499972 0.059795 25.085 <2e-16 ***
## numero_quejas -1.406492 0.039804 -35.336 <2e-16 ***
## capacitacion_empleado 1.882494 0.054238 34.708 <2e-16 ***
## experiencia_empleado 2.439624 0.103232 23.632 <2e-16 ***
## disponibilidad_servicio 2.817412 0.114931 24.514 <2e-16 ***
## indice_servicio 0.157605 0.159983 0.985 0.325
## eficiencia_operativa 0.143825 0.158091 0.910 0.363
## clima -0.020394 0.016185 -1.260 0.208
## dia_semana -0.005744 0.041473 -0.138 0.890
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 3.057 on 1389 degrees of freedom
## Multiple R-squared: 0.8906, Adjusted R-squared: 0.8898
## F-statistic: 1131 on 10 and 1389 DF, p-value: < 2.2e-16
Al ejecutar de nuevo la función f_multicolinealidad() con el modelo lineal múltiple depurado, se oberva que habiendo juntado las variables, el modelo satisface el postulado de multicolinealidad que se presentaba cuando había alta correlación entre variables. Las variables experiencia_empleado y eficiencia_operativa presentan colinealidad moderada por lo que hay que poner atención a estas variables.
resultado_vif <- f_multicolinealidad(modelo_RLM_depurado)
##
## ============================
## Diagnóstico de Multicolinealidad (VIF)
## ============================
## Variable VIF
## tiempo_respuesta_indicador tiempo_respuesta_indicador 3.31
## satisfaccion_cliente_indicador satisfaccion_cliente_indicador 1.96
## numero_quejas numero_quejas 1.01
## capacitacion_empleado capacitacion_empleado 1.00
## experiencia_empleado experiencia_empleado 6.60
## disponibilidad_servicio disponibilidad_servicio 2.01
## indice_servicio indice_servicio 2.99
## eficiencia_operativa eficiencia_operativa 8.75
## clima clima 1.00
## dia_semana dia_semana 1.01
## Interpretacion
## tiempo_respuesta_indicador Baja (aceptable)
## satisfaccion_cliente_indicador Baja (aceptable)
## numero_quejas Baja (aceptable)
## capacitacion_empleado Baja (aceptable)
## experiencia_empleado Moderada (precaución)
## disponibilidad_servicio Baja (aceptable)
## indice_servicio Baja (aceptable)
## eficiencia_operativa Moderada (precaución)
## clima Baja (aceptable)
## dia_semana Baja (aceptable)
Al evaluar los modelos de regresión múltiple y regresión múltiple con datos depurados se observa que no hay mucha diferencia en los estadísticos, los resultados en ambos modelos son similares, sin embargo lo que ha cambiado es que disminuye la colinealidad en el modelo de regresión múltiple con datos depurados, de tal forma que la primera estrategia funciona para mejorar la validez del modelo.
f_evaluacion(
modelos = list(modelo_RLM, modelo_RLM_depurado),
datos_validacion_list = list(datos_validacion, datos_depurados),
variable_dependiente = "calidad_servicio",
nombres = c("Múltiple", "Multiple depurado"),
lambdas = c(NULL, NULL)
)
##
## ============================
## Evaluación de Modelos
## ============================
## Modelo R_square R_square_ajustado MSE RMSE MAE
## 1 Múltiple 0.8974 0.8953 9.0071 3.0012 2.3766
## 2 Multiple depurado 0.8910 0.8905 9.3360 3.0555 2.4543
Antes de construir los modelos regresión lineal múltiple, Lasso y Ridge respectivamente, se recomienda estandarizar o escalar los datos
tal vez fórmulas o haber descrito que significa esto antes.
Se ejecuta la función f_estandarizar_escalar() que devuelve una lista con dos conjuntos de datos, datos estandarizados y datos escalados, a partir de ahí, se hacen nuevamente las particiones de los datos de entrenamiento y datos de validación pero con los datos ya estandarizados o escalados. Para este caso de estudio se toman los datos estandarizados (estandar Z), es decir datos alrededor de media igual a 0 y desviación estándar de 1.
datos_estandarizados_escalados <- f_estandarizar_escalar(datos)
##
## ============================
## Transformación de datos
## ============================
## Variables numéricas transformadas: 13
## Variables no numéricas preservadas: 0
## Decimales aplicados: 4
En la tabla , se observan los primeros y últimos registros de los datos de entrenamiento y de validación cuyo origen son los datos estandarizados.
datos_estandarizados_escalados <- f_estandarizar_escalar(datos)
##
## ============================
## Transformación de datos
## ============================
## Variables numéricas transformadas: 13
## Variables no numéricas preservadas: 0
## Decimales aplicados: 4
particion <- f_particionar_datos(datos_estandarizados_escalados$datos_estandarizados)
datos_entrenamiento_est <- particion$datos_entrenamiento
datos_validacion_est <- particion$datos_validacion
f_visualizar_head_tail_reducido_word(datos_entrenamiento_est)
tiempo_respuesta | satisfaccion_cliente | numero_quejas | capacitacion_empleado | ... | eficiencia_operativa | clima | dia_semana | calidad_servicio |
|---|---|---|---|---|---|---|---|---|
0.9362 | -0.7119 | -0.4893 | 0.7223 | ... | -0.534 | 1.2803 | 0.4916 | 0.8537 |
1.1048 | -0.7918 | 0.1332 | -0.4715 | ... | 2.873 | 0.6768 | -1.0117 | 1.7567 |
-1.1636 | 1.3947 | 0.6086 | 0.2315 | ... | 0.784 | -1.3152 | 1.4937 | 0.9995 |
0.553 | -0.7019 | 0.1136 | 0.1254 | ... | -0.8306 | 0.7379 | 1.4937 | -1.0723 |
-0.152 | -0.3225 | -0.8862 | 0.8815 | ... | 1.6077 | -1.8477 | -1.5128 | 0.6733 |
-1.4242 | 1.4845 | -0.3667 | -0.8164 | ... | -0.0595 | 3.2742 | 0.4916 | 0.7068 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
1.3807 | -1.9299 | -0.4255 | 0.9147 | ... | -0.5076 | 0.876 | 0.9927 | -1.5151 |
-0.5199 | 0.2066 | -0.9107 | 1.1667 | ... | -0.6329 | -0.051 | 0.9927 | 0.6171 |
0.2107 | -0.8517 | -0.798 | 1.2728 | ... | -0.3363 | 1.2211 | -1.0117 | 0.1635 |
-1.0257 | 0.9254 | -1.0578 | -0.047 | ... | -0.277 | -0.2975 | -1.5128 | 0.562 |
-0.3104 | 0.6559 | 0.8928 | 0.3642 | ... | 0.5467 | 1.4045 | 0.9927 | 0.7338 |
-0.009 | 0.9953 | 0.6625 | -0.6041 | ... | 0.606 | -1.1396 | -0.0095 | 0.0749 |
f_visualizar_head_tail_reducido_word(datos_validacion_est)
tiempo_respuesta | satisfaccion_cliente | numero_quejas | capacitacion_empleado | ... | eficiencia_operativa | clima | dia_semana | calidad_servicio |
|---|---|---|---|---|---|---|---|---|
0.5326 | 0.2166 | 1.2016 | 0.079 | ... | -0.1518 | -2.4886 | -0.5106 | -0.0061 |
0.1443 | 0.0968 | 1.8093 | 1.5712 | ... | 1.0542 | -0.8004 | -1.5128 | 0.359 |
-0.2236 | -0.2427 | -0.5285 | -0.4251 | ... | 1.2453 | 0.2665 | 1.4937 | 1.0006 |
-2.5993 | 2.1235 | -0.4599 | 0.0724 | ... | 1.5089 | -0.757 | 0.9927 | 2.5841 |
1.3756 | 0.0469 | 0.9075 | -0.9026 | ... | -1.4302 | -0.8241 | 0.4916 | -1.4125 |
0.6297 | 1.4346 | -0.3814 | -1.0087 | ... | 0.3754 | 0.1088 | 1.4937 | 0.0533 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
-0.5505 | 0.556 | -1.7831 | 0.8218 | ... | 0.1579 | -0.8478 | -1.0117 | 2.2126 |
-0.9439 | -0.5921 | -0.3961 | -0.7169 | ... | 0.1052 | 0.018 | -1.0117 | -0.8173 |
-1.3425 | 0.2266 | -0.401 | -0.4715 | ... | 0.4018 | 0.4223 | -0.0095 | 0.6938 |
-0.4177 | -0.4923 | 0.5546 | -0.6705 | ... | 1.2321 | -0.2068 | 0.9927 | 0.076 |
0.2822 | 0.1667 | -0.847 | -1.2806 | ... | 1.2321 | -1.1258 | 1.4937 | 0.5512 |
0.5326 | -0.4523 | 1.7995 | -1.6852 | ... | -2.1881 | 1.2369 | -1.0117 | -2.4668 |
Se ejecuta la función f_construir_modelo_RLM para construir un modelo de regresión múltiple pero con datos estandarizados.
modelo_RLM_estandarizado <- f_construir_modelo_RLM(datos_entrenamiento_est, "calidad_servicio")
##
## ============================
## Modelo de Regresión Lineal Múltiple
## ============================
## Variable dependiente: calidad_servicio
## Número de observaciones: 1400
## Número de variables independientes: 12
##
## Call:
## lm(formula = formula_modelo, data = datos_modelo)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.05852 -0.21979 -0.00241 0.23614 0.98578
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.0003913 0.0087378 -0.045 0.9643
## tiempo_respuesta -0.3316211 0.0380450 -8.717 <2e-16 ***
## satisfaccion_cliente 0.2868306 0.0292277 9.814 <2e-16 ***
## numero_quejas -0.3114683 0.0086856 -35.860 <2e-16 ***
## capacitacion_empleado 0.3054589 0.0087429 34.938 <2e-16 ***
## experiencia_empleado 0.5363711 0.0223562 23.992 <2e-16 ***
## disponibilidad_servicio 0.3152815 0.0125071 25.208 <2e-16 ***
## tiempo_respuesta_2 -0.0789504 0.0362007 -2.181 0.0294 *
## satisfaccion_2 0.0367423 0.0277084 1.326 0.1850
## indice_servicio 0.0041358 0.0154376 0.268 0.7888
## eficiencia_operativa 0.0126381 0.0260080 0.486 0.6271
## clima -0.0096860 0.0087752 -1.104 0.2699
## dia_semana -0.0032506 0.0088540 -0.367 0.7136
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.3267 on 1387 degrees of freedom
## Multiple R-squared: 0.8931, Adjusted R-squared: 0.8921
## F-statistic: 965.2 on 12 and 1387 DF, p-value: < 2.2e-16
Aún con los datos estandarizados el modelo de regresión múltiple sigue presentando problemas de multicolinealidad por lo que el modelo carece de de validez predictiva. Por eso la necesidad de construir modelos Lasso y Ridge.
resultado_vif <- f_multicolinealidad(modelo_RLM_estandarizado)
##
## ============================
## Diagnóstico de Multicolinealidad (VIF)
## ============================
## Variable VIF Interpretacion
## tiempo_respuesta tiempo_respuesta 19.51 Alta (problema serio)
## satisfaccion_cliente satisfaccion_cliente 10.94 Alta (problema serio)
## numero_quejas numero_quejas 1.01 Baja (aceptable)
## capacitacion_empleado capacitacion_empleado 1.01 Baja (aceptable)
## experiencia_empleado experiencia_empleado 6.75 Moderada (precaución)
## disponibilidad_servicio disponibilidad_servicio 2.05 Baja (aceptable)
## tiempo_respuesta_2 tiempo_respuesta_2 17.39 Alta (problema serio)
## satisfaccion_2 satisfaccion_2 9.94 Moderada (precaución)
## indice_servicio indice_servicio 3.07 Baja (aceptable)
## eficiencia_operativa eficiencia_operativa 9.00 Moderada (precaución)
## clima clima 1.00 Baja (aceptable)
## dia_semana dia_semana 1.01 Baja (aceptable)
Se ejecuta la función para construir modelo Lasso y Ridge llamando la función f_construir_modelo_lasso. Se devuelve el modelo a través del cual se pueden acceder a los estadísticos importantes del modelo.
# Modelo Lasso
res_lasso <- f_construir_modelo_lasso(
datos_entrenamiento_est,
"calidad_servicio"
)
##
## ============================
## Modelo LASSO (Regresión L1)
## ============================
## Variable dependiente: calidad_servicio
## Observaciones: 1400
## Variables independientes: 12
## Lambda.min: 0.002188
## Lambda.1se: 0.024576
##
## Coeficientes (lambda.min):
## 13 x 1 sparse Matrix of class "dgCMatrix"
## s=0.002187792
## (Intercept) -0.0003166762
## tiempo_respuesta -0.3305100847
## satisfaccion_cliente 0.2852568848
## numero_quejas -0.3094298355
## capacitacion_empleado 0.3033840870
## experiencia_empleado 0.5301704023
## disponibilidad_servicio 0.3125719117
## tiempo_respuesta_2 -0.0751453577
## satisfaccion_2 0.0356333799
## indice_servicio 0.0052434379
## eficiencia_operativa 0.0176459354
## clima -0.0076966165
## dia_semana -0.0006721632
##
## Coeficientes (lambda.1se):
## 13 x 1 sparse Matrix of class "dgCMatrix"
## s=0.02457599
## (Intercept) -0.0003166762
## tiempo_respuesta -0.3305100847
## satisfaccion_cliente 0.2852568848
## numero_quejas -0.3094298355
## capacitacion_empleado 0.3033840870
## experiencia_empleado 0.5301704023
## disponibilidad_servicio 0.3125719117
## tiempo_respuesta_2 -0.0751453577
## satisfaccion_2 0.0356333799
## indice_servicio 0.0052434379
## eficiencia_operativa 0.0176459354
## clima -0.0076966165
## dia_semana -0.0006721632
modelo_lasso <- res_lasso$modelo
lambda_min <- res_lasso$lambda_min
lambda_1se <- res_lasso$lambda_1se
cv_lasso <- res_lasso$cv
# Modelo Ridge
res_ridge <- f_construir_modelo_ridge(
datos_entrenamiento_est,
"calidad_servicio"
)
##
## ============================
## Modelo RIDGE (Regresión L2)
## ============================
## Variable dependiente: calidad_servicio
## Observaciones: 1400
## Variables independientes: 12
## Lambda.min: 0.063775
## Lambda.1se: 0.101548
##
## Coeficientes (lambda.min):
## 13 x 1 sparse Matrix of class "dgCMatrix"
## s=0.06377529
## (Intercept) -0.0008266915
## tiempo_respuesta -0.1892412778
## satisfaccion_cliente 0.1948854413
## numero_quejas -0.2919240142
## capacitacion_empleado 0.2884723936
## experiencia_empleado 0.3952557251
## disponibilidad_servicio 0.2709740034
## tiempo_respuesta_2 -0.1330331483
## satisfaccion_2 0.0916098384
## indice_servicio 0.0506509094
## eficiencia_operativa 0.1576564494
## clima -0.0121542071
## dia_semana 0.0000273134
##
## Coeficientes (lambda.1se):
## 13 x 1 sparse Matrix of class "dgCMatrix"
## s=0.1015483
## (Intercept) -0.0008266915
## tiempo_respuesta -0.1892412778
## satisfaccion_cliente 0.1948854413
## numero_quejas -0.2919240142
## capacitacion_empleado 0.2884723936
## experiencia_empleado 0.3952557251
## disponibilidad_servicio 0.2709740034
## tiempo_respuesta_2 -0.1330331483
## satisfaccion_2 0.0916098384
## indice_servicio 0.0506509094
## eficiencia_operativa 0.1576564494
## clima -0.0121542071
## dia_semana 0.0000273134
modelo_ridge <- res_ridge$modelo
lambda_ridge <- res_ridge$lambda_min
Con la misma función llamada f_evaluacion() se presentan las evaluaciones de todos los modelos.
No existe mucha difrencia entre todos los modelos en cuanto a los estaísticos.
lambda_lasso <- res_lasso$lambda_min
lambda_ridge <- res_ridge$lambda_min
f_evaluacion(
modelos = list(modelo_RLM, modelo_RLM_depurado, modelo_RLM_estandarizado, modelo_lasso, modelo_ridge),
datos_validacion_list = list(
datos_validacion,
datos_validacion_dep,
datos_validacion_est,
datos_validacion_est,
datos_validacion_est
),
variable_dependiente = "calidad_servicio",
nombres = c("Múltiple", "Múltiple datos depurados", "Múltiple datos estandarizados", "Lasso estandarizado", "Ridge estandarizado"),
lambdas = c(NA, NA, lambda_lasso, lambda_ridge)
)
##
## ============================
## Evaluación de Modelos
## ============================
## Modelo R_square R_square_ajustado MSE RMSE MAE
## 1 Múltiple 0.8974 0.8953 9.0071 3.0012 2.3766
## 2 Múltiple datos depurados 0.8919 0.8901 9.4842 3.0796 2.4502
## 3 Múltiple datos estandarizados 0.8974 0.8953 0.1051 0.3242 0.2567
## 4 Lasso estandarizado 0.8972 0.8951 0.1053 0.3244 0.2570
## 5 Ridge estandarizado 0.8882 0.8859 0.1145 0.3384 0.2679
El modelo Lasso y Ridge no mejoran el coeficiente de determinación respecto a la regresión lineal múltiple, pero ofrece ventajas en términos de estabilidad del modelo y control de la multicolinealidad.
Ejecutando la función f_validar_postulados_modelos se resume la validez de los modelos observándose que los modelos Lasso y Ridge no se validan con los postulados solo el de normalidad dado que estos modelos buscan optimizar como tal la multicolinealidad presentada en los modelos de regresión múltiple. Ahora bien, el modelo con datos depurados reduce la multicolienealidad. La salida en modo consola:
f_validar_postulados_modelos(
modelos = list(modelo_RLM, modelo_RLM_depurado, modelo_RLM_estandarizado, modelo_lasso, modelo_ridge),
datos_list = list(datos_entrenamiento, datos_entrenamiento_dep, datos_entrenamiento_est, datos_entrenamiento_est, datos_entrenamiento_est),
variable_dependiente = "calidad_servicio",
nombres = c("Lineal", "Lineal datos depurados", "Lineal datos estandarizados", "Lasso", "Ridge")
)
##
## ============================
## Validación de Postulados
## ============================
## Modelo VIF_Max Linealidad Homocedasticidad Normalidad
## 1 Lineal 19.51 Cumple Cumple Cumple
## 2 Lineal datos depurados 8.75 Cumple Cumple Cumple
## 3 Lineal datos estandarizados 19.51 Cumple Cumple Cumple
## 4 Lasso NA NA NA Cumple
## 5 Ridge NA NA NA Cumple
## Independencia
## 1 Cumple
## 2 Cumple
## 3 Cumple
## 4 NA
## 5 NA
Este caso de estudio cumple con le objetivo planteado. Se construyó un modelo de regresión lineal múltiple con datos relacionados con la calidad de servicio como variable dependiente.
Se construyó el modelo de regresión lineal múltiple con los datos originales y el modelo presenta problemas de multicolinealidad; para disminuir la multicolinealidad, se usaron dos estrategias:
Como primera estrategia para disminuir multicolinealidad, se construyó otro modelo de regresión múltiple pero con datos depurados combinando variables que evidenciaban alta correlación y/o colinealidad. Los resultados de ambos modelos el de regresión múltiple con datos originales y el de regresión múltiple con datos depurados cumplen con calidad predictiva alrededor del 89% en r square y r square ajustado; los estadísticos MSE, RMSE y MAE son muy similares., sin embargo el segundo satisface el postulado de no multicolienalidad.
Como segunda estrategia, se construyeron otros tres modelos con datos estandarizados: regresión múltiple, modelo Lasso y modelo Ridge; Los resultados de los modelos son similares en calidad predictiva sin embargo lo que ofrecen los modelos Lasso y Ridge es que hacen mas estables los coeficientes y con ello disminuyen la multicolinealidad que pudiera existir en los modelos de regresión múltiple.
Este caso de estudio sirve como evidencia para que los lectores puedan decidir las mejores estrategias con los datos y construir diversos modelos tratando de llegar a tener modelos con validez o que cumplan con los postulados de la regresión y con calidad predictiva, es decir que los estadísticos como r square y r square ajustado, MSE, RMSE y MAE sean satisfactorios.
Todos los modelos cumplen con la expectativa de tener un valor r square y r square ajustado por encima del 85% establecido como métrica inicial al principio del caso.