Ejercicio 3

#Objetivo: objetivo es determinar si las variables cuantitativas son capaces de explicar cuando una universidad es privada o pública.

  1. Determinar que tipo de problema (regresión, clasificación supervisada o clasificación no supervisada) intentamos resolver.

Estamos intentando resolver un problema de clasificación supervisada. Tenemos acceso a ambos predictores y respuestas. Conocemos la forma de las respuestas, y podemos utilizar clasificaciones previamente hechas para el correcto funcionamiento del algoritmo (que sea capaz de distinguir entre los tipos de universidades dados los predictores).

  1. Determinar la variable respuesta y los predictores.

  2. La variable respuesta: Private - Si ó No de acuerdo a si la universidad es privada

  1. Los predictores: Todas las variables parecen tener alguna relación con la variable respuesta
  1. Apps : Número de solicitudes recibidas.
  2. Accept: Número de solicitudes aceptadas.
  3. Enroll: Número de nuevos estudiantes matriculados.
  4. Top10perc: Nuevos estudiantes en el top 10% de su clase de secundaria.
  5. Top25perc: Nuevos estudiantes en el top 25% de su clase de secundaria.
  6. F.Undergrad: Número de estudiantes a tiempo completo.
  7. P.Undergrad: Número de estudiantes a tiempo parcial.
  8. Outstate: Matrícula para estudiantes de fuera del estado al que pertenece la universidad.
  9. Room.Board: Costes de alojamiento y comida.
  10. Books: Costes estimados en libros y otros materiales.
  11. Personal: Gasto estimado personal.
  12. PhD: Porcentaje de profesores con un doctorado.
  13. Terminal: Porcentaje de profesores con título de máster o doctorado.
  14. S.F.Ratio: Proporción de estudiantes / profesores.
  15. perc.alumni: Porcentaje de ex-alumnos de la universidad que donan dinero a la universidad.
  16. Expend: Gasto instructional por estudiante.
  17. Grad.Rate: Tasa de graduación.
  1. Cargar la librería ISLR2 en memoria e importar el conjunto de datos College, comprobar que el objeto importado es un data.frame, ver las primeras filas, determinar la dimensión del data.frame y utilizar la función str para obtener el tipo de variable en cada caso.

  2. Obtener un resumen numérico de las variables utilizando la función skim del paquete skimr y obtener conclusiones del mismo. Por ejemplo, obtener los valores mínimo y máximo de cada variable para conocer su rango, comparar la media muestral y la mediana muestral y los tres cuartiles de las variables para tener una idea de la forma de sus distribuciones, comparar los valores máximo y mínimo de las variables con los respectivos cuartiles, etc.

  3. Obtener el número de universidades privadas y públicas con table y el porcentaje de universidades en cada clase.

vi)Obtener diagramas de caja de las 16 variables cuantitativas en función de la variable Private. Comentar si existe relación entre cada predictor y la respuesta e interpretar dicha relación, si existe. Determinar que predictores parecen los más apropiados para explicar la respuesta Private.

library(ggplot2)

ggplot(College, aes(x = Private, y = Apps, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja de aplicaciones (Apps) por tipo de escuela (Private)", 
       x = "Tipo de escuela ", 
       y = "Número de aplicaciones") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Accept, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja de aceptados por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Número de alumnos aceptados") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Enroll, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: numero de alumnos nuevos matriculados por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Alumnos nuevos patricualdos") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Enroll, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: numero de alumnos nuevos matriculados por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Alumnos nuevos matricualdos") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Top10perc, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: 10% por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Alumnos en el 10%") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Top25perc, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: 25% por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Alumnos en el 25%") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = F.Undergrad, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: estudiantes de tiempo completo por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Alumnos de tiempo completo") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = P.Undergrad, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: estudiantes de tiempo parcial por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Alumnos de tiempo parcial") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Outstate, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: estudiantes de fuera por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Alumnos de fuera del estado") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Room.Board, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: costo subsistencia por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "gasto en alojamiento y comida") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Books, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: costo de libros por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "costo de libros") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Personal, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: gastos personales por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Gastos") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = PhD, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: % de profesores con doctorado por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Porcentaje de profesores con doctorado") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Terminal, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: % de profesores con doctorado o maestria por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "% de profesores") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = S.F.Ratio, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: Proporción de estudiantes / profesores por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Proporción de estudiantes / profesores") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = perc.alumni, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: Porcentaje de ex-alumnos de la universidad que donan dinero a la universidad por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Porcentaje de ex-alumnos de la universidad que donan dinero a la universidad") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Expend, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: Gasto instructional por estudiante por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Gasto instructional por estudiante") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

ggplot(College, aes(x = Private, y = Grad.Rate, fill = Private)) + geom_boxplot() +
  labs(title = "Diagrama de caja: Tasa de graduación por tipo de escuela", 
       x = "Tipo de escuela ", 
       y = "Tasa de graduación") +
  theme_minimal() +
  scale_fill_manual(values = c("skyblue", "lightpink"))

Después de observar los diagramas de caja podemos dividir los predictores en útiles, no útiles y aquellos que podrian llegar a serlo.

Varios predictores nos resultaran utiles debido a que tienen una fuerte conexión con el tamaño de la escuela: # de aplicaciones, aceptados, matriculados, alumnos nuevos, alumnos de tiempo completo y tiempo parcial y la proporción de estudiantes por profesor. Por otra parte, tenemos predictores relacionados con el perfil de los alumnos que asisten a las universidades y los maestros: el # de alumnos que pertenecen al 10% de mejores alumnos de su highschool, # de estudiantes de fuera, el costo de subsistencia, los gastos personales, el número de alumnos que donan despues de graduarse, el gasto instructional, la tasa de graduación, y el % de profesores con doctorado.

Las variables que no son buenos predictores, no nos dan informacoión nueva ó son demasiado similares: El % de alumnos que pertenecian al 25% top de su secundaria, el % de maestros con doctorado o maestria, y el costo de los libros.

Necesitamos más información para concluir si el gasto personal es un predictor óptimo.

  1. Crear una nueva variable cualitativa, llamada Top, agrupando los valores de la variable Top10perc. Para ello, dividir universidades en dos grupos en función de si la proporción de los estudiantes que provienen del 10% superior de su escuela secundaria supera el 50% . Los dos valores de la variable Top deben ser Si, si pertenece a ese 10% superior, y No, si no pertenece a dicho porcentaje. A continuación, obtener el número de universidades top y diagramas de caja de la variable PhD en función de la variable Top. ¿Que se observa?
# Creamos la variable 'Top'
College$Top <- ifelse(College$Top10perc > 50, "Si", "No")

table(College$Top)
## 
##  No  Si 
## 699  78
ggplot(College, aes(x = Top, y = PhD, fill = Top)) + geom_boxplot() +
  labs(title = "Diagrama de caja:  % de profesores con doctorado por tipo de escuela (Top)", 
       x = "Tipo de escuela (Top o no Top) ", 
       y = " % de profesores con doctorado") +
  theme_minimal() +
  scale_fill_manual(values = c("orange1", "darkolivegreen1"))

Podemos concluir que los Mejores alumnos buscan entrar a ‘las mejores escuelas’ y basan fuertemente su decisión en el % de maestros con doctorado en la institución