Cargar base de datos

Manejo base de datos

Datos_finales<- read.csv("D:\\ZEGUEL IPAE\\CICLO 4\\ESTADÍSTICA APLICADA A LA COMPUTACIÓN [GESTIÓN DE SISTEMAS DE INFOR\\StudentsPerformance.csv"
,sep = ";" , stringsAsFactors =  TRUE , encoding = "latin1")

# Mostrar las primeras lineas de Datos_finales
head(Datos_finales)
# Se muestra un resumen estadistico

summary(Datos_finales)
##     gender        Grupo             educacionnivelpadres          lunch    
##  female:518   group A: 89   associate's degree:222       free/reduced:355  
##  male  :482   group B:190   bachelor's degree :118       standard    :645  
##               group C:319   high school       :196                         
##               group D:262   master's degree   : 59                         
##               group E:140   some college      :226                         
##                             some high school  :179                         
##  cursopreparacionexamen   mathscore       readingscore     writingscore   
##  completed:358          Min.   :  0.00   Min.   : 17.00   Min.   : 10.00  
##  none     :642          1st Qu.: 57.00   1st Qu.: 59.00   1st Qu.: 57.75  
##                         Median : 66.00   Median : 70.00   Median : 69.00  
##                         Mean   : 66.09   Mean   : 69.17   Mean   : 68.05  
##                         3rd Qu.: 77.00   3rd Qu.: 79.00   3rd Qu.: 79.00  
##                         Max.   :100.00   Max.   :100.00   Max.   :100.00

Tablas de frecuencia (Para cada variable) y Representación gráfica de datos.

library(agricolae)

# Tabla de frecuencias para la variable gender
tabla_genero <- table(Datos_finales$gender)
print(tabla_genero)
## 
## female   male 
##    518    482
plot(Datos_finales$gender)

pie(table(Datos_finales$gender))

El resultado del genero de los sujetos de estudio son:

library(agricolae)

# Tabla de frecuencias para la variable grupo
tabla_grupo <- table(Datos_finales$Grupo)
print(tabla_grupo)
## 
## group A group B group C group D group E 
##      89     190     319     262     140
plot(Datos_finales$Grupo)

pie(table(Datos_finales$Grupo))

El resultado muestra que hay:

library(agricolae)

# Tabla de frecuencias para la variable gender

tabla_educacion_padres <- table(Datos_finales$educacionnivelpadres)
print(tabla_educacion_padres)
## 
## associate's degree  bachelor's degree        high school    master's degree 
##                222                118                196                 59 
##       some college   some high school 
##                226                179
plot(Datos_finales$educacionnivelpadres)

pie(table(Datos_finales$educacionnivelpadres))

El resultado de la educacion de los padres de los sujetos de estudio son:

library(agricolae)

# Tabla de frecuencias para la variable lunch

tabla_lunch <- table(Datos_finales$lunch)
print(tabla_lunch)
## 
## free/reduced     standard 
##          355          645
plot(Datos_finales$lunch)

pie(table(Datos_finales$lunch))

La resultado muestra la distribución de los estudiantes según el tipo de almuerzo que reciben.

library(agricolae)

# Tabla de frecuencias para la variable test preparation course
tabla_preparacion <- table(Datos_finales$cursopreparacionexamen)
print(tabla_preparacion)
## 
## completed      none 
##       358       642
plot(Datos_finales$cursopreparacionexamen)

pie(table(Datos_finales$cursopreparacionexamen))

La tabla muestra la distribución de los estudiantes según si completaron un curso de preparación para el examen o no.

library(agricolae)


# Tabla de frecuencias

tabla_frecuencia_matematica <- table(Datos_finales$mathscore)
head(tabla_frecuencia_matematica)
## 
##  0  8 18 19 22 23 
##  1  1  1  1  1  1
# Histograma

hist(Datos_finales$mathscore, breaks = "Sturges", main = "Histograma de puntuacion de matematicas", xlab = "Puntuación matematica", ylab = "Frecuencia")

library(agricolae)


