Contexto de los datos

El conjunto de datos extraídos de manera simulada con inteligencia artificial generativa,representa la evaluación de rendimiento académico de estudiantes de una Institución educativa, considerando factores tales como académicos, conductuales, socioeconómicos y psicológicos que influyen en el aprovechamiento escolar. Son alrededor de 6000 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. La naturaleza de este conjunto de datos es explicar el desempeño académico.

La variable dependiente es rendimiento_academico como un indicador que representa el desempeño académico global del estudiante en una escala: 70.00 a 100.00.

El documento markdown se puede encontrar en el servicio rpubs.com en el espacio del autor https://rpubs.com/rpizarrog/1428612.

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/datos%20educacion%20para%20regresiones%20multiple%20polinomiales%20rendimiento_academico.csv

Las funciones se pueden encontrar en

Objetivo

Implementar, evaluar y comparar modelos de regresión lineal múltiple, modelos de regresión polinomial múltiple de segundo y tercer orden, así como modelos de regresión regularizada como Lasso y Ridge, con el propósito de predecir y explicar el rendimiento académico de estudiantes, considerando la presencia de relaciones no lineales y multicolinealidad entre las variables independientes.

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%.

Descripción

Cargar librerías

# 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

Cargar funciones

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_POLINOMIAL 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_POLINOMIAL%20Lassso_y_Ridge.R"
source(url) # URL Internet

Cargar datos

# datos <- f_cargar_datos("../datos/datos educacion para regresiones multiple polinomiales rendimiento_academico.csv") # Cargar datos Localmente
url <- "https://raw.githubusercontent.com/rpizarrog/Libro-Aprendizaje-Automatico.-Casos-de-Estudio-con-R-y-Python/refs/heads/main/datos/datos%20educacion%20para%20regresiones%20multiple%20polinomiales%20rendimiento_academico.csv"
datos <- f_cargar_datos(url) # Cargar datos URL

Visualizar datos

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)

horas_estudio

tiempo_lectura

horas_sueno

uso_redes

...

nivel_socioeconomico

apoyo_familiar

estres

rendimiento_academico

9

9

8

6

...

3

8

5

77.96

1

1

6

4

...

5

4

1

81.15

6

6

9

7

...

2

1

4

84.74

4

4

5

6

...

5

8

5

84.77

5

5

6

5

...

3

2

2

82.41

10

10

5

8

...

5

4

5

79.28

...

...

...

...

...

...

...

...

...

4

3

5

5

...

4

5

4

82.79

4

5

9

3

...

1

7

10

85.53

7

6

5

1

...

4

1

4

87.01

5

4

5

5

...

4

10

10

87.86

6

7

4

7

...

5

5

3

91.4

9

9

8

5

...

2

4

2

85.46

Estadísticos descriptivos

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 range
## horas_estudio            1 6000  5.50  2.91   5.00    5.50  4.45   1  10     9
## tiempo_lectura           2 6000  5.52  2.92   6.00    5.53  4.45   1  10     9
## horas_sueno              3 6000  6.49  1.70   7.00    6.48  1.48   4   9     5
## uso_redes                4 6000  4.54  2.30   5.00    4.55  2.97   1   8     7
## motivacion               5 6000  5.46  2.89   5.00    5.44  4.45   1  10     9
## asistencia               6 6000 80.02 11.79  80.00   80.02 14.83  60 100    40
## nivel_socioeconomico     7 6000  2.99  1.43   3.00    2.99  1.48   1   5     4
## apoyo_familiar           8 6000  5.60  2.85   6.00    5.62  2.97   1  10     9
## estres                   9 6000  5.50  2.86   5.00    5.49  2.97   1  10     9
## rendimiento_academico   10 6000 83.00  5.26  82.65   82.81  5.72  70 100    30
##                        skew kurtosis   se
## horas_estudio          0.01    -1.26 0.04
## tiempo_lectura         0.00    -1.23 0.04
## horas_sueno            0.00    -1.26 0.02
## uso_redes             -0.01    -1.25 0.03
## motivacion             0.02    -1.22 0.04
## asistencia            -0.01    -1.19 0.15
## nivel_socioeconomico   0.01    -1.32 0.02
## apoyo_familiar        -0.05    -1.21 0.04
## estres                 0.01    -1.21 0.04
## rendimiento_academico  0.29    -0.51 0.07
## 
## $structure
## [1] "'data.frame':\t6000 obs. of  10 variables:\n $ horas_estudio        : num  9 1 6 4 5 10 2 8 3 1 ...\n $ tiempo_lectura       : num  9 1 6 4 5 10 1 8 1 1 ...\n $ horas_sueno          : num  8 6 9 5 6 5 6 5 5 4 ...\n $ uso_redes            : num  6 4 7 6 5 8 6 5 8 5 ...\n $ motivacion           : num  2 10 7 5 7 2 3 5 3 3 ...\n $ asistencia           : num  71 74 91 69 62 62 94 60 72 79 ...\n $ nivel_socioeconomico : num  3 5 2 5 3 5 4 3 1 5 ...\n $ apoyo_familiar       : num  8 4 1 8 2 4 9 1 4 3 ...\n $ estres               : num  5 1 4 5 2 5 7 10 6 1 ...\n $ rendimiento_academico: num  78 81.2 84.7 84.8 82.4 ..."

Desarrollo

Datos de entrenamiento y datos de validación

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)

horas_estudio

tiempo_lectura

horas_sueno

uso_redes

...

nivel_socioeconomico

apoyo_familiar

estres

rendimiento_academico

6

6

9

8

...

1

10

4

93.41

1

1

9

7

...

1

5

8

81.04

4

2

9

1

...

1

8

2

78.61

5

7

6

4

...

1

1

5

78.76

6

8

9

8

...

4

8

1

82.07

4

4

5

7

...

4

9

6

89.88

...

...

...

...

...

...

...

...

...

2

1

9

7

...

4

8

9

80.29

1

1

5

6

...

2

9

7

79.43

10

9

8

1

...

2

7

6

84.93

1

1

5

1

...

2

1

1

78.83

9

8

9

3

...

3

6

7

75.78

8

9

8

3

...

4

10

1

82.2

f_visualizar_head_tail_reducido_word(datos_validacion)

horas_estudio

tiempo_lectura

horas_sueno

uso_redes

...

nivel_socioeconomico

apoyo_familiar

estres

rendimiento_academico

9

9

8

6

...

3

8

5

77.96

10

10

5

8

...

5

4

5

79.28

5

8

7

4

...

5

5

10

89

3

4

7

7

...

5

10

5

80.95

4

3

5

6

...

3

2

2

87.51

9

9

5

3

...

3

6

10

85.02

...

...

...

...

...

...

...

...

...

1

2

6

1

...

4

5

6

75.43

4

4

7

4

...

2

9

3

88.01

8

7

8

1

...

3

9

2

79.65

9

9

6

3

...

4

7

4

80.89

4

3

5

5

...

4

5

4

82.79

9

9

8

5

...

2

4

2

85.46

