library(tidyverse)
library(knitr)
library(caTools)

Se hace la lectura de los datos ya limpios:

OULAD_data <- read.csv("OULAD_data_unified_DEPURADA.csv") %>% select(-c(1, 2))
attach(OULAD_data)

Transformamos todas las variables categóricas en tipo factor.

for (i in 1:length(colnames(OULAD_data))) {
  if(OULAD_data %>% select(colnames(OULAD_data)[i]) %>% as.vector() %>% unlist() %>% class() == "character"){
    OULAD_data[,i] = factor(OULAD_data[,i])
  }
}

Se procede a hacer una exploración gráfica para revisar que variables son significantes para nuestra variable respuesta:

pairs(OULAD_data %>% select(-c(1:5, 8:9)), 
      panel = function(x,y) {points(x,y); 
        lines(lowess(x,y), 
              col = "red")})

Dentro de la exploración gráfica, podemos notar que existe cierta relación entre las variables \(\texttt{score_exam, wscore_tmas, wscore_cmas}\), las variables categóricas no fueron tomadas en cuenta en este análisis gráfico debido a que se necesitan variables numéricas para graficar correctamente y sin recibir errores.

Ahora, se van a añadir variables categóricas con sentido lógico a nuestros 3 posibles modelos para luego obtener el resultante, dentro de estas variables categóricas están: \(\texttt{gender}\) y \(\texttt{highest_education}\)

Dividiendo la base de datos en training set y test set

set.seed(42)
split = sample.split(OULAD_data$score_exam, SplitRatio = 0.8)
training_set = subset(OULAD_data, split == TRUE)
test_set = subset(OULAD_data, split == FALSE)

Modelo Inicial \(Modelo_0\)

modelo0 <- lm(score_exam ~.+ 
                I((wscore_tmas-mean(wscore_tmas))^2) +
                I((wscore_cmas-mean(wscore_cmas))^2) + 
                I((sum_click_total-mean(sum_click_total))^2), 
              data = OULAD_data)
