Diseño Experimental

Autor/a

Edimer David Jaramillo

Fecha de publicación

23 de febrero de 2024

Bibliotecas

Código
library(tidyverse)
library(janitor)

Datos iniciales

Código
nombres_var <-
  c("fecha",
    "promedio_acad",
    "numero_nofav",
    "horas_dormir",
    "redes_sociales",
    "relevencia_matem",
    "fecha_nac",
    "asignaturas",
    "num_semestre",
    "trabaja",
    "asignatura_prefer",
    "asignatura_dific",
    "editar_carrera",
    "aplicacion_ia",
    "tiene_pc",
    "beca")

df_encuesta_inicial <-
  read_csv("datos/Encuesta.csv") |> 
  clean_names()

df_encuesta_inicial |> head()

Datos depurados

Código
df_encuesta_final <-
  df_encuesta_inicial |>
  filter(x1_cual_es_su_promedio_academico_actual != "50") |>
  set_names(nombres_var) |>
  mutate(
    promedio_acad = str_replace_all(promedio_acad, ",", "."),
    promedio_acad = as.numeric(promedio_acad),
    numero_nofav = str_replace_all(numero_nofav, "tres", "3"),
    numero_nofav = as.numeric(numero_nofav),
    horas_dormir = parse_number(horas_dormir)
  ) |>
  mutate(
    redes_sociales = str_replace_all(
      redes_sociales,
      "Tiktok, Youtube, Pinterest, instagram, Spotify, Whatsapp",
      "6"
    ),
    redes_sociales = str_replace_all(redes_sociales,
                                     "WhatsApp",
                                     "1"),
    redes_sociales = str_replace_all(redes_sociales,
                                     "instagram, x",
                                     "2"),
    redes_sociales = str_replace_all(
      redes_sociales,
      "Facebook, Twitter, WhatsApp, Telegram, Snapchat, Tik Tok, Instagram",
      "7"
    ),
    redes_sociales = str_replace_all(redes_sociales,
                                     "Instagram, Facebook",
                                     "2"),
    redes_sociales = str_replace_all(redes_sociales,
                                     "Instagram,facebook",
                                     "2"),
    redes_sociales = str_replace_all(
      redes_sociales,
      "Facebook, Twitter, 1, Telegram, Snapchat, Tik Tok, Instagram",
      "6"
    ),
    redes_sociales = as.numeric(redes_sociales),
    asignaturas = str_replace(asignaturas,
                              "Siete materias",
                              "7"),
    asignaturas = as.numeric(asignaturas),
    num_semestre = str_replace(num_semestre,
                               "Quinto semestre",
                               "5"),
    num_semestre = str_replace(num_semestre,
                               "Cuarto",
                               "4"),
    num_semestre = as.numeric(num_semestre),
    asignatura_prefer = str_to_sentence(asignatura_prefer),
    asignatura_prefer =
      str_replace_all(asignatura_prefer,
                      "Botánica y fisiología vegetal",
                      "Botánica"),
    asignatura_prefer =
      str_replace_all(asignatura_prefer,
                      "Botanica y fisiologia vegetal",
                      "Botánica"),
    asignatura_prefer =
      str_replace_all(asignatura_prefer,
                      "Botanica",
                      "Botánica"),
    asignatura_prefer =
      str_replace_all(asignatura_prefer,
                      "Topografia",
                      "Topografía"),
    asignatura_dific = str_to_sentence(asignatura_dific),
    asignatura_dific =
      str_replace_all(asignatura_dific,
                      "Calculo",
                      "Cálculo diferencial"),
    asignatura_dific =
      str_replace_all(asignatura_dific,
                      "Calculo 1",
                      "Cálculo diferencial"),
    asignatura_dific =
      str_replace_all(asignatura_dific,
                      "Calculo diferencial",
                      "Cálculo diferencial"),
    asignatura_dific =
      str_replace_all(asignatura_dific,
                      "Calculo integral",
                      "Cálculo integral"),
    asignatura_dific =
      str_replace_all(asignatura_dific,
                      "Algebra lineal",
                      "Álgebra lineal"),
    asignatura_dific =
      str_replace_all(
        asignatura_dific,
        "Ecuaciones diferenciales y inglés.",
        "Ecuaciones diferenciales"
      ),
    asignatura_dific =
      str_replace_all(asignatura_dific,
                      "Cálculo diferencial integral",
                      "Cálculos"),
    asignatura_dific =
      str_replace_all(asignatura_dific,
                      "Los calculos",
                      "Cálculos"),
    asignatura_dific =
      str_replace_all(
        asignatura_dific,
        "Cálculo diferencial 1",
        "Cálculo diferencial"
      ),
    asignatura_dific =
      str_replace_all(
        asignatura_dific,
        "Cálculo diferencial diferencial",
        "Cálculo diferencial"
      ),
    asignatura_dific =
      str_replace_all(
        asignatura_dific,
        "Cálculo diferencial vectorial",
        "Cálculo diferencial"
      ),
    fecha_nac = if_else(
      fecha_nac == "0095-12-18",
      true = ymd("1995-12-18"),
      false = fecha_nac
    ),
    edad = as.numeric((Sys.Date() - fecha_nac) / 365.5)
  ) 