# Tabla de frecuencias
tabla_frecuencia_lectura <- table(Datos_finales$readingscore)
head(tabla_frecuencia_lectura)
## 
## 17 23 24 26 28 29 
##  1  1  2  1  1  2
# Histograma

hist(Datos_finales$readingscore, breaks = "Sturges", main = "Histograma de puntuacion de lectura", xlab = "Puntuacion de lectura", ylab = "Frecuencia")

Los números que aparecen en la primera columna son los valores únicos de readingscore, y los números en la

segunda columna representan la frecuencia con la que aparece cada valor en los datos.

library(agricolae)


#  tabla de frecuencias

tabla_frecuencia_escritura <- table(Datos_finales$writingscore)
head(tabla_frecuencia_escritura)
## 
## 10 15 19 22 23 27 
##  1  1  1  1  1  3
#   Histograma

hist(Datos_finales$writingscore, breaks = "Sturges", main = "Histograma de puntuacion de escritura", xlab = "puntuacion escritura", ylab = "Frecuencia")

Los números que aparecen en la primera columna son los valores únicos de “writingscore”, y los números en la

segunda columna representan la frecuencia con la que aparece cada valor en los datos.

Medidas estadísticas de tendencia

# Media
media_matematicas <- mean(Datos_finales$mathscore)
media_matematicas
## [1] 66.089
# Mediana
me_matematicas <- median(Datos_finales$mathscore)
me_matematicas
## [1] 66
#Medios
media_escritura <- mean(Datos_finales$readingscore)
media_escritura
## [1] 69.169
# Mediana
me_escritura <- median(Datos_finales$readingscore)
me_escritura
## [1] 70

puntuaciones de matemáticas están por encima de 66 y el otro 50% están por debajo.

puntuaciones de lectura están por encima de 70 y el otro 50% están por debajo.

Medidas estadísticas de posición

# Matematicas
# Calcular los cuartiles
q1_matematicas <- quantile(Datos_finales$mathscore, 0.25)
q3_matematicas <- quantile(Datos_finales$mathscore, 0.75)

# Calcular el rango intercuartílico (IQR)
RIC_matematicas <- q3_matematicas - q1_matematicas

# Calcular los límites del bigote inferior y superior

bigote_inferior <- q1_matematicas - 1.5 * RIC_matematicas
bigote_superior <- q3_matematicas + 1.5 * RIC_matematicas

RIC_matematicas
## 75% 
##  20
# Imprimir los valores para verificar

print(paste("Bigote inferior:", bigote_inferior))
## [1] "Bigote inferior: 27"
print(paste("Bigote superior:", bigote_superior))
## [1] "Bigote superior: 107"
# Lectura
q1_lectura <- quantile(Datos_finales$readingscore, 0.25)
q1_lectura
## 25% 
##  59
q2_lectura <- quantile(Datos_finales$readingscore, 0.5)
q2_lectura
## 50% 
##  70
q3_lectura <- quantile(Datos_finales$readingscore, 0.75)
q3_lectura
## 75% 
##  79
# Calcular el rango intercuartílico (IQR)
RIC_lectura <- q3_lectura - q1_lectura

# Calcular los límites del bigote  inferior y superior

bigote_inferior1 <- q1_lectura - 1.5 * RIC_lectura
bigote_superior1 <- q3_lectura + 1.5 * RIC_lectura

RIC_lectura
## 75% 
##  20
# Imprimir los valores para verificar

print(paste("Bigote inferior:", bigote_inferior1))
## [1] "Bigote inferior: 29"
print(paste("Bigote superior:", bigote_superior1))
## [1] "Bigote superior: 109"
# Escritura
q1_escritura <- quantile(Datos_finales$writingscore, 0.25)
q1_escritura
##   25% 
## 57.75
q2_escritura <- quantile(Datos_finales$writingscore, 0.5)
q2_escritura
## 50% 
##  69
q3_escritura <- quantile(Datos_finales$writingscore, 0.75)
q3_escritura
## 75% 
##  79
# Calcular el rango intercuartílico (IQR)

RIC_escritura <- q3_escritura - q1_escritura

# Calcular los límites del bigote inferior y superior

