🎯 Objetivos de esta Sesión

Al finalizar esta actividad, usted será capaz de:

  • Familiarizarse con la interfaz de R/RStudio
  • Entender R como una calculadora avanzada para estadística
  • Realizar cálculos estadísticos básicos con datos reales
  • Conectar la teoría estadística vista en clase con la práctica computacional
  • Comparar métodos manuales vs. computacionales para análisis de datos

📚 Nota Importante: Esta actividad está diseñada para complementar la presentación teórica sobre medidas de tendencia central y dispersión. Utilizaremos datos reales del grupo para hacer el aprendizaje más significativo.

1 ¿Qué es R?

R es un lenguaje de programación diseñado específicamente para estadística y análisis de datos. Imaginen que tienen una calculadora súper poderosa que no solo hace cálculos básicos, sino que también puede:

  • Crear gráficos profesionales
  • Manejar bases de datos enormes
  • Hacer análisis estadísticos complejos
  • Automatizar procesos repetitivos
  • Generar reportes reproducibles

1.1 ¿Por qué R para este curso?

💡 Ventajas Clave de R
Gratuito y libre: Sin costos de licencia
Comunidad científica: Usado en universidades mundialmente
Específico para estadística: Diseñado para nuestras necesidades
Reproducible: Los análisis se pueden repetir exactamente

2 Primeros Pasos: R como Calculadora

Comencemos viendo R como una calculadora muy inteligente:

2.1 Operaciones Básicas

# Esto es un comentario en R (se escribe con #)
# R funciona como una calculadora muy inteligente

# Suma
5 + 3
#> [1] 8
# Resta  
10 - 4
#> [1] 6
# Multiplicación
6 * 7
#> [1] 42
# División
15 / 3
#> [1] 5
# Potencias
2^3
#> [1] 8

2.2 Creando Variables

En R podemos “guardar” valores en variables para usarlos después:

# Guardemos un número
mi_edad <- 25

# Guardemos varios números (un vector)
edades_familia <- c(25, 30, 28, 35)

# Veamos qué guardamos
mi_edad
#> [1] 25
edades_familia
#> [1] 25 30 28 35

💡 Explicación:
<- es como decir “guarda esto en…”
c() significa “combina estos números en un vector”

3 Actividad Práctica: Datos Reales del Grupo

🎯 Ejercicio Grupal: Nuestros Datos

Objetivo: Vamos a recolectar las edades de todos los estudiantes presentes y aplicar exactamente lo que vimos en la presentación sobre medidas de tendencia central y dispersión.

Proceso: 1. Cada estudiante comparte su edad (de forma voluntaria y anónima) 2. Anotamos todas las edades en la pizarra 3. Dividimos en grupos para calcular diferentes medidas manualmente 4. Verificamos los resultados usando R 5. Comparamos y reflexionamos sobre el proceso

3.1 Ejemplo con Datos Simulados

Para demostrar el proceso, usaremos un conjunto de datos ejemplo. En clase, usaremos las edades reales del grupo:

# Ejemplo de edades que podríamos recolectar
# (En clase usaremos los datos reales)
edades_grupo <- c(20, 22, 21, 25, 23, 19, 24, 22, 20, 26, 21, 23, 24, 20, 25)

# Veamos nuestros datos
print("Edades del grupo:")
#> [1] "Edades del grupo:"
edades_grupo
#>  [1] 20 22 21 25 23 19 24 22 20 26 21 23 24 20 25
# ¿Cuántos estudiantes tenemos?
n_estudiantes <- length(edades_grupo)
paste("Número de estudiantes:", n_estudiantes)
#> [1] "Número de estudiantes: 15"

4 Cálculos Estadísticos con R

Ahora vamos a calcular cada una de las medidas estadísticas que vimos en la presentación:

4.1 Medidas de Tendencia Central

4.1.1 Media Aritmética

# Calculemos la media
media_edades <- mean(edades_grupo)
print(paste("Media aritmética:", round(media_edades, 2), "años"))
#> [1] "Media aritmética: 22.33 años"
# Podemos ver el cálculo paso a paso
suma_total <- sum(edades_grupo)
n_datos <- length(edades_grupo)
media_manual <- suma_total / n_datos