summary(modelo0)
## 
## Call:
## lm(formula = score_exam ~ . + I((wscore_tmas - mean(wscore_tmas))^2) + 
##     I((wscore_cmas - mean(wscore_cmas))^2) + I((sum_click_total - 
##     mean(sum_click_total))^2), data = OULAD_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -28.451  -6.119   0.193   5.838  36.818 
## 
## Coefficients:
##                                                  Estimate Std. Error t value
## (Intercept)                                     4.914e+01  3.864e+00  12.717
## genderM                                        -8.131e-01  8.147e-01  -0.998
## regionEast Midlands Region                     -7.187e-01  1.744e+00  -0.412
## regionIreland                                  -3.436e+00  2.595e+00  -1.324
## regionLondon Region                             2.913e-01  1.538e+00   0.189
## regionNorth Region                             -3.422e+00  2.606e+00  -1.313
## regionNorth Western Region                     -1.923e+00  1.722e+00  -1.117
## regionScotland                                 -8.614e-01  1.473e+00  -0.585
## regionSouth East Region                        -4.424e+00  1.780e+00  -2.485
## regionSouth Region                             -2.649e+00  1.620e+00  -1.635
## regionSouth West Region                        -1.706e+00  1.625e+00  -1.049
## regionWales                                    -1.155e+00  1.942e+00  -0.595
## regionWest Midlands Region                     -5.829e+00  1.775e+00  -3.283
## regionYorkshire Region                         -1.476e+00  1.906e+00  -0.775
## highest_educationHE Qualification              -9.557e-02  8.981e-01  -0.106
## highest_educationLower Than A Level            -2.635e+00  9.257e-01  -2.846
## highest_educationNo Formal quals               -2.702e+00  4.695e+00  -0.575
## highest_educationPost Graduate Qualification   -5.779e-01  2.429e+00  -0.238
## imd_band20-30%                                  9.785e-01  1.742e+00   0.562
## imd_band30-40%                                 -8.103e-01  1.661e+00  -0.488
## imd_band40-50%                                 -9.654e-01  1.753e+00  -0.551
## imd_band50-60%                                  9.255e-01  1.702e+00   0.544
## imd_band60-70%                                  1.339e+00  1.723e+00   0.777
## imd_band70-80%                                 -3.013e-01  1.735e+00  -0.174
## imd_band80-90%                                  1.202e-01  1.661e+00   0.072
## imd_band90-100%                                 1.838e+00  1.721e+00   1.068
## imd_bandoct-20                                  8.673e-01  1.773e+00   0.489
## age_band35-55                                  -1.553e+00  8.289e-01  -1.874
## age_band55<=                                   -6.059e+00  2.693e+00  -2.250
## num_of_prev_attempts                            7.649e-01  1.330e+00   0.575
## studied_credits                                 2.628e-02  9.470e-03   2.775
## disabilityY                                    -2.380e+00  1.419e+00  -1.677
## final_resultFail                               -4.589e+01  1.624e+00 -28.260
## final_resultPass                               -1.873e+01  1.124e+00 -16.659
## wscore_tmas                                     1.473e-01  3.887e-02   3.790
## wscore_cmas                                     1.501e+00  1.464e-01  10.255
## sum_click_total                                -7.792e-04  3.259e-04  -2.391
## I((wscore_tmas - mean(wscore_tmas))^2)          2.449e-03  1.265e-03   1.936
## I((wscore_cmas - mean(wscore_cmas))^2)          8.620e-02  1.231e-02   7.004
## I((sum_click_total - mean(sum_click_total))^2)  7.965e-08  4.898e-08   1.626
##                                                Pr(>|t|)    
## (Intercept)                                     < 2e-16 ***
## genderM                                        0.318597    
## regionEast Midlands Region                     0.680415    
## regionIreland                                  0.185834    
## regionLondon Region                            0.849855    
## regionNorth Region                             0.189479    
## regionNorth Western Region                     0.264446    
## regionScotland                                 0.558812    
## regionSouth East Region                        0.013129 *  
## regionSouth Region                             0.102428    
## regionSouth West Region                        0.294309    
## regionWales                                    0.552262    
## regionWest Midlands Region                     0.001067 ** 
## regionYorkshire Region                         0.438844    
## highest_educationHE Qualification              0.915277    
## highest_educationLower Than A Level            0.004534 ** 
## highest_educationNo Formal quals               0.565124    
## highest_educationPost Graduate Qualification   0.812017    
## imd_band20-30%                                 0.574534    
## imd_band30-40%                                 0.625742    
## imd_band40-50%                                 0.581987    
## imd_band50-60%                                 0.586826    
## imd_band60-70%                                 0.437248    
## imd_band70-80%                                 0.862184    
## imd_band80-90%                                 0.942311    
## imd_band90-100%                                0.285902    
## imd_bandoct-20                                 0.624894    
## age_band35-55                                  0.061319 .  
## age_band55<=                                   0.024692 *  
## num_of_prev_attempts                           0.565322    
## studied_credits                                0.005638 ** 
## disabilityY                                    0.093917 .  
## final_resultFail                                < 2e-16 ***
## final_resultPass                                < 2e-16 ***
## wscore_tmas                                    0.000161 ***
## wscore_cmas                                     < 2e-16 ***
## sum_click_total                                0.017017 *  
## I((wscore_tmas - mean(wscore_tmas))^2)         0.053147 .  
## I((wscore_cmas - mean(wscore_cmas))^2)            5e-12 ***
## I((sum_click_total - mean(sum_click_total))^2) 0.104301    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.3 on 866 degrees of freedom
## Multiple R-squared:  0.7997, Adjusted R-squared:  0.7907 
## F-statistic: 88.65 on 39 and 866 DF,  p-value: < 2.2e-16
par(mfrow = c(2, 2))
plot(modelo0)

Modelo 1

modelo1 = lm(score_exam ~ gender +
               sum_click_total +
               highest_education +
               final_result + 
               num_of_prev_attempts +
               wscore_tmas +
               wscore_cmas, 
             data = training_set)