Modelo de regresión lineal múltiple

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, "rendimiento_academico")
## 
## ============================
## Modelo de Regresión Lineal Múltiple
## ============================
## Variable dependiente: rendimiento_academico 
## Número de observaciones: 4200 
## Número de variables independientes: 9 
## 
## Call:
## lm(formula = formula_modelo, data = datos_modelo)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.7533 -1.0272  0.3065  1.2574  4.0084 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          61.380931   0.253460 242.172  < 2e-16 ***
## horas_estudio         0.364160   0.028933  12.586  < 2e-16 ***
## tiempo_lectura        0.171571   0.028818   5.954 2.84e-09 ***
## horas_sueno          -0.109734   0.016049  -6.837 9.24e-12 ***
## uso_redes             0.573885   0.011976  47.919  < 2e-16 ***
## motivacion            1.453845   0.009558 152.102  < 2e-16 ***
## asistencia            0.037648   0.002336  16.115  < 2e-16 ***
## nivel_socioeconomico  0.538777   0.019138  28.153  < 2e-16 ***
## apoyo_familiar        0.339733   0.009616  35.332  < 2e-16 ***
## estres                0.414729   0.009637  43.033  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.779 on 4190 degrees of freedom
## Multiple R-squared:  0.8841, Adjusted R-squared:  0.8839 
## F-statistic:  3552 on 9 and 4190 DF,  p-value: < 2.2e-16

Postulados de los modelos

Multicolinealidad

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
## horas_estudio               horas_estudio 9.50 Moderada (precaución)
## tiempo_lectura             tiempo_lectura 9.49 Moderada (precaución)
## horas_sueno                   horas_sueno 1.00      Baja (aceptable)
## uso_redes                       uso_redes 1.00      Baja (aceptable)
## motivacion                     motivacion 1.00      Baja (aceptable)
## asistencia                     asistencia 1.00      Baja (aceptable)
## nivel_socioeconomico nivel_socioeconomico 1.00      Baja (aceptable)
## apoyo_familiar             apoyo_familiar 1.00      Baja (aceptable)
## estres                             estres 1.00      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.

Linealidad

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.

Prueba de Ramsey RESET para postulado de 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 = 182.68, df1 = 2, df2 = 4188, p-value < 2.2e-16
## 
## 
## Interpretación:
## ❌ Se rechaza H0 → Existe evidencia de no linealidad
## 
##  RESET test
## 
## data:  modelo
## RESET = 182.68, df1 = 2, df2 = 4188, p-value < 2.2e-16

Homocedasticidad

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 = 10.346, df = 9, p-value = 0.3232
## 
## 
## White Test (manual):
## Estadístico: 4.3732 
## p-value: 0.1123 
## 
## Interpretación:
## ✔ BP: No hay heterocedasticidad
## ✔ White: No hay heterocedasticidad

Normalidad

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 no se observa de manera normal y con la gráfico qq-plot los residuos se no se alinean adecuadamente; los valores de p-value son menores a 0.05 por lo que el postulado de normalidad de los residuos es satisfactorio para este modelo con las pruebas de Shapiro-Wilk, Kolmogorov-Smirnov y Anderson-Darling.

f_normalidad(modelo_RLM)

## 
## ============================
## Diagnóstico de Normalidad
## ============================
##               Prueba p_value Interpretacion
## 1       Shapiro-Wilk       0  No normalidad
## 2   Anderson-Darling       0  No normalidad
## 3 Kolmogorov-Smirnov       0  No normalidad

Independencia de residuos

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. rendimiento_academico")

## 
## ============================
## Diagnóstico de Independencia
## ============================
##          Prueba Estadistico p_value      Interpretacion           Decision
## 1 Durbin-Watson      1.9985  0.4814 Sin autocorrelación ✔ No se rechaza H0

Ecuación del modelo de regresión múltiple

ecuacion <- f_ecuacion_modelo(modelo_RLM)
## 
## ============================
## Ecuación del Modelo de Regresión
## ============================
## 
## ŷ = 61.3809 + 0.3642*horas_estudio + 0.1716*tiempo_lectura - 0.1097*horas_sueno + 0.5739*uso_redes + 1.4538*motivacion + 0.0376*asistencia + 0.5388*nivel_socioeconomico + 0.3397*apoyo_familiar + 0.4147*estres
ecuacion
## [1] "ŷ = 61.3809 + 0.3642*horas_estudio + 0.1716*tiempo_lectura - 0.1097*horas_sueno + 0.5739*uso_redes + 1.4538*motivacion + 0.0376*asistencia + 0.5388*nivel_socioeconomico + 0.3397*apoyo_familiar + 0.4147*estres"

Evaluación del modelo regresión lineal múltiple

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), "rendimiento_academico", "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.8948            0.8942 2.9931 1.73 1.3719

El modelo de regresión lineal múltiple tienen calidad predictiva sin embargo, presenta problemas en los postulados multicolinealidad, linealidad y normalidad principalmente.

Las preguntas son ¿qué hacer para disminuir la no linealidad?, la respuesta sería construir modelo polinomial de segundo y tercer orden que permita comparar resultados con el modelo de regresión lineal múltiple; ¿qué hacer para asegurar normalidad de residuos?, se espera que con los modelos polinomiales los residuos se comporten normalmente; luego la tercera pregunta sería, ¿qué hacer para para disminuir colinealidad?, se puede aplicar modelo 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:

  • 1 Como primera estrategia será construir modelos polinomiales múltiples de segundo y tercer orden.

    1. Como segunda estrategia, se propone construir dos modelos que puedan compararse entre si pero usando datos estandarizados y todas las variables: a) un modelo Lasso b) un modelo Ridge. Estos modelos pueden compararse en validez y calidad predictiva entre sí.

Estetegia 1. Modelos polinomiales múltiples de segundo y tercer orden

Modelo polinomial multiple de segundo orden

Se construye un modelo de regresión polinomial multiple de segundo orden, se manda llamar la función f_multiple_polinomial y como argumentos los datos de entrenamiento, el nombre de la variable dependiente y el grado de la ecuación, en este caso de segundo orden (2).

Se observa una alta calidad predictiva del modelo de regresión polinomial de tercer orden con valores de r square y r square ajustado de 0.9954 y 0.9953 respectivamente.

