Ejercicio 1: Preferencias de Consumo

Se encuestó a 40 estudiantes sobre su red social preferida para fines académicos: WhatsApp (W), YouTube (Y), LinkedIn (L), Instagram (I).

red_social <- c("W","Y","L","L","I","W","Y","Y","L","W",
                 "W","I","Y","L","L","W","Y","I","L","W",
                 "W","Y","L","I","W","L","L","Y","W","I",
                 "L","Y","W","W","L","I","Y","L","W","L")

length(red_social) # comprobación: debe ser 40
## [1] 40

1. Tabla de frecuencias (fi, hi, %i)

fi <- table(red_social)
hi <- prop.table(fi)

tabla_frec1 <- data.frame(
  Red_Social            = names(fi),
  Frecuencia_Absoluta   = as.vector(fi),
  Frecuencia_Relativa   = round(as.vector(hi), 3),
  Frecuencia_Porcentual = round(as.vector(hi) * 100, 1)
)

# Ordenar de mayor a menor frecuencia
tabla_frec1 <- tabla_frec1[order(-tabla_frec1$Frecuencia_Absoluta), ]
rownames(tabla_frec1) <- NULL

# Fila de totales
totales1 <- data.frame(
  Red_Social            = "Total",
  Frecuencia_Absoluta   = sum(tabla_frec1$Frecuencia_Absoluta),
  Frecuencia_Relativa   = sum(tabla_frec1$Frecuencia_Relativa),
  Frecuencia_Porcentual = sum(tabla_frec1$Frecuencia_Porcentual)
)

rbind(tabla_frec1, totales1)
##   Red_Social Frecuencia_Absoluta Frecuencia_Relativa Frecuencia_Porcentual
## 1          L                  13               0.325                  32.5
## 2          W                  12               0.300                  30.0
## 3          Y                   9               0.225                  22.5
## 4          I                   6               0.150                  15.0
## 5      Total                  40               1.000                 100.0

2. Diagrama de barras y de sectores (torta)

par(mfrow = c(1, 2))

# Diagrama de barras
barplot(sort(fi, decreasing = TRUE),
        col = c("#4682B4", "#F28E2B", "#32CD32", "#B22222"),
        main = "Preferencia de Red Social",
        xlab = "Red social", ylab = "Frecuencia absoluta",
        ylim = c(0, max(fi) + 3))

# Diagrama de sectores (torta)
etiquetas <- paste0(names(fi), " (", round(as.vector(hi) * 100, 1), "%)")
pie(fi, labels = etiquetas,
    col = c("#5F9EA0", "#F28E2B", "#59A14F", "#7FFFD4"),
    main = "Distribución de preferencias")

par(mfrow = c(1, 1))

3. Interpretación

red_predominante <- names(which.max(fi))
porcentaje_predominante <- round(max(hi) * 100, 1)

La red social predominante es LinkedIn, ya que fue seleccionada por 13 de los 40 estudiantes encuestados, siendo la frecuencia más alta entre todas las opciones. Esto representa el 32,5 % del total del grupo. Por lo tanto, aproximadamente 1 de cada 3 estudiantes manifestó preferir LinkedIn para fines académicos. Además, este resultado indica que LinkedIn tiene una mayor preferencia que WhatsApp (30 %), YouTube (22,5 %) e Instagram (15 %), por lo que puede considerarse la red social con mayor aceptación dentro del grupo analizado.


Ejercicio 2: Relación entre Deporte y Facultad

tabla2 <- matrix(c(45, 15,
                    30, 10,
                    10, 40),
                  nrow = 3, byrow = TRUE,
                  dimnames = list(
                    Facultad = c("Ingeniería", "Ciencias Salud", "Artes"),
                    Deporte  = c("Practica Deporte", "No practica")
                  ))

tabla2_totales <- addmargins(tabla2)
tabla2_totales
##                 Deporte
## Facultad         Practica Deporte No practica Sum
##   Ingeniería                   45          15  60
##   Ciencias Salud               30          10  40
##   Artes                        10          40  50
##   Sum                          85          65 150

Diagrama de Barras Agrupadas

barplot(t(tabla2),
        beside = TRUE,
        col = c("#00FF7F", "#FF00FF"),
        legend.text = colnames(tabla2),
        args.legend = list(x = "topright", bty = "n"),
        main = "Práctica de deporte según Facultad",
        xlab = "Facultad", ylab = "Número de estudiantes",
        ylim = c(0, 50))

Porcentaje de práctica deportiva por facultad

porcentaje_practica <- round(tabla2[, "Practica Deporte"] / rowSums(tabla2) * 100, 1)
porcentaje_practica
##     Ingeniería Ciencias Salud          Artes 
##             75             75             20
facultad_mayor <- names(which.max(porcentaje_practica))