summary(modelo1)
## 
## Call:
## lm(formula = score_exam ~ gender + sum_click_total + highest_education + 
##     final_result + num_of_prev_attempts + wscore_tmas + wscore_cmas, 
##     data = training_set)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -28.281  -6.358   0.137   5.247  39.295 
## 
## Coefficients:
##                                                Estimate Std. Error t value
## (Intercept)                                   6.897e+01  2.676e+00  25.774
## genderM                                      -1.112e+00  9.435e-01  -1.179
## sum_click_total                              -3.685e-04  2.559e-04  -1.440
## highest_educationHE Qualification             1.250e-02  1.021e+00   0.012
## highest_educationLower Than A Level          -2.670e+00  1.065e+00  -2.507
## highest_educationNo Formal quals             -5.385e+00  5.508e+00  -0.978
## highest_educationPost Graduate Qualification -1.858e+00  2.757e+00  -0.674
## final_resultFail                             -5.121e+01  1.759e+00 -29.109
## final_resultPass                             -2.342e+01  1.157e+00 -20.239
## num_of_prev_attempts                         -1.256e+00  1.576e+00  -0.797
## wscore_tmas                                   1.211e-01  2.865e-02   4.228
## wscore_cmas                                   8.571e-01  1.117e-01   7.671
##                                              Pr(>|t|)    
## (Intercept)                                   < 2e-16 ***
## genderM                                        0.2388    
## sum_click_total                                0.1504    
## highest_educationHE Qualification              0.9902    
## highest_educationLower Than A Level            0.0124 *  
## highest_educationNo Formal quals               0.3286    
## highest_educationPost Graduate Qualification   0.5005    
## final_resultFail                              < 2e-16 ***
## final_resultPass                              < 2e-16 ***
## num_of_prev_attempts                           0.4258    
## wscore_tmas                                  2.66e-05 ***
## wscore_cmas                                  5.61e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.91 on 712 degrees of freedom
## Multiple R-squared:   0.77,  Adjusted R-squared:  0.7665 
## F-statistic: 216.7 on 11 and 712 DF,  p-value: < 2.2e-16
par(mfrow = c(2, 2))
plot(modelo1)

Podemos notar que algunas categorías dentro de la variable highest_education no son significativas con la variable respuesta score_exam al igual que el numero de intentos previos, el numero total de clics y el género.

Revisando si se cumplen los supuestos en el modelo 1

Como podemos apreciar en el plot del modelo1, existen problemas de heterocedasticidad, apreciamos colas pesadas en el grafico del Normal Q-Q y hay de problemas con la linealidad ya que existe curvatura en el gráfico de los residuos.

Modelo 2

modelo2 = lm(score_exam ~ 
               gender + 
               final_result +
               highest_education +
               sum_click_total +
               wscore_tmas + 
               wscore_cmas, 
             data = training_set)
summary(modelo2)
## 
## Call:
## lm(formula = score_exam ~ gender + final_result + highest_education + 
##     sum_click_total + wscore_tmas + wscore_cmas, data = training_set)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -28.225  -6.445   0.106   5.319  39.428 
## 
## Coefficients:
##                                                Estimate Std. Error t value
## (Intercept)                                   6.865e+01  2.644e+00  25.959
## genderM                                      -1.076e+00  9.421e-01  -1.142
## final_resultFail                             -5.121e+01  1.759e+00 -29.116
## final_resultPass                             -2.342e+01  1.157e+00 -20.245
## highest_educationHE Qualification             3.332e-03  1.021e+00   0.003
## highest_educationLower Than A Level          -2.713e+00  1.063e+00  -2.551
## highest_educationNo Formal quals             -5.307e+00  5.506e+00  -0.964
## highest_educationPost Graduate Qualification -1.960e+00  2.753e+00  -0.712
## sum_click_total                              -3.548e-04  2.553e-04  -1.390
## wscore_tmas                                   1.219e-01  2.863e-02   4.257
## wscore_cmas                                   8.653e-01  1.112e-01   7.779
##                                              Pr(>|t|)    
## (Intercept)                                   < 2e-16 ***
## genderM                                        0.2538    
## final_resultFail                              < 2e-16 ***
## final_resultPass                              < 2e-16 ***
## highest_educationHE Qualification              0.9974    
## highest_educationLower Than A Level            0.0109 *  
## highest_educationNo Formal quals               0.3354    
## highest_educationPost Graduate Qualification   0.4768    
## sum_click_total                                0.1650    
## wscore_tmas                                  2.35e-05 ***
## wscore_cmas                                  2.57e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.91 on 713 degrees of freedom
## Multiple R-squared:  0.7698, Adjusted R-squared:  0.7666 
## F-statistic: 238.4 on 10 and 713 DF,  p-value: < 2.2e-16
par(mfrow = c(2, 2))
plot(modelo2)