print(paste("Verificación manual: (", suma_total, "/", n_datos, ") =", round(media_manual, 2)))
#> [1] "Verificación manual: ( 335 / 15 ) = 22.33"

4.1.2 Mediana

# Calculemos la mediana
mediana_edades <- median(edades_grupo)
print(paste("Mediana:", mediana_edades, "años"))
#> [1] "Mediana: 22 años"
# Veamos los datos ordenados para entender mejor
datos_ordenados <- sort(edades_grupo)
print("Datos ordenados:")
#> [1] "Datos ordenados:"
datos_ordenados
#>  [1] 19 20 20 20 21 21 22 22 23 23 24 24 25 25 26

4.1.3 Moda

# R no tiene una función directa para la moda, pero podemos encontrarla
frecuencias <- table(edades_grupo)
print("Frecuencia de cada edad:")
#> [1] "Frecuencia de cada edad:"
frecuencias
#> edades_grupo
#> 19 20 21 22 23 24 25 26 
#>  1  3  2  2  2  2  2  1
# Encontrar la moda
moda <- as.numeric(names(frecuencias)[which.max(frecuencias)])
frecuencia_maxima <- max(frecuencias)

print(paste("Moda:", moda, "años (aparece", frecuencia_maxima, "veces)"))
#> [1] "Moda: 20 años (aparece 3 veces)"

4.2 Medidas de Dispersión

4.2.1 Rango

# Valor máximo y mínimo
edad_maxima <- max(edades_grupo)
edad_minima <- min(edades_grupo)

print(paste("Edad máxima:", edad_maxima, "años"))
#> [1] "Edad máxima: 26 años"
print(paste("Edad mínima:", edad_minima, "años"))
#> [1] "Edad mínima: 19 años"
# Rango
rango_edades <- edad_maxima - edad_minima
print(paste("Rango:", rango_edades, "años"))
#> [1] "Rango: 7 años"

4.2.2 Varianza y Desviación Estándar

# Varianza muestral
varianza_edades <- var(edades_grupo)
print(paste("Varianza muestral:", round(varianza_edades, 2)))
#> [1] "Varianza muestral: 4.67"
# Desviación estándar
desviacion_edades <- sd(edades_grupo)
print(paste("Desviación estándar:", round(desviacion_edades, 2), "años"))
#> [1] "Desviación estándar: 2.16 años"
# Coeficiente de variación
cv_edades <- (desviacion_edades / media_edades) * 100
print(paste("Coeficiente de variación:", round(cv_edades, 2), "%"))
#> [1] "Coeficiente de variación: 9.67 %"

4.3 Resumen Completo

# Todas las medidas juntas usando summary()
print("=== RESUMEN ESTADÍSTICO COMPLETO ===")
#> [1] "=== RESUMEN ESTADÍSTICO COMPLETO ==="
summary(edades_grupo)
#>    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
#>   19.00   20.50   22.00   22.33   24.00   26.00
# Crear una tabla bonita con todas las medidas
resultados <- data.frame(
    Medida = c("Media", "Mediana", "Moda", "Rango", "Varianza", "Desv. Estándar", "Coef. Variación"),
    Valor = c(
        round(media_edades, 2),
        mediana_edades,
        moda,
        rango_edades,
        round(varianza_edades, 2),
        round(desviacion_edades, 2),
        paste0(round(cv_edades, 2), "%")
    ),
    Unidad = c("años", "años", "años", "años", "años²", "años", "%")
)

kable(resultados, caption = "Resumen de Medidas Estadísticas", align = "lcc")
Resumen de Medidas Estadísticas
Medida Valor Unidad
Media 22.33 años
Mediana 22 años
Moda 20 años
Rango 7 años
Varianza 4.67 años²
Desv. Estándar 2.16 años
Coef. Variación 9.67% %

5 Visualización de Nuestros Datos

Una de las grandes ventajas de R es su capacidad para crear gráficos. Veamos cómo se distribuyen nuestras edades:

# Crear un histograma
hist(edades_grupo, 
     main = "Distribución de Edades en Nuestro Grupo",
     xlab = "Edad (años)",
     ylab = "Frecuencia",
     col = "#a73c3c",
     border = "white",
     breaks = 8)

