data <- read.csv("Grupo1.csv")
# Convertir variables categóricas a factor
data$Program <- factor(data$Program)
data$Scholarship <- factor(data$Scholarship)
# Ver niveles (importante para identificar la categoría de referencia)
levels(data$Program)## [1] "Economics PhD" "Education PhD" "Public Health PhD"
## [1] "No" "Yes"
## 'data.frame': 100 obs. of 5 variables:
## $ GPA : num 2.71 3.01 2.72 2.77 3.09 3.08 2.8 2.85 2.69 3.12 ...
## $ Hours_Study : num 8.8 23 20.9 15.4 17.5 22.2 14.4 8.9 19.7 12.9 ...
## $ Anxiety_Score: num 64.1 55.9 62 83.8 35.3 30.9 56.1 43.4 56.4 35.7 ...
## $ Program : Factor w/ 3 levels "Economics PhD",..: 3 2 3 2 1 3 3 2 3 1 ...
## $ Scholarship : Factor w/ 2 levels "No","Yes": 2 2 1 1 2 1 1 1 1 1 ...
La base de datos contiene 100 observaciones y 5 variables. Su clasificación es la siguiente:
| Variable | Tipo estadístico | Tipo en R | Rol en el modelo |
|---|---|---|---|
GPA |
Cuantitativa continua | numeric |
Variable respuesta |
Hours_Study |
Cuantitativa continua | numeric |
Predictor numérico |
Anxiety_Score |
Cuantitativa continua | numeric |
Predictor numérico |
Program |
Cualitativa nominal | factor |
Predictor categórico |
Scholarship |
Cualitativa nominal | factor |
Predictor categórico |
## GPA Hours_Study Anxiety_Score Program
## Min. :2.30 Min. : 4.40 Min. :23.70 Economics PhD :26
## 1st Qu.:2.80 1st Qu.:14.15 1st Qu.:46.75 Education PhD :41
## Median :2.98 Median :17.50 Median :56.60 Public Health PhD:33
## Mean :2.96 Mean :17.27 Mean :56.09
## 3rd Qu.:3.12 3rd Qu.:20.65 3rd Qu.:64.22
## Max. :3.66 Max. :31.10 Max. :84.10
## Scholarship
## No :58
## Yes:42
##
##
##
##
tabla_prog <- data.frame(
Programa = names(table(data$Program)),
n = as.integer(table(data$Program)),
Porcentaje = paste0(round(prop.table(table(data$Program)) * 100, 1), "%")
)
knitr::kable(tabla_prog, align = "lcc",
caption = "**Distribución de estudiantes por programa doctoral**")| Programa | n | Porcentaje |
|---|---|---|
| Economics PhD | 26 | 26% |
| Education PhD | 41 | 41% |
| Public Health PhD | 33 | 33% |
tabla_beca <- data.frame(
Beca = names(table(data$Scholarship)),
n = as.integer(table(data$Scholarship)),
Porcentaje = paste0(round(prop.table(table(data$Scholarship)) * 100, 1), "%")
)
knitr::kable(tabla_beca, align = "lcc",
caption = "**Distribución de estudiantes por estado de beca**")| Beca | n | Porcentaje |
|---|---|---|
| No | 58 | 58% |
| Yes | 42 | 42% |
GPA: Variable respuesta
El GPA de los 100 estudiantes doctorales presenta una distribución muy simétrica y homogénea. La media (2.96) y la mediana (2.98) son prácticamente idénticas, lo que indica ausencia de sesgo marcado en los datos. El 50% central de los estudiantes se concentra en un rango estrecho de apenas 0.32 puntos (entre 2.80 y 3.12), y el recorrido total de la distribución va de 2.30 a 3.66. Esta baja dispersión relativa sugiere que, en términos generales, el desempeño académico del grupo es bastante uniforme, sin presencia de subgrupos extremadamente rezagados ni sobresalientes que distorsionen el promedio.
Hours_Study: Horas semanales de estudio
Las horas semanales de estudio muestran una distribución simétrica, pero con una variabilidad considerablemente mayor que el GPA. La media (17.27 h) y la mediana (17.50 h) están muy alineadas, indicando simetría, pero el rango total de 26.7 horas, desde apenas 4.4 hasta 31.1 horas semanales, revela diferencias sustanciales en los hábitos de estudio entre estudiantes. El 50% central estudia entre 14.15 y 20.65 horas por semana (IQR = 6.50 h), un intervalo relativamente amplio que refleja que, aunque hay una tendencia central clara alrededor de las 17 horas, existe heterogeneidad real en la dedicación académica que podría estar relacionada con factores como el programa, la beca u otras responsabilidades externas.
Anxiety_Score: Nivel de ansiedad académica
El puntaje de ansiedad académica promedio del grupo es de 56.09 puntos, con una mediana de 56.60, lo que sitúa al estudiante típico en un nivel de ansiedad moderado-alto, por encima del punto medio teórico de la escala (50 puntos). El 50% central de los estudiantes reporta puntajes entre 46.75 y 64.22 (IQR = 17.47), y los valores extremos van desde 23.70 hasta 84.10, evidenciando una dispersión notable. Esta variabilidad indica que, si bien la mayoría de los estudiantes experimenta niveles de ansiedad elevados, algo esperable en programas doctorales, hay un subgrupo con ansiedad baja y otro con niveles muy altos que podrían estar en riesgo académico. Dado que la media y la mediana coinciden estrechamente, no hay evidencia de valores atípicos extremos que distorsionen la distribución.
Program: Programa doctoral
La muestra está compuesta por estudiantes de tres programas doctorales. Education PhD es el grupo más numeroso con 41 estudiantes (41%), seguido por Public Health PhD con 33 (33%) y Economics PhD con 26 (26%). La distribución no es perfectamente uniforme entre programas, Education PhD concentra casi el doble de estudiantes que Economics PhD, lo que implica que los grupos tienen tamaños desiguales. Esto es relevante para análisis posteriores, ya que las comparaciones entre programas no estarán basadas en muestras equivalentes. No obstante, ningún programa está subrepresentado de forma crítica, pues todos superan los 25 casos, lo cual es razonable para sustentar inferencias estadísticas por grupo.
Scholarship: Beca
El 58% de los estudiantes (n = 58) no recibe beca, mientras que el 42% restante (n = 42) sí la recibe. La distribución es moderadamente desbalanceada pero no de forma extrema, la diferencia entre ambos grupos es de 16 estudiantes, lo que permite comparaciones válidas entre becados y no becados sin riesgo severo de desequilibrio muestral. Este reparto es importante para el análisis porque la beca se evalúa como posible factor de apoyo académico: si la diferencia en GPA entre ambos grupos resulta estadísticamente significativa, tendría implicaciones directas para las políticas de asignación de recursos de la Facultad. El tamaño razonable de ambos grupos (42 y 58) ofrece suficiente potencia estadística para detectar diferencias reales si estas existen.
# Seleccionar solo las variables numéricas de interés
datos_numericos <- data %>%
dplyr::select(GPA, Hours_Study, Anxiety_Score)
# Matriz de correlaciones con histogramas en diagonal y coeficiente de Pearson
chart.Correlation(
datos_numericos,
histogram = TRUE, # diagonal: histograma + densidad de cada variable
method = "pearson" # coeficiente de correlación de Pearson
)ggplot(data, aes(x = Program, y = GPA, fill = Scholarship)) +
geom_boxplot(
alpha = 0.65,
outlier.shape = 21,
outlier.size = 2
) +
# Línea de media global (Mean GPA = 2.96)
geom_hline(
yintercept = 2.96,
linetype = "dashed",
color = "gray40",
linewidth = 0.7
) +
annotate("text",
x = 0.55, y = 2.99,
label = "Media global = 2.96",
size = 3.5, color = "gray40", hjust = 0) +
scale_fill_manual(
values = c("No" = "#E08A3C",
"Yes" = "#4B9CD3"),
name = "Beca"
) +
scale_x_discrete(labels = c(
"Economics PhD" = "Economics\nPhD",
"Education PhD" = "Education\nPhD",
"Public Health PhD" = "Public Health\nPhD"
)) +
labs(
title = "Distribución del GPA por Programa y Beca",
x = "Programa doctoral",
y = "GPA",
caption = "Línea punteada = media global (2.96) | n = 100"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold"),
legend.position = "top",
panel.grid.minor = element_blank()
)data$Program <- factor(data$Program)
data$Scholarship <- factor(data$Scholarship)
# Ver niveles (útil para saber la categoría de referencia)
levels(data$Program)## [1] "Economics PhD" "Education PhD" "Public Health PhD"
## [1] "No" "Yes"
# Ajustar modelo con predictores mixto (dos categóricas + dos numéricas)
mod_base <- lm(GPA ~ Hours_Study_centrado + Anxiety_Score_centrado +
Program + Scholarship,
data = data)
summary(mod_base)##
## Call:
## lm(formula = GPA ~ Hours_Study_centrado + Anxiety_Score_centrado +
## Program + Scholarship, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.38534 -0.12160 -0.00103 0.12973 0.43304
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.973214 0.040132 74.086 < 2e-16 ***
## Hours_Study_centrado 0.031379 0.003592 8.734 9e-14 ***
## Anxiety_Score_centrado -0.004359 0.001590 -2.741 0.00732 **
## ProgramEducation PhD -0.059925 0.048143 -1.245 0.21632
## ProgramPublic Health PhD -0.083186 0.049571 -1.678 0.09665 .
## ScholarshipYes 0.091445 0.038877 2.352 0.02075 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1882 on 94 degrees of freedom
## Multiple R-squared: 0.504, Adjusted R-squared: 0.4776
## F-statistic: 19.1 on 5 and 94 DF, p-value: 4.525e-13
# Modelo completo (todas las variables explicativas)
mod_base <- lm(GPA ~ Hours_Study_centrado + Anxiety_Score_centrado + Program + Scholarship,
data = data)
# modelo mínimo (solo intercepto)
m_null <- lm(GPA ~ 1, data = data)
# Backward elimination (desde el modelo completo)
m_back <- step(mod_base, direction = "backward", trace = 1)## Start: AIC=-328.19
## GPA ~ Hours_Study_centrado + Anxiety_Score_centrado + Program +
## Scholarship
##
## Df Sum of Sq RSS AIC
## - Program 2 0.10370 3.4348 -329.12
## <none> 3.3311 -328.19
## - Scholarship 1 0.19606 3.5272 -324.47
## - Anxiety_Score_centrado 1 0.26633 3.5975 -322.49
## - Hours_Study_centrado 1 2.70356 6.0347 -270.76
##
## Step: AIC=-329.12
## GPA ~ Hours_Study_centrado + Anxiety_Score_centrado + Scholarship
##
## Df Sum of Sq RSS AIC
## <none> 3.4348 -329.12
## - Scholarship 1 0.20446 3.6393 -325.34
## - Anxiety_Score_centrado 1 0.31271 3.7475 -322.41
## - Hours_Study_centrado 1 2.70570 6.1405 -273.03
##
## Call:
## lm(formula = GPA ~ Hours_Study_centrado + Anxiety_Score_centrado +
## Scholarship, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.4174 -0.1263 -0.0118 0.1250 0.4251
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.920879 0.024903 117.290 < 2e-16 ***
## Hours_Study_centrado 0.031379 0.003608 8.696 9.37e-14 ***
## Anxiety_Score_centrado -0.004655 0.001575 -2.956 0.00392 **
## ScholarshipYes 0.092192 0.038566 2.390 0.01878 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1892 on 96 degrees of freedom
## Multiple R-squared: 0.4886, Adjusted R-squared: 0.4726
## F-statistic: 30.57 on 3 and 96 DF, p-value: 5.849e-14
# Forward selection (desde el modelo nulo)
m_forw <- step(m_null,
scope = list(lower = m_null, upper = mod_base),
direction = "forward", trace = 1)## Start: AIC=-268.07
## GPA ~ 1
##
## Df Sum of Sq RSS AIC
## + Hours_Study_centrado 1 2.77954 3.9366 -319.48
## + Scholarship 1 0.37361 6.3426 -271.79
## + Anxiety_Score_centrado 1 0.18105 6.5351 -268.80
## <none> 6.7162 -268.07
## + Program 2 0.13973 6.5765 -266.17
##
## Step: AIC=-319.48
## GPA ~ Hours_Study_centrado
##
## Df Sum of Sq RSS AIC
## + Anxiety_Score_centrado 1 0.29735 3.6393 -325.34
## + Scholarship 1 0.18910 3.7475 -322.41
## <none> 3.9366 -319.48
## + Program 2 0.14807 3.7886 -319.32
##
## Step: AIC=-325.34
## GPA ~ Hours_Study_centrado + Anxiety_Score_centrado
##
## Df Sum of Sq RSS AIC
## + Scholarship 1 0.20446 3.4348 -329.12
## <none> 3.6393 -325.34
## + Program 2 0.11210 3.5272 -324.47
##
## Step: AIC=-329.12
## GPA ~ Hours_Study_centrado + Anxiety_Score_centrado + Scholarship
##
## Df Sum of Sq RSS AIC
## <none> 3.4348 -329.12
## + Program 2 0.1037 3.3311 -328.19
##
## Call:
## lm(formula = GPA ~ Hours_Study_centrado + Anxiety_Score_centrado +
## Scholarship, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.4174 -0.1263 -0.0118 0.1250 0.4251
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.920879 0.024903 117.290 < 2e-16 ***
## Hours_Study_centrado 0.031379 0.003608 8.696 9.37e-14 ***
## Anxiety_Score_centrado -0.004655 0.001575 -2.956 0.00392 **
## ScholarshipYes 0.092192 0.038566 2.390 0.01878 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1892 on 96 degrees of freedom
## Multiple R-squared: 0.4886, Adjusted R-squared: 0.4726
## F-statistic: 30.57 on 3 and 96 DF, p-value: 5.849e-14
# Método híbrido (forward + backward)
m_hyb <- step(m_null,
scope = list(lower = m_null, upper = mod_base),
direction = "both", trace = 1)## Start: AIC=-268.07
## GPA ~ 1
##
## Df Sum of Sq RSS AIC
## + Hours_Study_centrado 1 2.77954 3.9366 -319.48
## + Scholarship 1 0.37361 6.3426 -271.79
## + Anxiety_Score_centrado 1 0.18105 6.5351 -268.80
## <none> 6.7162 -268.07
## + Program 2 0.13973 6.5765 -266.17
##
## Step: AIC=-319.48
## GPA ~ Hours_Study_centrado
##
## Df Sum of Sq RSS AIC
## + Anxiety_Score_centrado 1 0.29735 3.6393 -325.34
## + Scholarship 1 0.18910 3.7475 -322.41
## <none> 3.9366 -319.48
## + Program 2 0.14807 3.7886 -319.32
## - Hours_Study_centrado 1 2.77954 6.7162 -268.07
##
## Step: AIC=-325.34
## GPA ~ Hours_Study_centrado + Anxiety_Score_centrado
##
## Df Sum of Sq RSS AIC
## + Scholarship 1 0.20446 3.4348 -329.12
## <none> 3.6393 -325.34
## + Program 2 0.11210 3.5272 -324.47
## - Anxiety_Score_centrado 1 0.29735 3.9366 -319.48
## - Hours_Study_centrado 1 2.89584 6.5351 -268.80
##
## Step: AIC=-329.12
## GPA ~ Hours_Study_centrado + Anxiety_Score_centrado + Scholarship
##
## Df Sum of Sq RSS AIC
## <none> 3.4348 -329.12
## + Program 2 0.10370 3.3311 -328.19
## - Scholarship 1 0.20446 3.6393 -325.34
## - Anxiety_Score_centrado 1 0.31271 3.7475 -322.41
## - Hours_Study_centrado 1 2.70570 6.1405 -273.03
##
## Call:
## lm(formula = GPA ~ Hours_Study_centrado + Anxiety_Score_centrado +
## Scholarship, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.4174 -0.1263 -0.0118 0.1250 0.4251
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.920879 0.024903 117.290 < 2e-16 ***
## Hours_Study_centrado 0.031379 0.003608 8.696 9.37e-14 ***
## Anxiety_Score_centrado -0.004655 0.001575 -2.956 0.00392 **
## ScholarshipYes 0.092192 0.038566 2.390 0.01878 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1892 on 96 degrees of freedom
## Multiple R-squared: 0.4886, Adjusted R-squared: 0.4726
## F-statistic: 30.57 on 3 and 96 DF, p-value: 5.849e-14
AIC_comp <- data.frame(
Metodo = c("Backward", "Forward", "Híbrido"),
AIC = c(tail(m_back$anova$AIC, 1),
tail(m_forw$anova$AIC, 1),
tail(m_hyb$anova$AIC, 1))
)
knitr::kable(AIC_comp, digits = 4, align = "lc",
caption = "Comparación de AIC entre métodos de selección")| Metodo | AIC |
|---|---|
| Backward | -329.1202 |
| Forward | -329.1202 |
| Híbrido | -329.1202 |
mod_int1 <- lm(GPA ~ Hours_Study_centrado * Scholarship +
Anxiety_Score_centrado, data = data)
mod_int2 <- lm(GPA ~ Anxiety_Score_centrado * Scholarship +
Hours_Study_centrado, data = data)
mod_int3 <- lm(GPA ~ Hours_Study_centrado * Program +
Anxiety_Score_centrado + Scholarship, data = data)
mod_int4 <- lm(GPA ~ Anxiety_Score_centrado * Program +
Hours_Study_centrado + Scholarship, data = data)
AIC(m_hyb, mod_int1, mod_int2, mod_int3, mod_int4)## df AIC
## m_hyb 5 -43.33251
## mod_int1 6 -44.73980
## mod_int2 6 -41.54572
## mod_int3 9 -39.30240
## mod_int4 9 -40.02178
GPA ~ Hours_Study_centrado * Scholarship + Anxiety_Score_centrado. La interacción Hours_Study × Scholarship captura que el efecto de las horas de estudio sobre el GPA depende de si el estudiante recibe beca o no, lo cual tiene respaldo teórico: los becados podrían tener acceso a más recursos académicos que potencian la eficiencia de su estudio.
m_final <- lm(GPA ~ Hours_Study_centrado * Scholarship + Anxiety_Score_centrado,
data = data)
summary(m_final)##
## Call:
## lm(formula = GPA ~ Hours_Study_centrado * Scholarship + Anxiety_Score_centrado,
## data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.40042 -0.14505 -0.01402 0.13834 0.42425
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.923859 0.024666 118.540 < 2e-16 ***
## Hours_Study_centrado 0.037676 0.004976 7.572 2.38e-11 ***
## ScholarshipYes 0.093717 0.038123 2.458 0.01577 *
## Anxiety_Score_centrado -0.004803 0.001558 -3.082 0.00269 **
## Hours_Study_centrado:ScholarshipYes -0.012936 0.007129 -1.815 0.07274 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1869 on 95 degrees of freedom
## Multiple R-squared: 0.5057, Adjusted R-squared: 0.4849
## F-statistic: 24.3 on 4 and 95 DF, p-value: 7.288e-14
glance(m_final) %>%
dplyr::select(r.squared, adj.r.squared, sigma, statistic, p.value, AIC, BIC) %>%
mutate(across(where(is.numeric), ~round(., 4))) %>%
knitr::kable(caption = "Métricas de bondad de ajuste del modelo final")| r.squared | adj.r.squared | sigma | statistic | p.value | AIC | BIC |
|---|---|---|---|---|---|---|
| 0.5057 | 0.4849 | 0.1869 | 24.2983 | 0 | -44.7398 | -29.1088 |
tidy(m_final, conf.int = TRUE, conf.level = 0.95) %>%
mutate(across(where(is.numeric), ~round(., 5))) %>%
knitr::kable(caption = "Coeficientes del modelo final con IC al 95%")| term | estimate | std.error | statistic | p.value | conf.low | conf.high |
|---|---|---|---|---|---|---|
| (Intercept) | 2.92386 | 0.02467 | 118.53968 | 0.00000 | 2.87489 | 2.97283 |
| Hours_Study_centrado | 0.03768 | 0.00498 | 7.57157 | 0.00000 | 0.02780 | 0.04755 |
| ScholarshipYes | 0.09372 | 0.03812 | 2.45827 | 0.01577 | 0.01803 | 0.16940 |
| Anxiety_Score_centrado | -0.00480 | 0.00156 | -3.08218 | 0.00269 | -0.00790 | -0.00171 |
| Hours_Study_centrado:ScholarshipYes | -0.01294 | 0.00713 | -1.81458 | 0.07274 | -0.02709 | 0.00122 |
La siguiente tabla presenta la interpretación contextualizada de cada coeficiente:
| Término | Estimado | Interpretación |
|---|---|---|
(Intercept) |
≈ 2.92 | GPA esperado para un estudiante sin beca con horas de estudio y ansiedad en el promedio. |
Hours_Study_centrado |
≈ 0.038 | Para estudiantes sin beca, cada hora adicional semanal por encima del promedio aumenta el GPA en 0.038 puntos, ceteris paribus. |
ScholarshipYes |
≈ 0.094 | Los estudiantes con beca tienen, en promedio, un GPA 0.094 puntos mayor que los sin beca cuando las horas de estudio están en el promedio. |
Anxiety_Score_centrado |
≈ −0.005 | Cada punto adicional de ansiedad por encima del promedio se asocia con una disminución de 0.005 puntos en el GPA, ceteris paribus. |
Hours_Study_centrado:ScholarshipYes |
≈ −0.013 | El efecto positivo de las horas de estudio sobre el GPA es 0.013 puntos menor para estudiantes con beca que para los sin beca. |
Analice el cumplimiento de los siguientes supuestos del modelo final. (En cada supuesto debe utilizar el método gráfico y la prueba formal). Discutir las implicaciones en caso de violación.
par(mfrow = c(1, 2), mar = c(4, 4, 3, 1))
qqnorm(res, main = "QQ-plot de los residuos",
col = "blue", pch = 16)
qqline(res, col = "red")
hist(res, breaks = 20, col = "#aec6e8", border = "white",
main = "Histograma de residuos",
xlab = "Residuos", freq = FALSE)
curve(dnorm(x, mean(res), sd(res)),
add = TRUE, col = "red", lwd = 2)##
## Shapiro-Wilk normality test
##
## data: res
## W = 0.98572, p-value = 0.3572
##
## Jarque Bera Test
##
## data: res
## X-squared = 2.3917, df = 2, p-value = 0.3024
plot(fit, res, pch = 19, col = "blue",
xlab = "Valores ajustados (y_hat)",
ylab = "Residuos (e)",
main = "Residuos vs valores ajustados")
abline(h = 0, lty = 2)##
## studentized Breusch-Pagan test
##
## data: m_final
## BP = 4.2259, df = 4, p-value = 0.3763
orden <- seq(1, nrow(data))
plot(orden, res, pch = 16, col = "blue",
xlab = "Numero de observacion",
ylab = "Residuos (e)",
main = "Residuos en el tiempo (independencia)")
abline(h = 0, lty = 2)##
## Durbin-Watson test
##
## data: m_final
## DW = 2.1028, p-value = 0.6991
## alternative hypothesis: true autocorrelation is greater than 0
cor_matrix <- cor(data %>% dplyr::select(Hours_Study_centrado,
Anxiety_Score_centrado))
corrplot(cor_matrix,
method = "color",
addCoef.col = "black",
number.cex = 1.2,
type = "upper",
tl.srt = 45,
tl.col = "black",
col = colorRampPalette(c("#c0392b", "white", "#2e6da4"))(200),
title = "Correlacion entre predictores numericos",
mar = c(0, 0, 2, 0))## Hours_Study_centrado Scholarship
## 1.978723 1.013134
## Anxiety_Score_centrado Hours_Study_centrado:Scholarship
## 1.008815 1.962982
vif_vals <- vif(m_final)
if (is.matrix(vif_vals)) {
vif_df <- data.frame(
Variable = rownames(vif_vals),
GVIF = round(vif_vals[, 1], 3),
Df = vif_vals[, 2],
GVIF_adj = round(vif_vals[, 3], 3),
Diagnostico = ifelse(vif_vals[, 3] < sqrt(5), "Sin problema",
ifelse(vif_vals[, 3] < sqrt(10), "Moderado", "Severo"))
)
} else {
vif_df <- data.frame(
Variable = names(vif_vals),
VIF = round(vif_vals, 3),
Diagnostico = ifelse(vif_vals < 5, "Sin problema",
ifelse(vif_vals < 10, "Moderado", "Severo"))
)
}
knitr::kable(vif_df, align = "lcccc",
caption = "VIF / VIF ajustado del modelo final")| Variable | VIF | Diagnostico | |
|---|---|---|---|
| Hours_Study_centrado | Hours_Study_centrado | 1.979 | Sin problema |
| Scholarship | Scholarship | 1.013 | Sin problema |
| Anxiety_Score_centrado | Anxiety_Score_centrado | 1.009 | Sin problema |
| Hours_Study_centrado:Scholarship | Hours_Study_centrado:Scholarship | 1.963 | Sin problema |
Hours_Study y Anxiety_Score observada en la Visualización 1. El término de interacción eleva ligeramente los valores de GVIF para los términos involucrados, pero se mantiene dentro de rangos aceptables.ggplot(data.frame(obs = data$GPA, pred = fit),
aes(x = obs, y = pred)) +
geom_point(alpha = 0.55, color = "#2e6da4", size = 2) +
geom_abline(intercept = 0, slope = 1,
color = "firebrick", linetype = "dashed", linewidth = 1) +
theme_minimal(13) +
labs(title = "Valores Observados vs Ajustados",
x = "GPA Observado",
y = "GPA Predicho",
caption = "La linea roja indica ajuste perfecto (GPA = GPA_predicho).")El análisis permite concluir que el modelo
GPA ~ Hours_Study_centrado * Scholarship + Anxiety_Score_centrado
es el que mejor ajusta los datos (AIC = −344.74).
Los resultados
del modelo sugieren que varios factores están asociados con el desempeño
académico de los estudiantes doctorales. En primer lugar, las horas de
estudio muestran una relación positiva con el GPA. Esto indica que, en
general, los estudiantes que dedican más tiempo al estudio tienden a
tener un mejor rendimiento académico.
Por otro lado, el nivel de
ansiedad académica muestra una relación negativa con el GPA. Esto
sugiere que niveles más altos de ansiedad están asociados con un menor
desempeño académico, lo que podría reflejar que el estrés o la presión
académica afectan la capacidad del estudiante para rendir al
máximo.
También se observa que los estudiantes que reciben beca
tienden a tener un GPA ligeramente mayor que aquellos que no la reciben,
lo que podría indicar que el apoyo financiero facilita el desempeño
académico o que los estudiantes con beca tienden a tener características
académicas más fuertes.
Además, el modelo muestra que existe una
interacción entre las horas de estudio y el estatus de beca. Esto
significa que el efecto de estudiar más horas sobre el GPA puede variar
dependiendo de si el estudiante recibe beca o no.
A pesar de los resultados obtenidos, el análisis presenta algunas
limitaciones. En primer lugar, la muestra es relativamente pequeña, lo
que puede afectar la precisión de las estimaciones y la generalización
de los resultados a otras poblaciones de estudiantes doctorales.
Además, el análisis es de tipo observacional, por lo que las relaciones
encontradas deben interpretarse como asociaciones y no necesariamente
como relaciones causales. Es decir, no se puede afirmar con certeza que
estas variables causan cambios en el GPA, sino únicamente que están
relacionadas con él dentro de la muestra analizada.