bigote_inferior2 <- q1_escritura - 1.5 * RIC_escritura
bigote_superior2 <- q3_escritura + 1.5 * RIC_escritura

RIC_escritura
##   75% 
## 21.25
# Imprimir los valores para verificar

print(paste("Bigote inferior:", bigote_inferior1))
## [1] "Bigote inferior: 29"
print(paste("Bigote superior:", bigote_superior2))
## [1] "Bigote superior: 110.875"

Para la variable mathscore:

El tercer cuartil (Q3), que representa el percentil 75%, es igual a 20.

El rango intercuartílico (RIC_matematicas) es la diferencia entre el tercer cuartil (Q3) y el primer cuartil (Q1), en este caso, 20.

Los límites del bigote se calculan sumando y restando 1.5 veces el RIC a los valores de Q1 y Q3, respectivamente.

El bigote inferior es 27 y el bigote superior es 107.

Para la variable readingscore:

Los valores de los cuartiles son:

  • Q1 (primer cuartil): 59

  • Q2 (segundo cuartil, que es también la mediana): 70

  • Q3 (tercer cuartil): 79

El RIC_lectura es 20.

Los límites del bigote son 29 para el bigote inferior y 109 para el bigote superior.

Para la variable “writingscore”:

Los valores de los cuartiles son:

  • Q1: 57.75

  • Q2: 69

  • Q3: 79

El RIC_escritura es 21.25.

Los límites del bigote son 29 para el bigote inferior y 110.875 para el bigote superior.

Manejo de datos Missing

# Verificar si faltan datos en el conjunto de datos

missing_data <- any(is.na(Datos_finales))
print(missing_data)
## [1] FALSE
# Obtener columnas con datos faltantes

columns_with_missing <- colnames(Datos_finales)[colSums(is.na(Datos_finales)) != 0]
print(columns_with_missing)
## character(0)

Estos resultados indican que no hay datos faltantes en el conjunto de datos.

Manejo de valores outliers

#Matematica
boxplot(Datos_finales$mathscore)

outliers_mat <-Datos_finales$mathscore[Datos_finales$mathscore < bigote_inferior| Datos_finales$mathscore > bigote_superior]
head(outliers_mat)
## [1] 18  0 22 24 26 19
# Filtrar los datos para excluir los valores atípicos

mat_no_atipicos <- subset(Datos_finales, mathscore >= bigote_inferior & mathscore <= bigote_superior)

# Mostrar las primeras filas 
head(mat_no_atipicos)
boxplot(mat_no_atipicos$mathscore)

# Lectura

boxplot(Datos_finales$readingscore)

outliers_lec <-Datos_finales$readingscore[Datos_finales$readingscore < bigote_inferior1| Datos_finales$readingscore > bigote_superior1]
head(outliers_lec)
## [1] 17 26 28 23 24 24
# Filtrar los datos para excluir los valores atípicos

lec_sin_atipicos <- Datos_finales[!Datos_finales$readingscore %in% outliers_lec,]


# Mostrar las primeras filas

head(lec_sin_atipicos)
boxplot(lec_sin_atipicos$readingscore)

# Escritura

boxplot(Datos_finales$writingscore)

outliers_esc <-Datos_finales$writingscore[Datos_finales$writingscore < bigote_inferior2| Datos_finales$writingscore > bigote_superior2]
head(outliers_esc)
## [1] 10 22 19 15 23
# Filtrar los datos para excluir los valores atípicos

esc_sin_atipicos <- Datos_finales[!Datos_finales$writingscore %in% outliers_esc,]


# Mostrar las primeras filas 

head(esc_sin_atipicos)
boxplot(esc_sin_atipicos$writingscore)

Resultado mathscore (matemáticas):

El primer gráfico generado muestra un diagrama de caja que representa la distribución de las puntuaciones de matemáticas en el conjunto de datos.

Identificación de valores atípicos:

Los primeros seis valores atípicos se muestran como: [1] 18 0 22 24 26 19.

Se filtran los datos originales s para excluir los valores atípicos. Los datos filtrados se almacenan en el nuevo conjunto de datos. Se muestran las primeras filas del conjunto de datos filtrado, que incluyen información sobre el género, el grupo