En el modelo 1, pudimos apreciar que la variables highest_education no es realmente signficativa con la variable respuesta, y lo mismo ocurre en el modelo 2, por lo que se va a proceder a eliminar dicha variable en el modelo 3, de la misma forma, se hará con la variable gender pero con la variable sum_click_total, se le agregará su efecto cuadrático en el modelo 3

Revisando si se cumplen los supuestos en el modelo 2

Notamos, que al igual que en el plot del modelo 1, existen problemas de heterocedasticidad, apreciamos colas pesadas en el grafico del Normal Q-Q y hay de problemas con la linealidad ya que existe curvatura en el gráfico de los residuos.

Modelo 3

modelo3 = lm(score_exam ~ 
               final_result + 
               wscore_tmas + 
               wscore_cmas + 
               sum_click_total +
               I((wscore_tmas-mean(wscore_tmas))^2) +
               I((wscore_cmas-mean(wscore_cmas))^2) +
               I((sum_click_total-mean(sum_click_total))^2), 
             data = training_set)
summary(modelo3)
## 
## Call:
## lm(formula = score_exam ~ final_result + wscore_tmas + wscore_cmas + 
##     sum_click_total + I((wscore_tmas - mean(wscore_tmas))^2) + 
##     I((wscore_cmas - mean(wscore_cmas))^2) + I((sum_click_total - 
##     mean(sum_click_total))^2), data = training_set)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -27.783  -5.830  -0.221   5.415  42.412 
## 
## Coefficients:
##                                                  Estimate Std. Error t value
## (Intercept)                                     4.622e+01  3.499e+00  13.209
## final_resultFail                               -4.678e+01  1.747e+00 -26.781
## final_resultPass                               -1.908e+01  1.227e+00 -15.552
## wscore_tmas                                     1.283e-01  4.214e-02   3.044
## wscore_cmas                                     1.670e+00  1.585e-01  10.536
## sum_click_total                                -1.085e-03  3.572e-04  -3.037
## I((wscore_tmas - mean(wscore_tmas))^2)          2.145e-03  1.387e-03   1.547
## I((wscore_cmas - mean(wscore_cmas))^2)          1.039e-01  1.325e-02   7.844
## I((sum_click_total - mean(sum_click_total))^2)  1.076e-07  6.160e-08   1.746
##                                                Pr(>|t|)    
## (Intercept)                                     < 2e-16 ***
## final_resultFail                                < 2e-16 ***
## final_resultPass                                < 2e-16 ***
## wscore_tmas                                     0.00242 ** 
## wscore_cmas                                     < 2e-16 ***
## sum_click_total                                 0.00248 ** 
## I((wscore_tmas - mean(wscore_tmas))^2)          0.12242    
## I((wscore_cmas - mean(wscore_cmas))^2)          1.6e-14 ***
## I((sum_click_total - mean(sum_click_total))^2)  0.08118 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 10.36 on 715 degrees of freedom
## Multiple R-squared:  0.7916, Adjusted R-squared:  0.7893 
## F-statistic: 339.5 on 8 and 715 DF,  p-value: < 2.2e-16
par(mfrow = c(2, 2))
plot(modelo3)

Como podemos notar, todas las variables explicativas son significativas para nuestra variable respuesta score_exam a excepción del efecto cuadrático del wscore_tmas de hecho, el \(R^{2}\) (0.7916) es lo bastante alto para decirnos que las variables escogidas explican significativamente a nuestra variable respuesta.

Revisando si se cumplen los supuestos en el modelo 3

Notamos que los problemas de colas pesadas es casi nulo con respecto a los del modelo 1 y modelo 2, si existen cierto problemas de heterocedasticidas pero la linealidad, es casi nula, la curvatura en el gráfico de los residuos es muy poca o casi nada.

Escogiendo al mejor modelo