# writexl::write_xlsx(df_encuesta_final, "datos/encuesta_depurada2024.xlsx")

df_encuesta_final |> head()

Una curiosidad… ¿azar?

Código
df_encuesta_final |> 
  count(numero_nofav)
  • Grafiquemos la distribución del número no favorito:
Código
df_encuesta_final |> 
  ggplot(aes(x = numero_nofav)) +
  geom_histogram(color = "black")

Otra curiosidad…

  • Si se toman dos personas al azar de los que respondieron la encuesta, ¿Cuál es la probabilidad de que esas dos personas cumplan años el mismo día?
Código
df_encuesta_final |> 
  mutate(dia_cumple = day(fecha_nac),
         mes_cumple = month(fecha_nac)) |> 
  count(mes_cumple, dia_cumple, sort = T)

Inferencia estadística

Inferencia sobre la media

  • Según esta encuesta, ¿Cuál es el valor esperado del promedio académico en los estudiantes de Ingeniería Agropecuaria en la seccional Urabá?
Código
media_general_prom <-
  mean(df_encuesta_final$promedio_acad, na.rm = TRUE)

mediana_general_prom <-
  median(df_encuesta_final$promedio_acad, na.rm = TRUE)

df_encuesta_final |> 
  ggplot(aes(x = promedio_acad)) +
  geom_density() +
  geom_vline(xintercept = media_general_prom, color = "red", lty = 2) +
  geom_vline(xintercept = mediana_general_prom, color = "blue", lty = 2)

Inferencia sobre una proporción

  • Con base en la encuesta, ¿es posible estimar el porcentaje real de estudiantes que tienen trabajo actualmente?
Código
df_encuesta_final |> 
  count(trabaja) |> 
  mutate(proporcion = n / sum(n))

Inferencia sobre dos medias

  • Según la encuesta, ¿es posible determinar si existen diferencias estadísticas para el promedio académico de personas que trabajan vs las que no?
Código
df_encuesta_final |> 
  ggplot(aes(x = trabaja, y = promedio_acad)) +
  geom_boxplot()

Inferencia sobre dos varianzas

  • Según la encuesta, ¿el nivel de variabilidad en el promedio académico es igual o diferente entre estudiantes que tienen beca y los que no la tienen?
Código
df_encuesta_final |> 
  ggplot(aes(x = beca, y = promedio_acad)) +
  geom_boxplot()

  • Ahora calculemos el promedio, la mediana, la desviación estándar, la varianza y el coeficiente de variación de cada grupo:
Código
df_encuesta_final |> 
  group_by(beca) |> 
  reframe(promedio = mean(promedio_acad, na.rm = TRUE),
          mediana = median(promedio_acad, na.rm = TRUE),
          desviacion = sd(promedio_acad, na.rm = TRUE),
          varianza = var(promedio_acad, na.rm = TRUE)) |> 
  mutate(coefVar = (desviacion / promedio) * 100)

Inferencia sobre 2 proporciones

  • ¿Existe alguna dependencia entre tener beca y trabajar?
Código
df_encuesta_final |> 
  tabyl(beca, trabaja) |> 
  adorn_percentages("row") |>
  adorn_pct_formatting(digits = 2) |>
  adorn_ns()
  • Un gráfico puede ayudar a clarificar lo que estamos tratando de resolver en esta pregunta:
Código
df_encuesta_final |> 
  count(beca, trabaja) |> 
  ggplot(aes(x = beca, y = n, fill = trabaja)) +
  geom_col(position = "fill") +
  coord_flip()

  • Otra alternativa de gráfico para representar lo mismo:
Código
mosaicplot(table(df_encuesta_final$beca, df_encuesta_final$trabaja),
           main = "Gráfico de mosaico",
           xlab = "¿Beca?",
           ylab = "¿Trabaja?")

Regresión lineal

Regresión lineal simple

  • Según la encuesta, ¿existe alguna relación entre el número de redes sociales en las cuales está inscrito y el promedio académico? ¿Es lineal o no lineal esta relación? ¿Existe asociación?
Código
df_encuesta_final |> 
  ggplot(aes(x = redes_sociales, y = promedio_acad)) +
  geom_point() +
  geom_smooth(method = "lm")

Regresión lineal múltiple

  • ¿Cómo podemos incorporar al modelo matemático la variable beca? ¿Discrepa la relación de las hora
Código
df_encuesta_final |> 
  ggplot(aes(x = horas_dormir, y = promedio_acad, color = beca)) +
  geom_point() +
  geom_smooth(method = "lm")