modelo_multiple_2 <- f_multiple_polinomial(datos_entrenamiento, "rendimiento_academico", 2)
## 
## ============================
## Modelo Polinomial de Orden 2 
## ============================
## Variables independientes: 9 
## Número de términos: 55 
## 
## Call:
## lm(formula = formula_modelo, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.23569 -0.24282  0.00319  0.23467  1.17921 
## 
## Coefficients:
##                                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                          6.429e+01  4.077e-01 157.682  < 2e-16 ***
## horas_estudio                        1.363e+00  5.349e-02  25.476  < 2e-16 ***
## tiempo_lectura                       4.973e-02  5.315e-02   0.936   0.3494    
## horas_sueno                          3.611e-01  3.920e-02   9.212  < 2e-16 ***
## uso_redes                           -2.585e-01  2.470e-02 -10.467  < 2e-16 ***
## motivacion                           6.939e-01  1.927e-02  36.005  < 2e-16 ***
## asistencia                           3.976e-02  7.723e-03   5.148 2.75e-07 ***
## nivel_socioeconomico                 5.140e-01  4.042e-02  12.719  < 2e-16 ***
## apoyo_familiar                       3.161e-01  1.962e-02  16.113  < 2e-16 ***
## estres                              -5.092e-01  1.934e-02 -26.329  < 2e-16 ***
## I(horas_estudio^2)                  -1.510e-01  4.196e-03 -35.982  < 2e-16 ***
## I(tiempo_lectura^2)                  9.893e-03  4.143e-03   2.388   0.0170 *  
## I(horas_sueno^2)                    -3.480e-02  2.216e-03 -15.706  < 2e-16 ***
## I(uso_redes^2)                       8.979e-02  1.213e-03  73.990  < 2e-16 ***
## I(motivacion^2)                     -6.677e-06  7.564e-04  -0.009   0.9930    
## I(asistencia^2)                     -3.660e-05  4.452e-05  -0.822   0.4110    
## I(nivel_socioeconomico^2)            1.882e-03  3.285e-03   0.573   0.5668    
## I(apoyo_familiar^2)                  8.386e-04  7.612e-04   1.102   0.2706    
## I(estres^2)                          8.497e-02  7.616e-04 111.575  < 2e-16 ***
## horas_estudio:tiempo_lectura        -6.423e-03  7.837e-03  -0.820   0.4125    
## horas_estudio:horas_sueno           -1.025e-03  3.390e-03  -0.302   0.7623    
## horas_estudio:uso_redes              5.328e-04  2.512e-03   0.212   0.8320    
## horas_estudio:motivacion             1.372e-01  2.020e-03  67.944  < 2e-16 ***
## horas_estudio:asistencia            -1.052e-04  4.965e-04  -0.212   0.8322    
## horas_estudio:nivel_socioeconomico   2.552e-03  4.112e-03   0.621   0.5349    
## horas_estudio:apoyo_familiar         1.057e-03  2.063e-03   0.512   0.6085    
## horas_estudio:estres                -5.191e-04  2.084e-03  -0.249   0.8033    
## tiempo_lectura:horas_sueno           2.611e-03  3.385e-03   0.772   0.4404    
## tiempo_lectura:uso_redes             1.778e-04  2.496e-03   0.071   0.9432    
## tiempo_lectura:motivacion           -1.418e-03  2.017e-03  -0.703   0.4819    
## tiempo_lectura:asistencia            2.853e-04  4.950e-04   0.576   0.5644    
## tiempo_lectura:nivel_socioeconomico -1.862e-05  4.083e-03  -0.005   0.9964    
## tiempo_lectura:apoyo_familiar       -1.805e-03  2.044e-03  -0.883   0.3772    
## tiempo_lectura:estres                5.925e-04  2.079e-03   0.285   0.7757    
## horas_sueno:uso_redes               -8.027e-04  1.399e-03  -0.574   0.5662    
## horas_sueno:motivacion               5.566e-04  1.130e-03   0.493   0.6223    
## horas_sueno:asistencia              -2.502e-04  2.751e-04  -0.909   0.3633    
## horas_sueno:nivel_socioeconomico    -1.071e-03  2.250e-03  -0.476   0.6342    
## horas_sueno:apoyo_familiar           4.362e-04  1.132e-03   0.385   0.7000    
## horas_sueno:estres                  -1.271e-04  1.144e-03  -0.111   0.9116    
## uso_redes:motivacion                -9.613e-04  8.434e-04  -1.140   0.2544    
## uso_redes:asistencia                 1.891e-04  2.059e-04   0.918   0.3585    
## uso_redes:nivel_socioeconomico       2.938e-03  1.692e-03   1.737   0.0825 .  
## uso_redes:apoyo_familiar             1.689e-03  8.486e-04   1.990   0.0467 *  
## uso_redes:estres                    -2.066e-03  8.530e-04  -2.422   0.0155 *  
## motivacion:asistencia               -4.737e-05  1.642e-04  -0.288   0.7730    
## motivacion:nivel_socioeconomico     -1.912e-05  1.350e-03  -0.014   0.9887    
## motivacion:apoyo_familiar            6.401e-04  6.807e-04   0.940   0.3471    
## motivacion:estres                   -4.330e-04  6.718e-04  -0.644   0.5193    
## asistencia:nivel_socioeconomico     -3.734e-04  3.325e-04  -1.123   0.2615    
## asistencia:apoyo_familiar            5.175e-05  1.661e-04   0.312   0.7553    
## asistencia:estres                    1.249e-04  1.678e-04   0.745   0.4565    
## nivel_socioeconomico:apoyo_familiar -8.580e-04  1.353e-03  -0.634   0.5260    
## nivel_socioeconomico:estres          3.068e-04  1.349e-03   0.227   0.8201    
## apoyo_familiar:estres                7.148e-04  6.849e-04   1.044   0.2967    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3568 on 4145 degrees of freedom
## Multiple R-squared:  0.9954, Adjusted R-squared:  0.9953 
## F-statistic: 1.656e+04 on 54 and 4145 DF,  p-value: < 2.2e-16

Modelo polinomial multiple de tercer orden

Se construye un modelo de regresión polinomial multiple de tercer orden, se manda llamar la función f_multiple_polinomial y como argumentos los datos de entrenamiento, el nombre de la variable dependiente y el grado de la ecuación, en este caso de tercer orden (3).

Se observa una alta calidad predictiva del modelo de regresión polinomial de tercer orden con valores de r square y r square ajustado de 0.9958 y 0.9957 respectivamente.