educativo, el almuerzo, la preparación del examen y las puntuaciones en matemáticas, lectura y escritura.

Se crea un nuevo diagrama de caja que muestra la distribución de las puntuaciones de matemáticas después de excluir los valores atípicos.

Resultado readingscore(lectura):

Diagrama de caja inicial de las puntuaciones de lectura:

Se genera un diagrama de caja que representa la distribución de las puntuaciones de lectura en el conjunto de datos Datos_finales.

Identificación de valores atípicos en las puntuaciones de lectura:

Se muestran los primeros seis valores atípicos como: [1] 17 26 28 23 24 24.

Datos filtrados sin valores atípicos en las puntuaciones de lectura:

Se filtran los datos originales para excluir los valores atípicos en las puntuaciones de lectura. Los datos

filtrados se almacenan en el nuevo conjunto de datos.

Se muestran las primeras filas del conjunto de datos filtrado, que incluyen información sobre el género, el grupo

educativo, el almuerzo, la preparación del examen y las puntuaciones en matemáticas, lectura y escritura.

Diagrama de caja de las puntuaciones de lectura sin valores atípicos:

Se crea un nuevo diagrama de caja que muestra la distribución de las puntuaciones de lectura después de excluir los valores atípicos

Resultado writingscore(escritura)

Diagrama de caja inicial de las puntuaciones de escritura:

Se genera un diagrama de caja que representa la distribución de las puntuaciones de escritura en el conjunto de datos.

Identificación de valores atípicos en las puntuaciones de escritura:

Se identifican los valores atípicos

Se muestran los primeros seis valores atípicos como: [1] 10 22 19 15 23.

Datos filtrados sin valores atípicos en las puntuaciones de escritura:

Se filtran los datos originales para excluir los valores atípicos en las puntuaciones de escritura. Los datos

filtrados se almacenan en el nuevo conjunto de datos .

Se muestran las primeras filas del conjunto de datos filtrado, que incluyen información sobre el género, el grupo

educativo, el almuerzo, la preparación del examen y las puntuaciones en matemáticas, lectura y escritura.

Diagrama de caja de las puntuaciones de escritura sin valores atípicos:

Se crea un nuevo diagrama de caja que muestra la distribución de las puntuaciones de escritura después de excluir los valores atípicos.

Transformación de variables

# Matematica
mat_exp<-exp(Datos_finales$mathscore)
head(mat_exp)
## [1] 1.858672e+31 9.253782e+29 1.220403e+39 2.581313e+20 1.014800e+33
## [6] 6.837671e+30
matematica_exp<-exp(Datos_finales$mathscore)
hist(matematica_exp)

#Lectura

par(mfrow=c(1,1))
lectura_sqrt <- sqrt(Datos_finales$readingscore)
lectura_exp <-exp(Datos_finales$readingscore)
lectura_ln <-log(Datos_finales$readingscore)
lectura_log2 <-log(Datos_finales$readingscore, base = 2)
lectura_log5 <-log(Datos_finales$readingscore, base = 5)

par(mfrow=c(3,2))
hist(Datos_finales$readingscore)
hist(lectura_sqrt)
hist(lectura_exp)
hist(lectura_ln)
hist(lectura_log2)
hist(lectura_log5)

# Escritura

library(ggplot2)

# Aplicar la función de suavizado de kernels a la columna writingscore
smoothed_writingscore <- density(Datos_finales$writingscore)

# Crear un dataframe con los valores de x e y del suavizado
smoothed_df <- data.frame(x = smoothed_writingscore$x, y = smoothed_writingscore$y)

# Crear un gráfico de densidad suavizado de writingscore
ggplot() +
  geom_density(data = Datos_finales, aes(x = writingscore), fill = "skyblue", alpha = 0.7) +
  geom_line(data = smoothed_df, aes(x = x, y = y), color = "red", size = 1) +
  labs(title = "Densidad Suavizada de Writing Score", x = "Writing Score", y = "Densidad") +
  theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

Respuesta mathscore(matematicas)

El resultado muestra los primeros seis valores después de aplicar la función exponencial a los datos de