# Agregar líneas de referencia
abline(v = media_edades, col = "#2c3e50", lwd = 2, lty = 2)
abline(v = mediana_edades, col = "#34495e", lwd = 2, lty = 3)

# Agregar leyenda
legend("topright", 
       legend = c("Media", "Mediana"), 
       col = c("#2c3e50", "#34495e"), 
       lty = c(2, 3), 
       lwd = 2)
Distribución de Edades en Nuestro Grupo

Distribución de Edades en Nuestro Grupo

# Crear un diagrama de caja (boxplot)
boxplot(edades_grupo,
        main = "Diagrama de Caja: Edades del Grupo",
        ylab = "Edad (años)",
        col = "#e8f4f8",
        border = "#a73c3c",
        horizontal = FALSE)

# Agregar puntos de datos individuales
points(rep(1, length(edades_grupo)), edades_grupo, 
       col = "#a73c3c", pch = 19, cex = 0.8)
Diagrama de Caja de las Edades

Diagrama de Caja de las Edades

6 Interpretación de Resultados

🎯 ¿Qué nos dicen estos números sobre nuestro grupo?

Basándose en los resultados obtenidos, podemos interpretar:

  • Media vs Mediana: Si son similares, indica distribución simétrica
  • Coeficiente de Variación:
    • < 15%: Grupo homogéneo en edad
    • 30%: Grupo heterogéneo en edad

  • Rango: Nos dice qué tan dispersas están las edades

7 Comparación: Manual vs. Computacional

🤔 Reflexión Grupal

Preguntas para discutir:

  1. ¿Los resultados de sus cálculos manuales coincidieron con los de R?
    • Si coincidieron: ¡Excelente! Dominan el proceso teórico
    • Si no coincidieron: Revisemos juntos dónde pudo haber diferencias
  2. ¿Qué fue más rápido, calcular a mano o con R?
    • Manual: Entendemos el proceso paso a paso
    • R: Ganamos velocidad y precisión
  3. ¿Qué ventajas ven en usar R vs. calcular manualmente?
    • Velocidad, precisión, manejo de más datos, reproducibilidad
  4. Si tuviéramos 1000 edades en lugar de 15, ¿qué método preferirían?
    • Introducción a la idea de escalabilidad

8 Próximos Pasos en el Curso

🚀 Lo que viene después…

Próxima clase: Profundizaremos en la sintaxis de R y aprenderemos a importar datos desde archivos Excel y CSV

Durante el semestre: Trabajaremos con datos reales de diferentes disciplinas, especialmente química y ciencias naturales

8.1 Código Completo para Practicar

# ================================
# CÓDIGO COMPLETO PARA PRACTICAR
# ================================

# 1. Definir los datos (cambiar por datos reales)
edades_grupo <- c(20, 22, 21, 25, 23, 19, 24, 22, 20, 26, 21, 23, 24, 20, 25)

# 2. Medidas de tendencia central
media <- mean(edades_grupo)
mediana <- median(edades_grupo)
moda <- as.numeric(names(table(edades_grupo))[which.max(table(edades_grupo))])

# 3. Medidas de dispersión
rango <- max(edades_grupo) - min(edades_grupo)
varianza <- var(edades_grupo)
desviacion <- sd(edades_grupo)
cv <- (desviacion / media) * 100

# 4. Mostrar resultados
cat("=== RESULTADOS ===\n")
cat("Media:", round(media, 2), "años\n")
cat("Mediana:", mediana, "años\n")
cat("Moda:", moda, "años\n")
cat("Rango:", rango, "años\n")
cat("Varianza:", round(varianza, 2), "\n")
cat("Desviación estándar:", round(desviacion, 2), "años\n")
cat("Coeficiente de variación:", round(cv, 2), "%\n")

# 5. Gráfico básico
hist(edades_grupo, main = "Distribución de Edades", 
     xlab = "Edad", ylab = "Frecuencia", col = "lightblue")

Universidad Nacional de Costa Rica
Escuela de Informática y Computación
EIY403 - Introducción al Análisis de Datos para Otras Carreras
II Semestre 2025