# modelo 1 - 12 parametros
SCE1 = 84731
s21 = 119
cp1 = (SCE1/s21)-(724-2*length(coef(modelo1)))
cp1
## [1] 12.02521
# modelo 2 - 11 parametros
SCE2 = 84807 
s22 = 119
cp2 = (SCE2/s22)-(724-2*length(coef(modelo2)))
cp2
## [1] 10.66387
# modelo 3 - 9 parametros
SCE3 = 76777
s23 = 107
cp3 = (SCE3/s23)-(724-2*length(coef(modelo3)))
cp3
## [1] 11.54206
AIC(modelo1)
## [1] 5528.635
AIC(modelo2)
## [1] 5527.28
AIC(modelo3)
## [1] 5451.264
plot(c(AIC(modelo1), AIC(modelo2), AIC(modelo3)),
     pch = 20, 
     xaxt = "n",
     xlab = "",
     ylab = "AIC",
     type = "b",
     lty = 2,
     col = "darkblue",
     main = "Valor del AIC en los tres modelos")
mtext("Modelo 1", side = 1, at = 1.05, line = 1)
mtext("Modelo 2", side = 1, at = 2, line = 1)
mtext("Modelo 3", side = 1, at = 2.95, line = 1)

BIC(modelo1)
## [1] 5588.237
BIC(modelo2)
## [1] 5582.298
BIC(modelo3)
## [1] 5497.112
plot(c(BIC(modelo1), BIC(modelo2), BIC(modelo3)),
     pch = 20, 
     xaxt = "n",
     xlab = "",
     ylab = "AIC",
     type = "b",
     lty = 2,
     col = "darkblue",
     main = "Valor del BIC en los tres modelos")
mtext("Modelo 1", side = 1, at = 1.05, line = 1)
mtext("Modelo 2", side = 1, at = 2, line = 1)
mtext("Modelo 3", side = 1, at = 2.95, line = 1)

Ya que los valores del BIC y del Cp del modelo 3 es el menor con respecto a los del modelo 1 y 2, se procede a escoger el modelo 3 como el modelo óptimo o modelo a escoger.

Interpretacion del modelo seleccionado final

\[ \begin{equation} \begin{aligned} Y_{\textrm{mod3}} = & \ 50.62 - 47.76 \cdot \textrm{ResultadoFinal}^{(1)} - 19.65 \cdot \textrm{ResultadoFinal}^{(2)} + 0.12 \cdot \textrm{ScoreTMA} + 1.42 \cdot \textrm{ScoreCMA} \ + \\ & 0.002 \cdot (\textrm{ScoreTMA} - \bar{X}_{\textrm{ScoreTMA}})^2 + 0.089 \cdot (\textrm{ScoreCMA} - \bar{X}_{\textrm{ScoreCMA}})^2 \end{aligned} \end{equation} \]

estimations_model3 = coef(summary(modelo3))

rownames(estimations_model3) <- c("$\\beta_0$", 
                                  "$\\beta_1$",
                                  "$\\beta_2$",
                                  "$\\beta_3$",
                                  "$\\beta_4$",
                                  "$\\beta_5$",
                                  "$\\beta_6$",
                                  "$\\beta_7$",
                                  "$\\beta_8$")

kable(estimations_model3, escape = FALSE, digits = 3)
Estimate Std. Error t value Pr(>|t|)
\(\beta_0\) 46.221 3.499 13.209 0.000
\(\beta_1\) -46.783 1.747 -26.781 0.000
\(\beta_2\) -19.077 1.227 -15.552 0.000
\(\beta_3\) 0.128 0.042 3.044 0.002
\(\beta_4\) 1.670 0.159 10.536 0.000
\(\beta_5\) -0.001 0.000 -3.037 0.002
\(\beta_6\) 0.002 0.001 1.547 0.122
\(\beta_7\) 0.104 0.013 7.844 0.000
\(\beta_8\) 0.000 0.000 1.746 0.081

\(\beta_0:\) cuando el resultado final del alumno en la presentación del módulo es sobresaliente, las puntuaciones ponderadas en tmas y cmas son 0, el número total de clics que hizo durante el módulo en el entorno de aprendizaje virtual es 0. En promedio, la calificación del examen es de 47.84