modelo_multiple_3 <- f_multiple_polinomial(datos_entrenamiento, "rendimiento_academico", 3)
## 
## ============================
## Modelo Polinomial de Orden 3 
## ============================
## Variables independientes: 9 
## Número de términos: 148 
## 
## Call:
## lm(formula = formula_modelo, data = datos)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.18237 -0.22438  0.00046  0.22307  1.14438 
## 
## Coefficients:
##                                                      Estimate Std. Error
## (Intercept)                                         6.382e+01  2.375e+00
## horas_estudio                                       1.752e+00  2.789e-01
## tiempo_lectura                                      5.985e-02  2.761e-01
## horas_sueno                                         2.141e-01  2.303e-01
## uso_redes                                          -4.259e-01  1.142e-01
## motivacion                                          8.687e-01  9.139e-02
## asistencia                                          3.418e-02  8.089e-02
## nivel_socioeconomico                                5.916e-01  1.871e-01
## apoyo_familiar                                      3.544e-01  9.334e-02
## estres                                             -5.840e-01  8.937e-02
## I(horas_estudio^2)                                 -1.559e-01  7.863e-03
## I(horas_estudio^3)                                  2.966e-04  3.936e-04
## I(tiempo_lectura^2)                                -4.525e-02  7.604e-03
## I(tiempo_lectura^3)                                 3.334e-03  3.885e-04
## I(horas_sueno^2)                                   -2.333e-02  3.210e-02
## I(horas_sueno^3)                                   -5.979e-04  1.644e-03
## I(uso_redes^2)                                      1.993e-01  8.601e-03
## I(uso_redes^3)                                     -8.066e-03  6.284e-04
## I(motivacion^2)                                     4.668e-03  5.119e-03
## I(motivacion^3)                                    -2.807e-04  3.074e-04
## I(asistencia^2)                                     2.772e-04  1.005e-03
## I(asistencia^3)                                    -1.294e-06  4.188e-06
## I(nivel_socioeconomico^2)                           8.907e-03  2.933e-02
## I(nivel_socioeconomico^3)                          -7.204e-04  3.240e-03
## I(apoyo_familiar^2)                                -1.149e-03  5.136e-03
## I(apoyo_familiar^3)                                 1.191e-04  3.078e-04
## I(estres^2)                                         8.333e-02  5.132e-03
## I(estres^3)                                         9.398e-05  3.080e-04
## horas_estudio:tiempo_lectura                       -1.308e-03  1.032e-02
## horas_estudio:horas_sueno                          -3.839e-02  2.696e-02
## horas_estudio:uso_redes                            -3.622e-02  2.159e-02
## horas_estudio:motivacion                            1.321e-01  1.759e-02
## horas_estudio:asistencia                           -2.841e-03  2.994e-03
## horas_estudio:nivel_socioeconomico                  2.809e-02  3.619e-02
## horas_estudio:apoyo_familiar                       -1.259e-02  1.814e-02
## horas_estudio:estres                               -2.189e-02  1.821e-02
## tiempo_lectura:horas_sueno                          5.473e-02  2.693e-02
## tiempo_lectura:uso_redes                            2.544e-02  2.152e-02
## tiempo_lectura:motivacion                           3.101e-03  1.752e-02
## tiempo_lectura:asistencia                           9.103e-04  2.933e-03
## tiempo_lectura:nivel_socioeconomico                -3.999e-02  3.579e-02
## tiempo_lectura:apoyo_familiar                      -6.560e-04  1.809e-02
## tiempo_lectura:estres                               1.201e-02  1.828e-02
## horas_sueno:uso_redes                              -1.790e-02  1.098e-02
## horas_sueno:motivacion                             -2.036e-02  8.790e-03
## horas_sueno:asistencia                             -5.897e-04  1.354e-03
## horas_sueno:nivel_socioeconomico                    2.715e-02  1.787e-02
## horas_sueno:apoyo_familiar                          1.347e-02  9.055e-03
## horas_sueno:estres                                  2.890e-02  8.979e-03
## uso_redes:motivacion                               -1.291e-02  7.258e-03
## uso_redes:asistencia                               -1.716e-03  1.218e-03
## uso_redes:nivel_socioeconomico                     -1.496e-02  1.449e-02
## uso_redes:apoyo_familiar                           -2.597e-03  7.439e-03
## uso_redes:estres                                   -1.030e-02  7.281e-03
## motivacion:asistencia                              -2.380e-03  9.488e-04
## motivacion:nivel_socioeconomico                    -7.222e-03  1.152e-02
## motivacion:apoyo_familiar                           6.137e-03  6.005e-03
## motivacion:estres                                  -2.624e-03  5.816e-03
## asistencia:nivel_socioeconomico                    -2.154e-03  1.902e-03
## asistencia:apoyo_familiar                          -4.182e-04  9.716e-04
## asistencia:estres                                   1.021e-03  9.607e-04
## nivel_socioeconomico:apoyo_familiar                -1.528e-02  1.200e-02
## nivel_socioeconomico:estres                         5.331e-03  1.159e-02
## apoyo_familiar:estres                               1.275e-03  5.997e-03
## horas_estudio:tiempo_lectura:horas_sueno           -8.841e-04  4.433e-04
## horas_estudio:tiempo_lectura:uso_redes              2.720e-04  3.317e-04
## horas_estudio:tiempo_lectura:motivacion            -3.118e-04  2.648e-04
## horas_estudio:tiempo_lectura:asistencia             1.912e-05  6.476e-05
## horas_estudio:tiempo_lectura:nivel_socioeconomico   1.581e-04  5.266e-04
## horas_estudio:tiempo_lectura:apoyo_familiar        -1.070e-04  2.663e-04
## horas_estudio:tiempo_lectura:estres                -7.959e-05  2.620e-04
## horas_estudio:horas_sueno:uso_redes                 1.330e-03  1.414e-03
## horas_estudio:horas_sueno:motivacion                2.460e-04  1.156e-03
## horas_estudio:horas_sueno:asistencia                4.053e-04  2.844e-04
## horas_estudio:horas_sueno:nivel_socioeconomico     -1.582e-03  2.388e-03
## horas_estudio:horas_sueno:apoyo_familiar           -4.413e-05  1.183e-03
## horas_estudio:horas_sueno:estres                    1.469e-03  1.195e-03
## horas_estudio:uso_redes:motivacion                  1.106e-03  8.433e-04
## horas_estudio:uso_redes:asistencia                  6.447e-05  2.118e-04
## horas_estudio:uso_redes:nivel_socioeconomico        3.169e-03  1.740e-03
## horas_estudio:uso_redes:apoyo_familiar              3.920e-04  8.729e-04
## horas_estudio:uso_redes:estres                      9.284e-04  8.927e-04
## horas_estudio:motivacion:asistencia                -2.844e-05  1.711e-04
## horas_estudio:motivacion:nivel_socioeconomico       1.260e-03  1.410e-03
## horas_estudio:motivacion:apoyo_familiar            -5.061e-05  7.070e-04
## horas_estudio:motivacion:estres                    -1.893e-04  7.091e-04
## horas_estudio:asistencia:nivel_socioeconomico      -4.122e-04  3.517e-04
## horas_estudio:asistencia:apoyo_familiar             1.306e-04  1.729e-04
## horas_estudio:asistencia:estres                     7.914e-05  1.760e-04
## horas_estudio:nivel_socioeconomico:apoyo_familiar   2.315e-05  1.440e-03
## horas_estudio:nivel_socioeconomico:estres          -4.420e-04  1.443e-03
## horas_estudio:apoyo_familiar:estres                 7.459e-04  7.315e-04
## tiempo_lectura:horas_sueno:uso_redes               -1.585e-03  1.411e-03
## tiempo_lectura:horas_sueno:motivacion              -9.561e-04  1.162e-03
## tiempo_lectura:horas_sueno:asistencia              -3.565e-04  2.859e-04
## tiempo_lectura:horas_sueno:nivel_socioeconomico     1.326e-03  2.373e-03
## tiempo_lectura:horas_sueno:apoyo_familiar          -4.272e-04  1.177e-03
## tiempo_lectura:horas_sueno:estres                  -1.443e-03  1.193e-03
## tiempo_lectura:uso_redes:motivacion                -4.606e-04  8.378e-04
## tiempo_lectura:uso_redes:asistencia                -5.368e-05  2.108e-04
## tiempo_lectura:uso_redes:nivel_socioeconomico      -2.432e-03  1.717e-03
## tiempo_lectura:uso_redes:apoyo_familiar             6.609e-05  8.672e-04
## tiempo_lectura:uso_redes:estres                    -7.679e-04  8.910e-04
## tiempo_lectura:motivacion:asistencia                9.326e-05  1.713e-04
## tiempo_lectura:motivacion:nivel_socioeconomico     -9.300e-04  1.398e-03
## tiempo_lectura:motivacion:apoyo_familiar            2.312e-04  7.035e-04
## tiempo_lectura:motivacion:estres                   -3.654e-05  7.049e-04
## tiempo_lectura:asistencia:nivel_socioeconomico      4.730e-04  3.499e-04
## tiempo_lectura:asistencia:apoyo_familiar           -3.243e-05  1.718e-04
## tiempo_lectura:asistencia:estres                   -5.763e-06  1.757e-04
## tiempo_lectura:nivel_socioeconomico:apoyo_familiar  5.229e-04  1.422e-03
## tiempo_lectura:nivel_socioeconomico:estres          6.914e-04  1.433e-03
## tiempo_lectura:apoyo_familiar:estres               -7.313e-07  7.276e-04
## horas_sueno:uso_redes:motivacion                    4.532e-04  4.804e-04
## horas_sueno:uso_redes:asistencia                    1.942e-04  1.173e-04
## horas_sueno:uso_redes:nivel_socioeconomico         -7.246e-04  9.615e-04
## horas_sueno:uso_redes:apoyo_familiar                1.023e-05  4.792e-04
## horas_sueno:uso_redes:estres                        3.071e-04  4.854e-04
## horas_sueno:motivacion:asistencia                   2.531e-04  9.326e-05
## horas_sueno:motivacion:nivel_socioeconomico         3.668e-04  7.729e-04
## horas_sueno:motivacion:apoyo_familiar               3.284e-04  3.882e-04
## horas_sueno:motivacion:estres                      -8.260e-05  3.893e-04
## horas_sueno:asistencia:nivel_socioeconomico        -1.929e-04  1.889e-04
## horas_sueno:asistencia:apoyo_familiar              -7.935e-05  9.476e-05
## horas_sueno:asistencia:estres                      -2.357e-04  9.776e-05
## horas_sueno:nivel_socioeconomico:apoyo_familiar     8.106e-05  7.719e-04
## horas_sueno:nivel_socioeconomico:estres            -1.919e-03  7.744e-04
## horas_sueno:apoyo_familiar:estres                  -1.046e-03  3.956e-04
## uso_redes:motivacion:asistencia                     5.834e-05  7.020e-05
## uso_redes:motivacion:nivel_socioeconomico          -3.551e-04  5.756e-04
## uso_redes:motivacion:apoyo_familiar                -4.892e-05  2.932e-04
## uso_redes:motivacion:estres                         4.435e-04  2.919e-04
## uso_redes:asistencia:nivel_socioeconomico           1.832e-04  1.428e-04
## uso_redes:asistencia:apoyo_familiar                 6.551e-06  7.204e-05
## uso_redes:asistencia:estres                        -3.473e-05  7.202e-05
## uso_redes:nivel_socioeconomico:apoyo_familiar      -1.890e-04  5.800e-04
## uso_redes:nivel_socioeconomico:estres               1.257e-03  5.808e-04
## uso_redes:apoyo_familiar:estres                     3.148e-04  2.986e-04
## motivacion:asistencia:nivel_socioeconomico          1.074e-04  1.146e-04
## motivacion:asistencia:apoyo_familiar               -8.279e-05  5.695e-05
## motivacion:asistencia:estres                        2.036e-05  5.729e-05
## motivacion:nivel_socioeconomico:apoyo_familiar     -6.599e-04  4.739e-04
## motivacion:nivel_socioeconomico:estres             -6.052e-06  4.571e-04
## motivacion:apoyo_familiar:estres                    3.399e-05  2.330e-04
## asistencia:nivel_socioeconomico:apoyo_familiar      2.243e-04  1.153e-04
## asistencia:nivel_socioeconomico:estres              3.425e-05  1.165e-04
## asistencia:apoyo_familiar:estres                    2.264e-05  5.827e-05
## nivel_socioeconomico:apoyo_familiar:estres         -4.532e-04  4.705e-04
##                                                    t value Pr(>|t|)    
## (Intercept)                                         26.872  < 2e-16 ***
## horas_estudio                                        6.282 3.69e-10 ***
## tiempo_lectura                                       0.217 0.828397    
## horas_sueno                                          0.930 0.352655    
## uso_redes                                           -3.731 0.000194 ***
## motivacion                                           9.505  < 2e-16 ***
## asistencia                                           0.423 0.672644    
## nivel_socioeconomico                                 3.162 0.001579 ** 
## apoyo_familiar                                       3.797 0.000149 ***
## estres                                              -6.534 7.17e-11 ***
## I(horas_estudio^2)                                 -19.830  < 2e-16 ***
## I(horas_estudio^3)                                   0.754 0.451100    
## I(tiempo_lectura^2)                                 -5.951 2.88e-09 ***
## I(tiempo_lectura^3)                                  8.583  < 2e-16 ***
## I(horas_sueno^2)                                    -0.727 0.467311    
## I(horas_sueno^3)                                    -0.364 0.716095    
## I(uso_redes^2)                                      23.170  < 2e-16 ***
## I(uso_redes^3)                                     -12.836  < 2e-16 ***
## I(motivacion^2)                                      0.912 0.361915    
## I(motivacion^3)                                     -0.913 0.361156    
## I(asistencia^2)                                      0.276 0.782801    
## I(asistencia^3)                                     -0.309 0.757413    
## I(nivel_socioeconomico^2)                            0.304 0.761403    
## I(nivel_socioeconomico^3)                           -0.222 0.824086    
## I(apoyo_familiar^2)                                 -0.224 0.823075    
## I(apoyo_familiar^3)                                  0.387 0.698782    
## I(estres^2)                                         16.237  < 2e-16 ***
## I(estres^3)                                          0.305 0.760286    
## horas_estudio:tiempo_lectura                        -0.127 0.899084    
## horas_estudio:horas_sueno                           -1.424 0.154424    
## horas_estudio:uso_redes                             -1.678 0.093508 .  
## horas_estudio:motivacion                             7.511 7.19e-14 ***
## horas_estudio:asistencia                            -0.949 0.342745    
## horas_estudio:nivel_socioeconomico                   0.776 0.437591    
## horas_estudio:apoyo_familiar                        -0.694 0.487628    
## horas_estudio:estres                                -1.202 0.229243    
## tiempo_lectura:horas_sueno                           2.032 0.042194 *  
## tiempo_lectura:uso_redes                             1.182 0.237115    
## tiempo_lectura:motivacion                            0.177 0.859521    
## tiempo_lectura:asistencia                            0.310 0.756317    
## tiempo_lectura:nivel_socioeconomico                 -1.117 0.263965    
## tiempo_lectura:apoyo_familiar                       -0.036 0.971076    
## tiempo_lectura:estres                                0.657 0.511343    
## horas_sueno:uso_redes                               -1.630 0.103089    
## horas_sueno:motivacion                              -2.316 0.020617 *  
## horas_sueno:asistencia                              -0.436 0.663188    
## horas_sueno:nivel_socioeconomico                     1.519 0.128815    
## horas_sueno:apoyo_familiar                           1.488 0.136811    
## horas_sueno:estres                                   3.219 0.001297 ** 
## uso_redes:motivacion                                -1.779 0.075309 .  
## uso_redes:asistencia                                -1.408 0.159110    
## uso_redes:nivel_socioeconomico                      -1.033 0.301886    
## uso_redes:apoyo_familiar                            -0.349 0.727075    
## uso_redes:estres                                    -1.415 0.157134    
## motivacion:asistencia                               -2.508 0.012165 *  
## motivacion:nivel_socioeconomico                     -0.627 0.530847    
## motivacion:apoyo_familiar                            1.022 0.306840    
## motivacion:estres                                   -0.451 0.651930    
## asistencia:nivel_socioeconomico                     -1.132 0.257549    
## asistencia:apoyo_familiar                           -0.430 0.666897    
## asistencia:estres                                    1.063 0.287955    
## nivel_socioeconomico:apoyo_familiar                 -1.274 0.202896    
## nivel_socioeconomico:estres                          0.460 0.645602    
## apoyo_familiar:estres                                0.213 0.831593    
## horas_estudio:tiempo_lectura:horas_sueno            -1.994 0.046189 *  
## horas_estudio:tiempo_lectura:uso_redes               0.820 0.412295    
## horas_estudio:tiempo_lectura:motivacion             -1.177 0.239068    
## horas_estudio:tiempo_lectura:asistencia              0.295 0.767821    
## horas_estudio:tiempo_lectura:nivel_socioeconomico    0.300 0.764020    
## horas_estudio:tiempo_lectura:apoyo_familiar         -0.402 0.687937    
## horas_estudio:tiempo_lectura:estres                 -0.304 0.761319    
## horas_estudio:horas_sueno:uso_redes                  0.940 0.347106    
## horas_estudio:horas_sueno:motivacion                 0.213 0.831521    
## horas_estudio:horas_sueno:asistencia                 1.425 0.154189    
## horas_estudio:horas_sueno:nivel_socioeconomico      -0.662 0.507769    
## horas_estudio:horas_sueno:apoyo_familiar            -0.037 0.970236    
## horas_estudio:horas_sueno:estres                     1.229 0.219227    
## horas_estudio:uso_redes:motivacion                   1.312 0.189666    
## horas_estudio:uso_redes:asistencia                   0.304 0.760869    
## horas_estudio:uso_redes:nivel_socioeconomico         1.821 0.068712 .  
## horas_estudio:uso_redes:apoyo_familiar               0.449 0.653418    
## horas_estudio:uso_redes:estres                       1.040 0.298430    
## horas_estudio:motivacion:asistencia                 -0.166 0.868031    
## horas_estudio:motivacion:nivel_socioeconomico        0.894 0.371425    
## horas_estudio:motivacion:apoyo_familiar             -0.072 0.942937    
## horas_estudio:motivacion:estres                     -0.267 0.789496    
## horas_estudio:asistencia:nivel_socioeconomico       -1.172 0.241164    
## horas_estudio:asistencia:apoyo_familiar              0.755 0.450044    
## horas_estudio:asistencia:estres                      0.450 0.653018    
## horas_estudio:nivel_socioeconomico:apoyo_familiar    0.016 0.987175    
## horas_estudio:nivel_socioeconomico:estres           -0.306 0.759381    
## horas_estudio:apoyo_familiar:estres                  1.020 0.307951    
## tiempo_lectura:horas_sueno:uso_redes                -1.123 0.261327    
## tiempo_lectura:horas_sueno:motivacion               -0.823 0.410585    
## tiempo_lectura:horas_sueno:asistencia               -1.247 0.212440    
## tiempo_lectura:horas_sueno:nivel_socioeconomico      0.559 0.576294    
## tiempo_lectura:horas_sueno:apoyo_familiar           -0.363 0.716735    
## tiempo_lectura:horas_sueno:estres                   -1.209 0.226723    
## tiempo_lectura:uso_redes:motivacion                 -0.550 0.582520    
## tiempo_lectura:uso_redes:asistencia                 -0.255 0.798959    
## tiempo_lectura:uso_redes:nivel_socioeconomico       -1.416 0.156858    
## tiempo_lectura:uso_redes:apoyo_familiar              0.076 0.939255    
## tiempo_lectura:uso_redes:estres                     -0.862 0.388846    
## tiempo_lectura:motivacion:asistencia                 0.544 0.586286    
## tiempo_lectura:motivacion:nivel_socioeconomico      -0.665 0.505816    
## tiempo_lectura:motivacion:apoyo_familiar             0.329 0.742469    
## tiempo_lectura:motivacion:estres                    -0.052 0.958662    
## tiempo_lectura:asistencia:nivel_socioeconomico       1.352 0.176567    
## tiempo_lectura:asistencia:apoyo_familiar            -0.189 0.850241    
## tiempo_lectura:asistencia:estres                    -0.033 0.973838    
## tiempo_lectura:nivel_socioeconomico:apoyo_familiar   0.368 0.713083    
## tiempo_lectura:nivel_socioeconomico:estres           0.483 0.629447    
## tiempo_lectura:apoyo_familiar:estres                -0.001 0.999198    
## horas_sueno:uso_redes:motivacion                     0.943 0.345509    
## horas_sueno:uso_redes:asistencia                     1.655 0.097928 .  
## horas_sueno:uso_redes:nivel_socioeconomico          -0.754 0.451158    
## horas_sueno:uso_redes:apoyo_familiar                 0.021 0.982972    
## horas_sueno:uso_redes:estres                         0.633 0.527072    
## horas_sueno:motivacion:asistencia                    2.714 0.006684 ** 
## horas_sueno:motivacion:nivel_socioeconomico          0.475 0.635132    
## horas_sueno:motivacion:apoyo_familiar                0.846 0.397584    
## horas_sueno:motivacion:estres                       -0.212 0.831972    
## horas_sueno:asistencia:nivel_socioeconomico         -1.021 0.307370    
## horas_sueno:asistencia:apoyo_familiar               -0.837 0.402422    
## horas_sueno:asistencia:estres                       -2.411 0.015964 *  
## horas_sueno:nivel_socioeconomico:apoyo_familiar      0.105 0.916373    
## horas_sueno:nivel_socioeconomico:estres             -2.478 0.013244 *  
## horas_sueno:apoyo_familiar:estres                   -2.643 0.008240 ** 
## uso_redes:motivacion:asistencia                      0.831 0.405977    
## uso_redes:motivacion:nivel_socioeconomico           -0.617 0.537341    
## uso_redes:motivacion:apoyo_familiar                 -0.167 0.867515    
## uso_redes:motivacion:estres                          1.519 0.128769    
## uso_redes:asistencia:nivel_socioeconomico            1.283 0.199513    
## uso_redes:asistencia:apoyo_familiar                  0.091 0.927550    
## uso_redes:asistencia:estres                         -0.482 0.629660    
## uso_redes:nivel_socioeconomico:apoyo_familiar       -0.326 0.744584    
## uso_redes:nivel_socioeconomico:estres                2.164 0.030536 *  
## uso_redes:apoyo_familiar:estres                      1.054 0.291922    
## motivacion:asistencia:nivel_socioeconomico           0.937 0.348968    
## motivacion:asistencia:apoyo_familiar                -1.454 0.146074    
## motivacion:asistencia:estres                         0.355 0.722390    
## motivacion:nivel_socioeconomico:apoyo_familiar      -1.392 0.163903    
## motivacion:nivel_socioeconomico:estres              -0.013 0.989437    
## motivacion:apoyo_familiar:estres                     0.146 0.884023    
## asistencia:nivel_socioeconomico:apoyo_familiar       1.946 0.051750 .  
## asistencia:nivel_socioeconomico:estres               0.294 0.768662    
## asistencia:apoyo_familiar:estres                     0.388 0.697687    
## nivel_socioeconomico:apoyo_familiar:estres          -0.963 0.335418    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3435 on 4052 degrees of freedom
## Multiple R-squared:  0.9958, Adjusted R-squared:  0.9957 
## F-statistic:  6568 on 147 and 4052 DF,  p-value: < 2.2e-16

