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)
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)
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.
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.
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
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.
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.
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.
# 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.
\[ \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
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.
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.