mathscore.La notación 1.858672e+31 significa 1.858672 multiplicado por 10 elevado a la potencia de 31, lo que

indica un número muy grande. Del mismo modo, los otros valores también representan números grandes en notación

exponencial.

Resultado readingscore(Lectura)

Transformaciones a la variable readingscore: raíz cuadrada, exponencial, logaritmo natural, logaritmo en base 2 y

logaritmo en base 5. Estas transformaciones se realizan con el objetivo de explorar cómo se distribuyen los

después de aplicar diferentes funciones matemáticas.

Resultado wrintingscore(escritura)

El resultado genera una visualización de densidad suavizada para la variable writingscore. Esto ayuda a entender

la distribución de esa variable, mostrando cómo se agrupan los datos y detectando patrones o tendencias de manera

más clara que un histograma estándar.

Estandarizacion y normalizacion de variables

# Calcular la media y la desviación estándar de mathscore
media_mathscore <- mean(Datos_finales$mathscore)
desv_est_mathscore <- sd(Datos_finales$mathscore)

# Estandarización de mathscore 
mathscore_estandar_metodo1 <- (Datos_finales$mathscore - media_mathscore) / desv_est_mathscore
head(mathscore_estandar_metodo1)
## [1]  0.3898284  0.1919795  1.5769224 -1.2589131  0.6536271  0.3238788
# Estandarización de readingscore  
readingscore_estandar_metodo2 <- (Datos_finales$readingscore - mean(Datos_finales$readingscore)) / sd(Datos_finales$readingscore)
head(readingscore_estandar_metodo2)
## [1]  0.1939016  1.4267621  1.7692233 -0.8334822  0.6048551  0.9473163
# NORMALIZACION
monto_normamatematica <- (Datos_finales$mathscore-min(Datos_finales$mathscore))/(max(Datos_finales$mathscore)-min(Datos_finales$mathscore))
head(monto_normamatematica)
## [1] 0.72 0.69 0.90 0.47 0.76 0.71
library(scales)
monto_normaescritura<-rescale(Datos_finales$readingscore)
head(monto_normaescritura)
## [1] 0.6626506 0.8795181 0.9397590 0.4819277 0.7349398 0.7951807

Estandarización de mathscore :

Los números muestran cuántas desviaciones estándar por encima o por debajo de la media se encuentra cada puntaje.

El primer valor de 0.3898284 significa que está aproximadamente 0.39 desviaciones estándar por encima de la media.

Estandarización de readingscore :

Los números indican cuántas desviaciones estándar por encima o por debajo de la media se encuentra cada puntaje de

lectura.El primer valor de 0.1939016 significa que está aproximadamente 0.19 desviaciones estándar por encima de la media.

Normalización de mathscore:

Los números representan la posición relativa de cada puntaje dentro del rango total de valores posibles.

El primer valor de 0.72 significa que el puntaje se encuentra al 72% del rango total, es decir, está por encima del 72% de los puntajes.

Normalización de readingscore:

Los números indican la posición relativa de cada puntaje de lectura dentro del rango total de valores posibles.

El primer valor de 0.6626506 significa que el puntaje se encuentra alrededor del 66% del rango total, es decir está por encima del 66% de los puntajes de lectura.

Modelamiento predictivo

# Regresión Lineal Simple
modelo_regresion <- lm(writingscore ~ mathscore, data = Datos_finales)


summary(modelo_regresion)
## 
## Call:
## lm(formula = writingscore ~ mathscore, data = Datos_finales)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -24.0252  -7.2435   0.4416   6.8220  23.0831 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 14.89422    1.28294   11.61   <2e-16 ***
## mathscore    0.80437    0.01892   42.51   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.068 on 998 degrees of freedom
## Multiple R-squared:  0.6442, Adjusted R-squared:  0.6439 
## F-statistic:  1807 on 1 and 998 DF,  p-value: < 2.2e-16
# Regresión Múltiple
modelo_regresion_multiple <- lm(writingscore ~ mathscore + readingscore, data = Datos_finales)