Estrategia 2. Construir modelos regresión lineal múltiple, Lasso y Ridge con datos estandarizados

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.

Estandarizar datos originales

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: 10 
## Variables no numéricas preservadas: 0 
## Decimales aplicados: 4

Construir datos de entrenamiento y validación con los datos estandarizados

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: 10 
## 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)

horas_estudio

tiempo_lectura

horas_sueno

uso_redes

...

nivel_socioeconomico

apoyo_familiar

estres

rendimiento_academico

0.1707

0.1644

1.4778

1.5066

...

-1.3948

1.5417

-0.523

1.9809

-1.5485

-1.5505

1.4778

1.0711

...

-1.3948

-0.2116

0.8754

-0.3731

-0.517

-1.2075

1.4778

-1.5418

...

-1.3948

0.8404

-1.2221

-0.8355

-0.1732

0.5074

-0.2854

-0.2354

...

-1.3948

-1.6142

-0.1734

-0.807

0.1707

0.8503

1.4778

1.5066

...

0.7072

0.8404

-1.5717

-0.1771

-0.517

-0.5215

-0.8732

1.0711

...

0.7072

1.191

0.1762

1.3091

...

...

...

...

...

...

...

...

...

-1.2047

-1.5505

1.4778

1.0711

...

0.7072