\(\beta_1:\) La diferencia promedio entre un estudiante con presentación de módulo de sobresaliente y otro de reprobado es de -47.21, manteniéndose el resto de las variables constantes

\(\beta_2:\) La diferencia promedio entre un estudiante con presentación de módulo de sobresaliente y otro de Aprobado es de -1.957, manteniéndose el resto de las variables constantes

\(\beta_3:\) Cuando el wscore tmas aumenta en 1 unidad, manteniéndose el resto de las variables constantes. En promedio, la calificación del examen aumenta en 0.078

\(\beta_4:\) Cuando el wscore cmas aumenta en 1 unidad, manteniéndose el resto de las variables constantes. En promedio, la calificación del examen aumenta en 1.76

\(\beta_5:\) Cuando la sumatoria total de clics aumenta en 1 unidad, manteniéndose el resto de las variables constantes. En promedio, la calificación del examen aumenta en -0.001

\(\beta_6:\) Cuando (wscore cmas-mean(wcore cmas))^2 aumenta en 1 unidad, manteniéndose el resto de las variables constantes. En promedio, la calificación del examen aumenta en 0.110

\(\beta_7:\) Cuando (wscore cmas-mean(wcore cmas))^2 aumenta en 1 unidad, manteniéndose el resto de las variables constantes. En promedio, la calificación del examen aumenta en 0.110

\(\beta_8:\) Cuando (sum clic total-mean(sum clic total))^2 aumenta en 1 unidad, manteniéndose el resto de las variables constantes. En promedio, la calificación del examen aumenta en 0.0000001

Inferencias válidas en el modelo seleccionado final que ayuden a responder la pregunta de interés.

Como podemos notar, todas las variables explicativas son significativas para nuestra variable respuesta score_exam a excepción del efecto cuadrático del wscore_tmas de hecho, el \(R^{2}\) (0.7916) es lo bastante alto para decirnos que las variables escogidas explican significativamente a nuestra variable respuesta.

Notamos que los problemas de colas pesadas es casi nulo con respecto a los del modelo 1 y modelo 2, si existen cierto problemas de heterocedasticidas pero la linealidad, es casi nula, la curvatura en el gráfico de los residuos es muy poca o casi nada.

Intervalos de predicción