Interpretación

  • ¿Cuál es la facultad con mayor cultura deportiva en términos porcentuales? La facultad de Ingeniería tiene el mayor porcentaje de estudiantes que practican deporte, con un 75%, frente al 75% de Ciencias de la Salud y apenas 20% en Artes.

  • ¿Parece haber una asociación entre la facultad y el hábito de hacer deporte? Se puede evaluar formalmente con una prueba de independencia Chi-cuadrado:

chi_test <- chisq.test(tabla2)
chi_test
## 
##  Pearson's Chi-squared test
## 
## data:  tabla2
## X-squared = 41.063, df = 2, p-value = 1.211e-09

Dado que el valor p (1.21e-09) es considerablemente menor que 0.05, se rechaza la hipótesis de independencia: sí existe asociación entre la facultad y la práctica de deporte. Ingeniería y Ciencias de la Salud muestran una alta proporción de estudiantes activos, mientras que en Artes ocurre lo contrario, con una amplia mayoría que no practica deporte regularmente.


Ejercicio 4: Peso de 40 estudiantes de bachillerato

peso <- c(45, 50, 44, 49, 56, 60, 59, 54, 50, 52,
          55, 46, 51, 55, 57, 58, 49, 52, 54, 56,
          64, 60, 57, 62, 55, 56, 45, 63, 54, 52,
          44, 47, 64, 46, 52, 61, 63, 55, 53, 57)

length(peso) # comprobación: debe ser 40
## [1] 40

Construcción de la tabla de frecuencias (datos agrupados)

Como se trata de una variable cuantitativa continua con muchos valores distintos, se agrupan los datos en intervalos de clase, usando la regla de Sturges para definir el número de clases.

n <- length(peso)
k <- ceiling(1 + 3.322 * log10(n))   # Número de clases (Sturges)
rango <- max(peso) - min(peso)
amplitud <- ceiling(rango / k)

lim_inf <- floor(min(peso))
cortes <- seq(lim_inf, by = amplitud, length.out = k + 1)

intervalos <- cut(peso, breaks = cortes, right = FALSE, include.lowest = TRUE)

fi4 <- table(intervalos)
hi4 <- prop.table(fi4)
Fi4 <- cumsum(fi4)
Hi4 <- cumsum(hi4)

marca_clase <- (cortes[-length(cortes)] + cortes[-1]) / 2

tabla_frec4 <- data.frame(
  Intervalo             = names(fi4),
  Marca_de_Clase        = marca_clase,
  Frecuencia_Absoluta   = as.vector(fi4),
  Frecuencia_Relativa   = round(as.vector(hi4), 3),
  Frecuencia_Porcentual = round(as.vector(hi4) * 100, 1),
  Frec_Acumulada        = as.vector(Fi4),
  Frec_Rel_Acumulada    = round(as.vector(Hi4), 3)
)

tabla_frec4
##   Intervalo Marca_de_Clase Frecuencia_Absoluta Frecuencia_Relativa
## 1   [44,47)           45.5                   6               0.150
## 2   [47,50)           48.5                   3               0.075
## 3   [50,53)           51.5                   7               0.175
## 4   [53,56)           54.5                   8               0.200
## 5   [56,59)           57.5                   7               0.175
## 6   [59,62)           60.5                   4               0.100
## 7   [62,65]           63.5                   5               0.125
##   Frecuencia_Porcentual Frec_Acumulada Frec_Rel_Acumulada
## 1                  15.0              6              0.150
## 2                   7.5              9              0.225
## 3                  17.5             16              0.400
## 4                  20.0             24              0.600
## 5                  17.5             31              0.775
## 6                  10.0             35              0.875
## 7                  12.5             40              1.000

(k = 7 clases, amplitud = 3, calculados con la regla de Sturges: k = 1 + 3.322·log10(n))

Gráficos

par(mfrow = c(1, 2))

# Histograma
barplot(fi4, names.arg = names(fi4), col = "#4E79A7",
        main = "Histograma de Peso",
        xlab = "Intervalo de peso (kg)", ylab = "Frecuencia absoluta",
        las = 2, cex.names = 0.7)

# Polígono de frecuencias
plot(marca_clase, fi4, type = "b", pch = 19, col = "#E15759",
     main = "Polígono de Frecuencias",
     xlab = "Marca de clase (kg)", ylab = "Frecuencia absoluta")

par(mfrow = c(1, 1))

Interpretación

clase_modal <- names(which.max(fi4))
media_peso <- round(mean(peso), 1)
mediana_peso <- median(peso)

El peso promedio de los estudiantes es de 54 kg, mientras que la mediana se encuentra en 54.5 kg.

El intervalo que concentra la mayor cantidad de estudiantes es [53,56), donde se encuentran 8 de los 40 estudiantes, equivalentes al 20% del grupo.

En general, los pesos presentan una mayor concentración alrededor de los valores centrales, dentro de un rango que va desde 44 kg hasta 64 kg.

No se observan valores que se encuentren considerablemente alejados del conjunto de datos, lo que indica una distribución relativamente concentrada de los pesos.