0.8404

1.2249

-0.5158

-1.5485

-1.5505

-0.8732

0.6356

...

-0.6941

1.191

0.5258

-0.6795

1.546

1.1933

0.89

-1.5418

...

-0.6941

0.4897

0.1762

0.3672

-1.5485

-1.5505

-0.8732

-1.5418

...

-0.6941

-1.6142

-1.5717

-0.7936

1.2022

0.8503

1.4778

-0.6709

...

0.0065

0.1391

0.5258

-1.374

0.8583

1.1933

0.89

-0.6709

...

0.7072

1.5417

-1.5717

-0.1523

f_visualizar_head_tail_reducido_word(datos_validacion_est)

horas_estudio

tiempo_lectura

horas_sueno

uso_redes

...

nivel_socioeconomico

apoyo_familiar

estres

rendimiento_academico

1.2022

1.1933

0.89

0.6356

...

0.0065

0.8404

-0.1734

-0.9592

1.546

1.5363

-0.8732

1.5066

...

1.4079

-0.5622

-0.1734

-0.708

-0.1732

0.8503

0.3023

-0.2354

...

1.4079

-0.2116

1.5745

1.1417

-0.8609

-0.5215

0.3023

1.0711

...

1.4079

1.5417

-0.1734

-0.3902

-0.517