library(PoSI)
## Warning: package 'PoSI' was built under R version 4.2.2
xmod3 = model.matrix(modelo3)
Posimod3 = PoSI(xmod3)
## Removed column(s) 1 due to NAs after standardizing'
## Number of contrasts/adjusted predictors to process: 1024 
## Number of bundles: 8 
##                          Done with bundle 1 / 8    model sz = 1 
##                          Done with bundle 2 / 8    model sz = 2 
##                          Done with bundle 3 / 8    model sz = 3 
##                          Done with bundle 4 / 8    model sz = 4 
##                          Done with bundle 5 / 8    model sz = 5 
##                          Done with bundle 6 / 8    model sz = 6 
##                          Done with bundle 7 / 8    model sz = 7 
##                          Done with bundle 8 / 8    model sz = 8 
## p = 8 , d = 8   processed 1024 tests in 255 models.  Times in seconds:
##    user  system elapsed 
##    0.05    0.01    0.08
summary(Posimod3)
##     K.PoSI K.Bonferroni K.Scheffe
## 95%  3.213        4.061     3.938
## 99%  3.715        4.422     4.482
coef(modelo3) - summary(Posimod3)[1,1]*summary(modelo3)$coefficients[,2]
##                                    (Intercept) 
##                                   3.497790e+01 
##                               final_resultFail 
##                                  -5.239524e+01 
##                               final_resultPass 
##                                  -2.301819e+01 
##                                    wscore_tmas 
##                                  -7.104994e-03 
##                                    wscore_cmas 
##                                   1.160976e+00 
##                                sum_click_total 
##                                  -2.232752e-03 
##         I((wscore_tmas - mean(wscore_tmas))^2) 
##                                  -2.311161e-03 
##         I((wscore_cmas - mean(wscore_cmas))^2) 
##                                   6.134360e-02 
## I((sum_click_total - mean(sum_click_total))^2) 
##                                  -9.035069e-08
coef(modelo3) + summary(Posimod3)[1,1]*summary(modelo3)$coefficients[,2]
##                                    (Intercept) 
##                                   5.746401e+01 
##                               final_resultFail 
##                                  -4.117006e+01 
##                               final_resultPass 
##                                  -1.513563e+01 
##                                    wscore_tmas 
##                                   2.636683e-01 
##                                    wscore_cmas 
##                                   2.179790e+00 
##                                sum_click_total 
##                                   6.293559e-05 
##         I((wscore_tmas - mean(wscore_tmas))^2) 
##                                   6.600818e-03 
##         I((wscore_cmas - mean(wscore_cmas))^2) 
##                                   1.464715e-01 
## I((sum_click_total - mean(sum_click_total))^2) 
##                                   3.055185e-07
(IC95posi = cbind(coef(modelo3) - summary(Posimod3)[1,1]*summary(modelo3)$coefficients[,2], coef(modelo3) +  summary(Posimod3)[1,1]*summary(modelo3)$coefficients[,2]))
##                                                         [,1]          [,2]
## (Intercept)                                     3.497790e+01  5.746401e+01
## final_resultFail                               -5.239524e+01 -4.117006e+01
## final_resultPass                               -2.301819e+01 -1.513563e+01
## wscore_tmas                                    -7.104994e-03  2.636683e-01
## wscore_cmas                                     1.160976e+00  2.179790e+00
## sum_click_total                                -2.232752e-03  6.293559e-05
## I((wscore_tmas - mean(wscore_tmas))^2)         -2.311161e-03  6.600818e-03
## I((wscore_cmas - mean(wscore_cmas))^2)          6.134360e-02  1.464715e-01
## I((sum_click_total - mean(sum_click_total))^2) -9.035069e-08  3.055185e-07
confint(modelo3)
##                                                        2.5 %        97.5 %
## (Intercept)                                     3.935095e+01  5.309097e+01
## final_resultFail                               -5.021220e+01 -4.335310e+01
## final_resultPass                               -2.148521e+01 -1.666861e+01
## wscore_tmas                                     4.555433e-02  2.110090e-01
## wscore_cmas                                     1.359113e+00  1.981653e+00
## sum_click_total                                -1.786293e-03 -3.835241e-04
## I((wscore_tmas - mean(wscore_tmas))^2)         -5.779813e-04  4.867638e-03
## I((wscore_cmas - mean(wscore_cmas))^2)          7.789907e-02  1.299161e-01
## I((sum_click_total - mean(sum_click_total))^2) -1.336302e-08  2.285309e-07

Notamos que en los intervalos de confianza, no hay ningún cambio de signo del límite inferior al límite superior a excepción del efecto cuadrático del wscore_tmas y además, todas sus variables son significativas a excepción de la que ya se ha mencionado.

Participacion Alta o Baja segun el numero de clicks

Agregamos una nueva variable denominada “nivel de participacion” el cual definiremos en base al numero promedio de clicks, y esta puede ser alta o baja.

OULAD_data$part_level = rep(0, nrow(OULAD_data))

OULAD_data = OULAD_data %>% mutate(part_level = ifelse(sum_click_total >= mean(OULAD_data$sum_click_total),
                                          "High",
                                          "Low"))

OULAD_data$part_level = factor(OULAD_data$part_level)

Prediccion

boxplot(score_exam~part_level, data = OULAD_data)

model_anova = aov(score_exam~part_level, data = OULAD_data)

summary(model_anova)
##              Df Sum Sq Mean Sq F value   Pr(>F)    
## part_level    1  15465   15465   31.52 2.62e-08 ***
## Residuals   904 443500     491                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
predict.lm(model_anova, data.frame(part_level = "High"), interval = c("prediction"))
##        fit      lwr      upr
## 1 72.71242 29.17114 116.2537
predict.lm(model_anova, data.frame(part_level = "Low"), interval = c("prediction"))
##        fit      lwr      upr
## 1 63.97667 20.47015 107.4832

Podemos observar que ambos intervalos de confianza son similares pero el limite inferior en el intervalo de prediccion para un nivel de participacion alto si es ligeramente mayor.