# Resumen del modelo
summary(modelo_regresion_multiple)
## 
## Call:
## lm(formula = writingscore ~ mathscore + readingscore, data = Datos_finales)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -12.7155  -3.0284  -0.1624   3.0640  14.6738 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -1.16084    0.69866  -1.662   0.0969 .  
## mathscore     0.06705    0.01628   4.118 4.14e-05 ***
## readingscore  0.93660    0.01691  55.389  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.493 on 997 degrees of freedom
## Multiple R-squared:  0.9127, Adjusted R-squared:  0.9126 
## F-statistic:  5214 on 2 and 997 DF,  p-value: < 2.2e-16
# Creación de una variable binaria basada en una condición
Datos_finales$aprobado <- ifelse(Datos_finales$writingscore >= 60, 1, 0)

# Aplicar regresión logística binaria sobre la variable binaria creada
modelo_regresion_logistica <- glm(aprobado ~ mathscore, data = Datos_finales, family = "binomial")


summary(modelo_regresion_logistica)
## 
## Call:
## glm(formula = aprobado ~ mathscore, family = "binomial", data = Datos_finales)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -9.2884     0.6750  -13.76   <2e-16 ***
## mathscore     0.1667     0.0113   14.76   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1187.79  on 999  degrees of freedom
## Residual deviance:  688.82  on 998  degrees of freedom
## AIC: 692.82
## 
## Number of Fisher Scoring iterations: 6

Modelo regresion simple resultado

## 
## Call:
## lm(formula = writingscore ~ mathscore, data = Datos_finales)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -24.0252  -7.2435   0.4416   6.8220  23.0831 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 14.89422    1.28294   11.61   <2e-16 ***
## mathscore    0.80437    0.01892   42.51   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 9.068 on 998 degrees of freedom
## Multiple R-squared:  0.6442, Adjusted R-squared:  0.6439 
## F-statistic:  1807 on 1 and 998 DF,  p-value: < 2.2e-16

\(\hat{Y} = b_0 + b_1X\)

\(\hat{Y} = 14.89422 + 0.804347X\)

Modelo General:

Writingscore = 14.89422 + 0.80437 mathscore

Modelo regresion multiple resultado:

## 
## Call:
## lm(formula = writingscore ~ mathscore + readingscore, data = Datos_finales)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -12.7155  -3.0284  -0.1624   3.0640  14.6738 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  -1.16084    0.69866  -1.662   0.0969 .  
## mathscore     0.06705    0.01628   4.118 4.14e-05 ***
## readingscore  0.93660    0.01691  55.389  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.493 on 997 degrees of freedom
## Multiple R-squared:  0.9127, Adjusted R-squared:  0.9126 
## F-statistic:  5214 on 2 and 997 DF,  p-value: < 2.2e-16

El resultado muestra que tanto mathscore como readingscore son predictores significativos de writingscore.Un

aumento de una unidad en mathscore se asocia con un aumento esperado de 0.06705 en writingscore, mientras que un

aumento de una unidad en readingscore se asocia con un aumento esperado de 0.93660 en writingscore. El modelo

explica el 91.26% de la variabilidad en writingscore y la prueba F sugiere que el modelo es estadísticamente

significativo.

Modelo predictivo modelo de regresión logístico Respuesta

## 
## Call:
## glm(formula = aprobado ~ mathscore, family = "binomial", data = Datos_finales)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  -9.2884     0.6750  -13.76   <2e-16 ***
## mathscore     0.1667     0.0113   14.76   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1187.79  on 999  degrees of freedom
## Residual deviance:  688.82  on 998  degrees of freedom
## AIC: 692.82
## 
## Number of Fisher Scoring iterations: 6

Resultado modelo de regresión logística binaria:

  • El intercepto estimado es -9.2884, y el coeficiente para mathscore es 0.1667.

  • Ambos coeficientes son estadísticamente significativos (p < 0.05).

  • El AIC es 692.82, lo que indica un buen ajuste del modelo.

  • La devianza residual es 688.82, lo que también sugiere un buen ajuste.

  • En general, el modelo sugiere que las puntuaciones más altas en mathscore están asociadas con una mayor probabilidad de aprobación.