-0.8645

-0.8732

0.6356

...

0.0065

-1.2635

-1.2221

0.8581

1.2022

1.1933

-0.8732

-0.6709

...

0.0065

0.1391

1.5745

0.3843

...

...

...

...

...

...

...

...

...

-1.5485

-1.2075

-0.2854

-1.5418

...

0.7072

-0.2116

0.1762

-1.4406

-0.517

-0.5215

0.3023

-0.2354

...

-0.6941

1.191

-0.8726

0.9533

0.8583

0.5074

0.89

-1.5418

...

0.0065

1.191

-1.2221

-0.6376

1.2022

1.1933

-0.2854

-0.6709

...

0.7072

0.4897

-0.523

-0.4016

-0.517

-0.8645

-0.8732

0.2001

...

0.7072

-0.2116

-0.523

-0.0401

1.2022

1.1933

0.89

0.2001

...

-0.6941

-0.5622

-1.2221

0.468

Modelo regresión múltiple con datos estandarizados

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, "rendimiento_academico")
## 
## ============================
## Modelo de Regresión Lineal Múltiple
## ============================
## Variable dependiente: rendimiento_academico 
## Número de observaciones: 4200 
## Número de variables independientes: 9 
## 
## Call:
## lm(formula = formula_modelo, data = datos_modelo)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -1.28514 -0.19544  0.05837  0.23929  0.76280 
## 
## Coefficients:
##                       Estimate Std. Error t value Pr(>|t|)    
## (Intercept)          -0.006836   0.005224  -1.308    0.191    
## horas_estudio         0.201524   0.016013  12.585  < 2e-16 ***
## tiempo_lectura        0.095214   0.015989   5.955 2.81e-09 ***
## horas_sueno          -0.035529   0.005196  -6.837 9.25e-12 ***
## uso_redes             0.250770   0.005233  47.919  < 2e-16 ***
## motivacion            0.798831   0.005252 152.102  < 2e-16 ***
## asistencia            0.084441   0.005240  16.115  < 2e-16 ***
## nivel_socioeconomico  0.146326   0.005198  28.153  < 2e-16 ***
## apoyo_familiar        0.184369   0.005218  35.332  < 2e-16 ***
## estres                0.225758   0.005246  43.033  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.3385 on 4190 degrees of freedom
## Multiple R-squared:  0.8841, Adjusted R-squared:  0.8839 
## F-statistic:  3552 on 9 and 4190 DF,  p-value: < 2.2e-16

Multicolinealidad del modelo de regesión múltiple con datos estandarizados

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
## horas_estudio               horas_estudio 9.50 Moderada (precaución)
## tiempo_lectura             tiempo_lectura 9.49 Moderada (precaución)
## horas_sueno                   horas_sueno 1.00      Baja (aceptable)
## uso_redes                       uso_redes 1.00      Baja (aceptable)
## motivacion                     motivacion 1.00      Baja (aceptable)
## asistencia                     asistencia 1.00      Baja (aceptable)
## nivel_socioeconomico nivel_socioeconomico 1.00      Baja (aceptable)
## apoyo_familiar             apoyo_familiar 1.00      Baja (aceptable)
## estres                             estres 1.00      Baja (aceptable)

Modelo Lasso con datos estandarizados

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,
    "rendimiento_academico"
)
## 
## ============================
## Modelo LASSO (Regresión L1)
## ============================
## Variable dependiente: rendimiento_academico 
## Observaciones: 4200 
## Variables independientes: 9 
## Lambda.min: 0.002211 
## Lambda.1se: 0.014212 
## 
## Coeficientes (lambda.min):
## 10 x 1 sparse Matrix of class "dgCMatrix"
##                      s=0.00221096
## (Intercept)          -0.006873809
## horas_estudio         0.202391757
## tiempo_lectura        0.092201411
## horas_sueno          -0.033260446
## uso_redes             0.248458985
## motivacion            0.796346017
## asistencia            0.082232208
## nivel_socioeconomico  0.144123828
## apoyo_familiar        0.182243710
## estres                0.223581954
## 
## Coeficientes (lambda.1se):
## 10 x 1 sparse Matrix of class "dgCMatrix"
##                      s=0.01421221
## (Intercept)          -0.006873809
## horas_estudio         0.202391757
## tiempo_lectura        0.092201411
## horas_sueno          -0.033260446
## uso_redes             0.248458985
## motivacion            0.796346017
## asistencia            0.082232208
## nivel_socioeconomico  0.144123828
## apoyo_familiar        0.182243710
## estres                0.223581954
modelo_lasso <- res_lasso$modelo
lambda_min   <- res_lasso$lambda_min
lambda_1se   <- res_lasso$lambda_1se
cv_lasso     <- res_lasso$cv

Modelo Ridge con datos estandarizados

# Modelo Ridge
res_ridge <- f_construir_modelo_ridge(
  datos_entrenamiento_est,
  "rendimiento_academico"
)
## 
## ============================
## Modelo RIDGE (Regresión L2)
## ============================
## Variable dependiente: rendimiento_academico 
## Observaciones: 4200 
## Variables independientes: 9 
## Lambda.min: 0.077631 
## Lambda.1se: 0.0852 
## 
## Coeficientes (lambda.min):
## 10 x 1 sparse Matrix of class "dgCMatrix"
##                      s=0.07763106
## (Intercept)          -0.007463871
## horas_estudio         0.165768894
## tiempo_lectura        0.118566152
## horas_sueno          -0.030856431
## uso_redes             0.230356187
## motivacion            0.739789017
## asistencia            0.077844482
## nivel_socioeconomico  0.135541330
## apoyo_familiar        0.170633639
## estres                0.210344774
## 
## Coeficientes (lambda.1se):
## 10 x 1 sparse Matrix of class "dgCMatrix"
##                      s=0.08519999
## (Intercept)          -0.007463871
## horas_estudio         0.165768894
## tiempo_lectura        0.118566152
## horas_sueno          -0.030856431
## uso_redes             0.230356187
## motivacion            0.739789017
## asistencia            0.077844482
## nivel_socioeconomico  0.135541330
## apoyo_familiar        0.170633639
## estres                0.210344774
modelo_ridge <- res_ridge$modelo
lambda_ridge <- res_ridge$lambda_min

Evaluación final de modelos incluyendo Lasso y Ridge

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_multiple_2, modelo_multiple_3, modelo_RLM_estandarizado, modelo_lasso, modelo_ridge),
  datos_validacion_list = list(
    datos_validacion, 
    datos_validacion,
    datos_validacion,
    datos_validacion_est,
    datos_validacion_est, 
    datos_validacion_est
  ),
  variable_dependiente = "rendimiento_academico",
  nombres = c("Múltiple datos originales", "Múltiple orden 2 datos originales", "Múltiple orden 3 datos originales", "Múltiple datos estandarizados", "Lasso estandarizado", "Ridge estandarizado"),
  lambdas = c(NA, NA, NA, NA, lambda_lasso, lambda_ridge)
)
## 
## ============================
## Evaluación de Modelos
## ============================
##                              Modelo R_square R_square_ajustado    MSE   RMSE
## 1         Múltiple datos originales   0.8948            0.8942 2.9931 1.7300
## 2 Múltiple orden 2 datos originales   0.9958            0.9956 0.1208 0.3476
## 3 Múltiple orden 3 datos originales   0.9959            0.9955 0.1179 0.3434
## 4     Múltiple datos estandarizados   0.8948            0.8942 0.1084 0.3292
## 5               Lasso estandarizado   0.8947            0.8941 0.1085 0.3294
## 6               Ridge estandarizado   0.8898            0.8892 0.1135 0.3369
##      MAE
## 1 1.3719
## 2 0.2772
## 3 0.2738
## 4 0.2611
## 5 0.2614
## 6 0.2679

Al comparar modelos con los datos originales sin estandarizar, el modelo polinomial de segundo orden presenta una mejora significativa en la capacidad de ajuste en comparación con el modelo lineal múltiple, lo que indica la presencia de relaciones no lineales en los datos.

Al comparar modelos construidos con datos estandarizados, 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.

Resumen de la validez de los modelos

Ejecutando la función f_validar_postulados_modelos() se resume la validez de los modelos.

Con respecto al modelo de regresión polinomial múltiple de grado dos y grado tres, se observa que ambos modelos cumplen con la validez de los postulados, es decir asegura linealidad (en parámetros), encontrando la relación curva entre las variables independiente y dependiente, esto no compromete la capacidad predictiva que se observa con la evaluación 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 es en modo consola:

f_validar_postulados_modelos(
    modelos = list(modelo_RLM, modelo_multiple_2,  modelo_multiple_3, modelo_RLM_estandarizado,  modelo_lasso, modelo_ridge),
    datos_list = list(datos_entrenamiento, datos_entrenamiento, datos_entrenamiento, datos_entrenamiento_est, datos_entrenamiento_est, datos_entrenamiento_est),
    variable_dependiente = "rendimiento_academico",
    nombres = c("Lineal Múltiple", "Polinomial Múltiple grado 2", "Polinomial Múltiple grado 3", "Lineal datos estandarizados", "Lasso", "Ridge")
)
## 
## ============================
## Validación de Postulados
## ============================
##                        Modelo   VIF_Max Linealidad Homocedasticidad Normalidad
## 1             Lineal Múltiple      9.50  No cumple           Cumple  No cumple
## 2 Polinomial Múltiple grado 2   2166.33     Cumple           Cumple     Cumple
## 3 Polinomial Múltiple grado 3 127735.36     Cumple           Cumple     Cumple
## 4 Lineal datos estandarizados      9.50  No cumple           Cumple  No cumple
## 5                       Lasso        NA         NA               NA  No cumple
## 6                       Ridge        NA         NA               NA  No cumple
##   Independencia
## 1        Cumple
## 2        Cumple
## 3        Cumple
## 4        Cumple
## 5            NA
## 6            NA

Interpretación

Este caso de estudio cumple con le objetivo planteado. Se construyó un modelo de regresión lineal múltiple con datos relacionados con la rendimiento académico como variable dependiente. El modelo presenta problemas de falga de linealidad o curvatura enb las relaciones y de multicolinealidad; para disminuir estas deficiencias en validez de postulados, se usaron dos estrategias:

Como primera estrategia se construyó el modelo de regresión polinomial múltiple de segundo y tercer grado y este mejora sustancialmente la calidad predictiva con un valor aproxomado de de r square de 0.99 y r square ajustado de 0.99 en ambos modelos; además de que también mejora los estadísticos MSE RMSE MAE.

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.