hllinas2023

1 Introducción

Primero, debemos instalar, si es necesario, y cargar los paquetes que vamos a utilizar.

library(lsm)        # Para acceder a la base de datos survey
library(knitr)      # Para construir tablas
library(kableExtra) # Para mejorar la presentación de las tablas

2 Resumen de funciones implementadas

La siguiente tabla resume las funciones desarrolladas para construir los intervalos de confianza y señala el procedimiento estadístico correspondiente.

Resumen de las funciones para intervalos de confianza.
Función Descripción
  1. ic_media_z()
Intervalo Z para una media cuando la desviación estándar poblacional σ es conocida.
  1. ic_media_t()
Intervalo t para una media cuando la desviación estándar poblacional es desconocida.
  1. ic_proporcion()
Intervalo Z para estimar una proporción poblacional.
  1. ic_varianza()
Intervalo para estimar una varianza poblacional.
  1. ic_dif_medias_z()
Intervalo Z para la diferencia de medias con varianzas poblacionales conocidas.
  1. ic_dif_medias_t_si()
Intervalo t para la diferencia de medias con varianzas desconocidas pero iguales.
  1. ic_dif_medias_t_no()
Intervalo t de Welch para la diferencia de medias con varianzas desconocidas y diferentes.
  1. ic_dif_proporciones()
Intervalo Z para la diferencia de dos proporciones poblacionales.
  1. ic_razon_varianzas()
Intervalo para la razón de dos varianzas poblacionales.

3 Funciones para intervalos de confianza

A continuación se presentan las funciones desarrolladas para calcular los intervalos de confianza estudiados en este capítulo. Su objetivo es automatizar los cálculos, organizar los resultados en un formato uniforme y facilitar la interpretación de cada procedimiento.

# ============================================================
# 1. Intervalo Z para una media con sigma conocida
# ============================================================

ic_media_z <- function(media, sigma, n, conf = 0.95,
                       digitos = 4) {
  
  alpha <- 1 - conf
  z <- qnorm(1 - alpha / 2)
  error_estandar <- sigma / sqrt(n)
  margen_error <- z * error_estandar
  
  inferior <- media - margen_error
  superior <- media + margen_error
  
  resultado <- data.frame(
    Medida = c(
      "Media",
      "\u03c3",
      "Error estándar",
      "n",
      "Grado de confianza",
      "Valor crítico",
      "Margen de error",
      "Extremo inferior",
      "Extremo superior",
      "Intervalo"
    ),
    
    Resultado = c(
      round(media, digitos),
      round(sigma, digitos),
      round(error_estandar, digitos),
      n,
      round(conf, digitos),
      round(z, digitos),
      round(margen_error, digitos),
      round(inferior, digitos),
      round(superior, digitos),
      paste0(
        round(media, digitos),
        " ± ",
        round(margen_error, digitos)
      )
    ),
    
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}

# ============================================================
# 2. Intervalo t para una media con sigma desconocida
# ============================================================

ic_media_t <- function(media, s, n, conf = 0.95,
                       digitos = 4) {
  
  alpha <- 1 - conf
  gl <- n - 1
  t_critico <- qt(1 - alpha / 2, df = gl)
  error_estandar <- s / sqrt(n)
  margen_error <- t_critico * error_estandar
  
  inferior <- media - margen_error
  superior <- media + margen_error
  
  resultado <- data.frame(
    Medida = c(
      "Media",
      "s",
      "Error estándar",
      "n",
      "Grados de libertad",
      "Grado de confianza",
      "Valor crítico",
      "Margen de error",
      "Extremo inferior",
      "Extremo superior",
      "Intervalo"
    ),
    
    Resultado = c(
      round(media, digitos),
      round(s, digitos),
      round(error_estandar, digitos),
      n,
      gl,
      round(conf, digitos),
      round(t_critico, digitos),
      round(margen_error, digitos),
      round(inferior, digitos),
      round(superior, digitos),
      paste0(
        round(media, digitos),
        " ± ",
        round(margen_error, digitos)
      )
    ),
    
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}


# ============================================================
# 3. Intervalo Z para una proporción
# ============================================================

ic_proporcion <- function(exitos, n, conf = 0.95,
                          digitos = 4) {
  
  if (exitos < 0 || exitos > n) {
    stop("El número de éxitos debe estar entre 0 y n.")
  }
  
  alpha <- 1 - conf
  z <- qnorm(1 - alpha / 2)
  
  proporcion <- exitos / n
  error_estandar <- sqrt(proporcion * (1 - proporcion) / n)
  margen_error <- z * error_estandar
  
  inferior <- max(0, proporcion - margen_error)
  superior <- min(1, proporcion + margen_error)
  
  resultado <- data.frame(
    Medida = c(
      "Éxitos",
      "n",
      "Proporción",
      "Error estándar",
      "Grado de confianza",
      "Valor crítico",
      "Margen de error",
      "Extremo inferior",
      "Extremo superior",
      "Intervalo"
    ),
    
    Resultado = c(
      exitos,
      n,
      round(proporcion, digitos),
      round(error_estandar, digitos),
      round(conf, digitos),
      round(z, digitos),
      round(margen_error, digitos),
      round(inferior, digitos),
      round(superior, digitos),
      paste0(
        round(proporcion, digitos),
        " ± ",
        round(margen_error, digitos)
      )
    ),
    
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}



# ============================================================
# 4. Intervalo para una varianza
# ============================================================

ic_varianza <- function(varianza, n, conf = 0.95,
                        digitos = 4) {
  
  if (varianza <= 0) {
    stop("La varianza debe ser positiva.")
  }
  
  alpha <- 1 - conf
  gl <- n - 1
  
  chi_inferior <- qchisq(alpha / 2, df = gl)
  chi_superior <- qchisq(1 - alpha / 2, df = gl)
  
  inferior <- gl * varianza / chi_superior
  superior <- gl * varianza / chi_inferior
  
  resultado <- data.frame(
    Medida = c(
      "Varianza muestral",
      "n",
      "Grados de libertad",
      "Grado de confianza",
      "Cuantil inferior",
      "Cuantil superior",
      "Extremo inferior",
      "Extremo superior",
      "Intervalo"
    ),
    
    Resultado = c(
      round(varianza, digitos),
      n,
      gl,
      round(conf, digitos),
      round(chi_inferior, digitos),
      round(chi_superior, digitos),
      round(inferior, digitos),
      round(superior, digitos),
      paste0(
        "(",
        round(inferior, digitos),
        ", ",
        round(superior, digitos),
        ")"
      )
    ),
    
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}

# ============================================================
# 5. Intervalo Z para diferencia de medias
#    Varianzas poblacionales conocidas
# ============================================================

ic_dif_medias_z <- function(media1, media2,
                            sigma1, sigma2,
                            n1, n2,
                            conf = 0.95,
                            digitos = 4) {
  
  alpha <- 1 - conf
  z <- qnorm(1 - alpha / 2)
  
  diferencia <- media1 - media2
  
  error_estandar <- sqrt(
    sigma1^2 / n1 +
      sigma2^2 / n2
  )
  
  margen_error <- z * error_estandar
  inferior <- diferencia - margen_error
  superior <- diferencia + margen_error
  
  resultado <- data.frame(
    Medida = c(
      "Media (Muestra 1)",
      "σ (Muestra 1)",
      "n (Muestra 1)",
      "Media (Muestra 2)",
      "σ (Muestra 2)",
      "n (Muestra 2)",
      "Diferencia estimada",
      "Error estándar",
      "Grado de confianza",
      "Valor crítico",
      "Margen de error",
      "Extremo inferior",
      "Extremo superior",
      "Intervalo"
    ),
    
    Valor = c(
      round(media1, digitos),
      round(sigma1, digitos),
      n1,
      round(media2, digitos),
      round(sigma2, digitos),
      n2,
      round(diferencia, digitos),
      round(error_estandar, digitos),
      round(conf, digitos),
      round(z, digitos),
      round(margen_error, digitos),
      round(inferior, digitos),
      round(superior, digitos),
      paste0(
        round(diferencia, digitos),
        " ± ",
        round(margen_error, digitos)
      )
    ),
    
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}

# ============================================================
# 6. Intervalo t para diferencia de medias
#    Varianzas desconocidas, pero iguales
# ============================================================

ic_dif_medias_t_si <- function(media1, media2,
                               s1, s2,
                               n1, n2,
                               conf = 0.95,
                               digitos = 4) {
  
  alpha <- 1 - conf
  diferencia <- media1 - media2
  
  # Grados de libertad
  gl <- n1 + n2 - 2
  
  # Varianza combinada
  varianza_combinada <- (
    (n1 - 1) * s1^2 +
      (n2 - 1) * s2^2
  ) / gl
  
  # Desviación estándar combinada
  s_combinada <- sqrt(varianza_combinada)
  
  # Error estándar
  error_estandar <- s_combinada *
    sqrt(1 / n1 + 1 / n2)
  
  # Valor crítico
  t_critico <- qt(
    1 - alpha / 2,
    df = gl
  )
  
  # Margen de error
  margen_error <- t_critico * error_estandar
  
  # Límites
  inferior <- diferencia - margen_error
  superior <- diferencia + margen_error
  
  resultado <- data.frame(
    Medida = c(
      "Media (Muestra 1)",
      "s (Muestra 1)",
      "n (Muestra 1)",
      "Media (Muestra 2)",
      "s (Muestra 2)",
      "n (Muestra 2)",
      "Diferencia estimada",
      "Varianza combinada",
      "Desviación combinada",
      "Grados de libertad",
      "Error estándar",
      "Grado de confianza",
      "Valor crítico",
      "Margen de error",
      "Extremo inferior",
      "Extremo superior",
      "Intervalo"
    ),
    
    Valor = c(
      round(media1, digitos),
      round(s1, digitos),
      n1,
      round(media2, digitos),
      round(s2, digitos),
      n2,
      round(diferencia, digitos),
      round(varianza_combinada, digitos),
      round(s_combinada, digitos),
      gl,
      round(error_estandar, digitos),
      round(conf, digitos),
      round(t_critico, digitos),
      round(margen_error, digitos),
      round(inferior, digitos),
      round(superior, digitos),
      paste0(
        round(diferencia, digitos),
        " ± ",
        round(margen_error, digitos)
      )
    ),
    
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}

# ============================================================
# 7. Intervalo t para diferencia de medias
#    Varianzas desconocidas, pero diferentes
#    Método de Welch
# ============================================================

ic_dif_medias_t_no <- function(media1, media2,
                               s1, s2,
                               n1, n2,
                               conf = 0.95,
                               digitos = 4) {
  
  alpha <- 1 - conf
  diferencia <- media1 - media2
  
  termino1 <- s1^2 / n1
  termino2 <- s2^2 / n2
  
  error_estandar <- sqrt(termino1 + termino2)
  
  gl <- (termino1 + termino2)^2 /
    (
      termino1^2 / (n1 - 1) +
        termino2^2 / (n2 - 1)
    )
  
  t_critico <- qt(
    1 - alpha / 2,
    df = gl
  )
  
  margen_error <- t_critico * error_estandar
  
  inferior <- diferencia - margen_error
  superior <- diferencia + margen_error
  
  resultado <- data.frame(
    Medida = c(
      "Media (Muestra 1)",
      "s (Muestra 1)",
      "n (Muestra 1)",
      "Media (Muestra 2)",
      "s (Muestra 2)",
      "n (Muestra 2)",
      "Diferencia estimada",
      "Grados de libertad",
      "Error estándar",
      "Grado de confianza",
      "Valor crítico",
      "Margen de error",
      "Extremo inferior",
      "Extremo superior",
      "Intervalo"
    ),
    
    Valor = c(
      round(media1, digitos),
      round(s1, digitos),
      n1,
      round(media2, digitos),
      round(s2, digitos),
      n2,
      round(diferencia, digitos),
      round(gl, digitos),
      round(error_estandar, digitos),
      round(conf, digitos),
      round(t_critico, digitos),
      round(margen_error, digitos),
      round(inferior, digitos),
      round(superior, digitos),
      paste0(
        round(diferencia, digitos),
        " ± ",
        round(margen_error, digitos)
      )
    ),
    
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}

# ============================================================
# 8. Intervalo Z para diferencia de proporciones
# ============================================================

ic_dif_proporciones <- function(exitos1, n1,
                                exitos2, n2,
                                conf = 0.95,
                                digitos = 4) {
  
  if (exitos1 < 0 || exitos1 > n1 ||
      exitos2 < 0 || exitos2 > n2) {
    stop("Los números de éxitos deben estar entre 0 y n.")
  }
  
  alpha <- 1 - conf
  z <- qnorm(1 - alpha / 2)
  
  p1 <- exitos1 / n1
  p2 <- exitos2 / n2
  diferencia <- p1 - p2
  
  error_estandar <- sqrt(
    p1 * (1 - p1) / n1 +
      p2 * (1 - p2) / n2
  )
  
  margen_error <- z * error_estandar
  inferior <- diferencia - margen_error
  superior <- diferencia + margen_error
  
  resultado <- data.frame(
  Medida = c(
    "Éxitos (Muestra 1)",
    "n (Muestra 1)",
    "Proporción (Muestra 1)",
    "Éxitos (Muestra 2)",
    "n (Muestra 2)",
    "Proporción (Muestra 2)",
    "Diferencia estimada",
    "Error estándar",
    "Grado de confianza",
    "Valor crítico",
    "Margen de error",
    "Extremo inferior",
    "Extremo superior",
    "Intervalo"
  ),
  
  Resultado = c(
    exitos1,
    n1,
    round(p1, digitos),
    exitos2,
    n2,
    round(p2, digitos),
    round(diferencia, digitos),
    round(error_estandar, digitos),
    round(conf, digitos),
    round(z, digitos),
    round(margen_error, digitos),
    round(inferior, digitos),
    round(superior, digitos),
    paste0(
      round(diferencia, digitos),
      " ± ",
      round(margen_error, digitos)
    )
  ),
  
  check.names = FALSE
)

knitr::kable(
  resultado,
  format = "html",
  col.names = c("Medida", "Valor"),
  align = c("l", "r")
)
}


# ============================================================
# 9. Intervalo para la razón de varianzas
# ============================================================

ic_razon_varianzas <- function(varianza1, varianza2,
                               n1, n2,
                               conf = 0.95,
                               digitos = 4) {
  
  if (varianza1 <= 0 || varianza2 <= 0) {
    stop("Las varianzas deben ser positivas.")
  }
  
  alpha <- 1 - conf
  
  gl1 <- n1 - 1
  gl2 <- n2 - 1
  
  razon <- varianza1 / varianza2
  
  f_inferior <- qf(
    alpha / 2,
    df1 = gl1,
    df2 = gl2
  )
  
  f_superior <- qf(
    1 - alpha / 2,
    df1 = gl1,
    df2 = gl2
  )
  
  inferior <- razon / f_superior
  superior <- razon / f_inferior
  
  resultado <- data.frame(
    Medida = c(
      "Varianza (Muestra 1)",
      "n (Muestra 1)",
      "Grados de libertad (Muestra 1)",
      "Varianza (Muestra 2)",
      "n (Muestra 2)",
      "Grados de libertad (Muestra 2)",
      "Razón de varianzas",
      "Grado de confianza",
      "Valor crítico inferior",
      "Valor crítico superior",
      "Extremo inferior",
      "Extremo superior",
      "Intervalo"
    ),
    
    Valor = c(
      round(varianza1, digitos),
      n1,
      gl1,
      round(varianza2, digitos),
      n2,
      gl2,
      round(razon, digitos),
      round(conf, digitos),
      round(f_inferior, digitos),
      round(f_superior, digitos),
      round(inferior, digitos),
      round(superior, digitos),
      paste0(
        "(",
        round(inferior, digitos),
        ", ",
        round(superior, digitos),
        ")"
      )
    ),
    
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}

4 Ejemplos utilizando estadísticas resumidas

En esta sección se presentan ejemplos sencillos utilizando estadísticas resumidas (media, desviación estándar, varianza, tamaño muestral, etc.). Esto permite comprender el cálculo de los intervalos de confianza sin necesidad de trabajar inicialmente con una base de datos.

4.0.1 Intervalo para la media (con \(Z\))

Cuando la desviación estándar poblacional (\(\sigma\)) es conocida, el intervalo de confianza para la media se construye utilizando la distribución normal estándar.

resultado <- ic_media_z(
  media = 100,
  sigma = 15,
  n = 25,
  conf = 0.95
)

resultado
Medida Valor
Media 100
σ 15
Error estándar 3
n 25
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 5.8799
Extremo inferior 94.1201
Extremo superior 105.8799
Intervalo 100 ± 5.8799

4.0.2 Intervalo para la media (con \(t\))

Cuando la desviación estándar poblacional es desconocida, se utiliza la desviación estándar muestral (\(s\)) y la distribución \(t\) de Student.

resultado <- ic_media_t(
  media = 19.48,
  s = 0.98,
  n = 6,
  conf = 0.90
)

resultado
Medida Valor
Media 19.48
s 0.98
Error estándar 0.4001
n 6
Grados de libertad 5
Grado de confianza 0.9
Valor crítico 2.015
Margen de error 0.8062
Extremo inferior 18.6738
Extremo superior 20.2862
Intervalo 19.48 ± 0.8062

4.0.3 Intervalo para la proporción

Este ejemplo calcula un intervalo de confianza para una proporción poblacional a partir del número de éxitos observados en una muestra.

resultado <- ic_proporcion(
  exitos = 77,
  n = 350,
  conf = 0.99
)

resultado
Medida Valor
Éxitos 77
n 350
Proporción 0.22
Error estándar 0.0221
Grado de confianza 0.99
Valor crítico 2.5758
Margen de error 0.057
Extremo inferior 0.163
Extremo superior 0.277
Intervalo 0.22 ± 0.057

4.0.4 Intervalo para una varianza

Cuando se desea estimar la variabilidad de una población, el intervalo de confianza para la varianza se basa en la distribución chi-cuadrada (\(\chi^2\))

resultado <- ic_varianza(
  varianza = 0.00153,
  n = 20,
  conf = 0.90
)

resultado
Medida Valor
Varianza muestral 0.0015
n 20
Grados de libertad 19
Grado de confianza 0.9
Cuantil inferior 10.117
Cuantil superior 30.1435
Extremo inferior 0.001
Extremo superior 0.0029
Intervalo (0.001, 0.0029)

4.0.5 Intervalo para la diferencia de medias (con \(Z\))

Si las desviaciones estándar poblacionales son conocidas, el intervalo para la diferencia de medias utiliza la distribución normal estándar.

La diferencia se calcula en el orden:

\[\text{Grupo 1} \; −\; \text{Grupo 2}\]

resultado <- ic_dif_medias_z(
  media1 = 3.01,
  media2 = 2.88,
  sigma1 = 1.09,
  sigma2 = 1.01,
  n1 = 321,
  n2 = 94,
  conf = 0.95
)

resultado
Medida Valor
Media (Muestra 1) 3.01
σ (Muestra 1) 1.09
n (Muestra 1) 321
Media (Muestra 2) 2.88
σ (Muestra 2) 1.01
n (Muestra 2) 94
Diferencia estimada 0.13
Error estándar 0.1206
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 0.2364
Extremo inferior -0.1064
Extremo superior 0.3664
Intervalo 0.13 ± 0.2364

4.0.6 Intervalo para la diferencia de medias (con \(t\), varianzas desconocidas e iguales)

Cuando las varianzas poblacionales son desconocidas, pero pueden asumirse iguales, se utiliza la varianza combinada (pooled variance).

La diferencia se calcula en el orden:

\[\text{Grupo 1} \; −\; \text{Grupo 2}\]

resultado <- ic_dif_medias_t_si(
  media1 = 9.972,
  media2 = 2.098,
  s1 = 7.470,
  s2 = 10.834,
  n1 = 6,
  n2 = 9,
  conf = 0.90
)

resultado
Medida Valor
Media (Muestra 1) 9.972
s (Muestra 1) 7.47
n (Muestra 1) 6
Media (Muestra 2) 2.098
s (Muestra 2) 10.834
n (Muestra 2) 9
Diferencia estimada 7.874
Varianza combinada 93.693
Desviación combinada 9.6795
Grados de libertad 13
Error estándar 5.1016
Grado de confianza 0.9
Valor crítico 1.7709
Margen de error 9.0345
Extremo inferior -1.1605
Extremo superior 16.9085
Intervalo 7.874 ± 9.0345

4.0.7 Intervalo para la diferencia de medias (con \(t\), varianzas desconocidas y diferentes)

Si no es razonable asumir igualdad de varianzas, se utiliza el intervalo de confianza de Welch.

La diferencia se calcula en el orden:

\[\text{Grupo 1} \; −\; \text{Grupo 2}\]

resultado <- ic_dif_medias_t_no(
  media1 = 3.84,
  media2 = 1.49,
  s1 = 3.07,
  s2 = 0.80,
  n1 = 15,
  n2 = 12,
  conf = 0.95
)

resultado
Medida Valor
Media (Muestra 1) 3.84
s (Muestra 1) 3.07
n (Muestra 1) 15
Media (Muestra 2) 1.49
s (Muestra 2) 0.8
n (Muestra 2) 12
Diferencia estimada 2.35
Grados de libertad 16.3278
Error estándar 0.8256
Grado de confianza 0.95
Valor crítico 2.1165
Margen de error 1.7474
Extremo inferior 0.6026
Extremo superior 4.0974
Intervalo 2.35 ± 1.7474

4.0.8 Intervalo para la diferencia de proporciones

Este ejemplo estima el intervalo de confianza para la diferencia entre dos proporciones poblacionales independientes.

La diferencia se calcula en el orden:

\[\text{Grupo 1} \; −\; \text{Grupo 2}\]

resultado <- ic_dif_proporciones(
  exitos1 = 107,
  n1 = 120,
  exitos2 = 73,
  n2 = 141,
  conf = 0.95
)

resultado
Medida Valor
Éxitos (Muestra 1) 107
n (Muestra 1) 120
Proporción (Muestra 1) 0.8917
Éxitos (Muestra 2) 73
n (Muestra 2) 141
Proporción (Muestra 2) 0.5177
Diferencia estimada 0.3739
Error estándar 0.0508
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 0.0995
Extremo inferior 0.2745
Extremo superior 0.4734
Intervalo 0.3739 ± 0.0995

4.0.9 Intervalo para la razón de varianzas

Cuando se desea comparar la variabilidad de dos poblaciones, se utiliza un intervalo de confianza para la razón de sus varianzas, basado en la distribución \(F\). .

La razón se calcula en el orden:

\[\frac{\text{Grupo 1}}{\text{Grupo 2}}\]

resultado <- ic_razon_varianzas(
  varianza1 = 9.4249,
  varianza2 = 0.64,
  n1 = 15,
  n2 = 12,
  conf = 0.98
)

resultado
Medida Valor
Varianza (Muestra 1) 9.4249
n (Muestra 1) 15
Grados de libertad (Muestra 1) 14
Varianza (Muestra 2) 0.64
n (Muestra 2) 12
Grados de libertad (Muestra 2) 11
Razón de varianzas 14.7264
Grado de confianza 0.98
Valor crítico inferior 0.2588
Valor crítico superior 4.2932
Extremo inferior 3.4301
Extremo superior 56.9034
Intervalo (3.4301, 56.9034)

5 Ejemplos utilizando un data frame simulado

En esta sección construiremos un data frame sencillo a partir de vectores definidos manualmente. Posteriormente calcularemos las estadísticas muestrales necesarias y las utilizaremos como argumentos de las funciones definidas anteriormente.

5.0.1 Construcción del data frame

El siguiente código crea un data frame con dos variables cuantitativas (puntaje y edad), una variable dicotómica (fumador) y una variable de agrupación (grupo), la cual identifica las dos muestras que se compararán en algunos de los ejemplos.

grupo <- c(
  rep("Grupo 1",10),
  rep("Grupo 2",10)
)

puntaje <- c(
  72,68,75,70,73,71,69,74,70,72,
  65,63,67,69,64,66,62,68,65,67
)

edad <- c(
  38,42,41,39,40,37,43,40,39,41,
  35,37,34,36,38,35,39,37,36,34
)

fumador <- c(
  "Sí","Sí","No","Sí","No", "Sí","Sí","No","Sí","Sí",
  "No","Sí","No","No","Sí", "No","Sí","No","Sí","No"
)

datos <- data.frame(
  grupo,
  puntaje,
  edad,
  fumador
)

datos
Data frame utilizado en los ejemplos simulados.
grupo puntaje edad fumador
Grupo 1 72 38
Grupo 1 68 42
Grupo 1 75 41 No
Grupo 1 70 39
Grupo 1 73 40 No
Grupo 1 71 37
Grupo 1 69 43
Grupo 1 74 40 No
Grupo 1 70 39
Grupo 1 72 41
Grupo 2 65 35 No
Grupo 2 63 37
Grupo 2 67 34 No
Grupo 2 69 36 No
Grupo 2 64 38
Grupo 2 66 35 No
Grupo 2 62 39
Grupo 2 68 37 No
Grupo 2 65 36
Grupo 2 67 34 No

La variable grupo identifica las dos muestras; puntaje y edad son cuantitativas, mientras que fumador toma los valores Si para éxito y No para fracaso.

5.0.2 Intervalo para la media (con \(Z\))

Para ilustrar el procedimiento con \(Z\), se calcula la media de \(x\) y se supone conocida una desviación estándar poblacional igual a \(9\).

# Calcula media y tamaño
media_puntaje <- mean(datos$puntaje)
n_puntaje <- length(datos$puntaje)

# Calcula el intervalo
resultado <- ic_media_z(
  media = media_puntaje,
  sigma = 9,
  n = n_puntaje,
  conf = 0.95
)

resultado
Medida Valor
Media 68.5
σ 9
Error estándar 2.0125
n 20
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 3.9444
Extremo inferior 64.5556
Extremo superior 72.4444
Intervalo 68.5 ± 3.9444

5.0.3 Intervalo para la media (con \(t\))

Como normalmente la desviación estándar poblacional es desconocida, se estima mediante la desviación estándar muestral del puntaje.

# Calcula media y tamaño
media_puntaje <- mean(datos$puntaje)
s_puntaje <- sd(datos$puntaje)
n_puntaje <- length(datos$puntaje)

# Calcula el intervalo
resultado <- ic_media_t(
  media = media_puntaje,
  s = s_puntaje,
  n = n_puntaje,
  conf = 0.95
)

resultado
Medida Valor
Media 68.5
s 3.6778
Error estándar 0.8224
n 20
Grados de libertad 19
Grado de confianza 0.95
Valor crítico 2.093
Margen de error 1.7213
Extremo inferior 66.7787
Extremo superior 70.2213
Intervalo 68.5 ± 1.7213

5.0.4 Intervalo para una proporción

En este caso, un valor igual a en la variable exito representa un éxito. La suma del número de categorías de esta variable proporciona el número total de éxitos. Se evalúa si la proporción de éxitos es igual a 0.50.

# Calcula total de éxitos y tamaño
total_fumador <- sum(datos$fumador == "Sí")
n_fumador <- length(datos$fumador)

# Calcula el intervalo
resultado <- ic_proporcion(
  exitos = total_fumador,
  n = n_fumador,
  conf = 0.95
)

resultado
Medida Valor
Éxitos 11
n 20
Proporción 0.55
Error estándar 0.1112
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 0.218
Extremo inferior 0.332
Extremo superior 0.768
Intervalo 0.55 ± 0.218

5.0.5 Intervalo para una varianza

La varianza muestral del puntaje se utiliza para estimar la varianza de la población.

varianza_puntaje <- var(datos$puntaje)
n_puntaje <- length(datos$puntaje)

resultado <- ic_varianza(
  varianza = varianza_puntaje,
  n = n_puntaje,
  conf = 0.95
)

resultado
Medida Valor
Varianza muestral 13.5263
n 20
Grados de libertad 19
Grado de confianza 0.95
Cuantil inferior 8.9065
Cuantil superior 32.8523
Extremo inferior 7.8229
Extremo superior 28.8553
Intervalo (7.8229, 28.8553)

5.0.6 Preparación de las dos muestras

Para comparar las medias de los dos grupos, primero se separan los valores de la variable puntaje según el grupo al que pertenece cada observación. De esta manera se obtienen dos muestras independientes: una correspondiente al Grupo 1 y otra al Grupo 2.

# Se extraen los valores de la variable puntaje correspondientes a cada uno de los grupos.
puntaje1 <- datos$puntaje[datos$grupo == "Grupo 1"]
puntaje2 <- datos$puntaje[datos$grupo == "Grupo 2"]

# Se calculan las estadísticas resumidas de cada grupo.

media_gr1 <- mean(puntaje1)
media_gr2 <- mean(puntaje2)

s_gr1 <- sd(puntaje1)
s_gr2 <- sd(puntaje2)

n_gr1 <- length(puntaje1)
n_gr2 <- length(puntaje2)

A partir de estos resultados, se obtiene el siguiente resumen para cada grupo.

tabla_muestras <- data.frame(

  Estadística = c(
    "Tamaño muestral (n)",
    "Media",
    "Desviación estándar (s)"
  ),

  `Grupo 1` = c(
    n_gr1,
    round(media_gr1, 2),
    round(s_gr1, 2)
  ),

  `Grupo 2` = c(
    n_gr2,
    round(media_gr2, 2),
    round(s_gr2, 2)
  ),

  check.names = FALSE
)

tabla_muestras
Resumen de la variable puntaje por grupo.
Estadística Grupo 1 Grupo 2
Tamaño muestral (n) 10.00 10.00
Media 71.40 65.60
Desviación estándar (s) 2.22 2.22

Las estadísticas presentadas en la tabla corresponden a los argumentos que posteriormente se utilizarán en las funciones para comparar las medias de los dos grupos:

  • media1 y media2: medias muestrales;

  • s1 y s2: desviaciones estándar muestrales;

  • n1 y n2: tamaños muestrales.

5.0.7 Intervalo para la diferencia de medias (con \(Z\))

Para utilizar el intervalo Z , se supone que las desviaciones estándar poblacionales son conocidas.

La diferencia se calcula en el orden:

\[\text{Grupo 1} \; −\; \text{Grupo 2}\]

resultado <- ic_dif_medias_z(
  media1 = media_gr1,
  media2 = media_gr2,
  sigma1 = 8,
  sigma2 = 10,
  n1 = n_gr1,
  n2 = n_gr2,
  conf = 0.95
)

resultado
Medida Valor
Media (Muestra 1) 71.4
σ (Muestra 1) 8
n (Muestra 1) 10
Media (Muestra 2) 65.6
σ (Muestra 2) 10
n (Muestra 2) 10
Diferencia estimada 5.8
Error estándar 4.0497
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 7.9372
Extremo inferior -2.1372
Extremo superior 13.7372
Intervalo 5.8 ± 7.9372

5.0.8 Intervalo para la diferencia de medias (con \(t\), varianzas desconocidas e iguales)

\[\text{Grupo 1} \; −\; \text{Grupo 2}\]

resultado <- ic_dif_medias_t_si(
  media1 = media_gr1,
  media2 = media_gr2,
  s1 = s_gr1,
  s2 = s_gr2,
  n1 = n_gr1,
  n2 = n_gr2,
  conf = 0.95
)

resultado
Medida Valor
Media (Muestra 1) 71.4
s (Muestra 1) 2.2211
n (Muestra 1) 10
Media (Muestra 2) 65.6
s (Muestra 2) 2.2211
n (Muestra 2) 10
Diferencia estimada 5.8
Varianza combinada 4.9333
Desviación combinada 2.2211
Grados de libertad 18
Error estándar 0.9933
Grado de confianza 0.95
Valor crítico 2.1009
Margen de error 2.0869
Extremo inferior 3.7131
Extremo superior 7.8869
Intervalo 5.8 ± 2.0869

5.0.9 Intervalo para la diferencia de medias (con \(t\), varianzas desconocidas y diferentes)

Cuando no se supone igualdad de varianzas, se utiliza el procedimiento de Welch.

La diferencia se calcula en el orden:

\[\text{Grupo 1} \; −\; \text{Grupo 2}\]

resultado <- ic_dif_medias_t_no(
  media1 = media_gr1,
  media2 = media_gr2,
  s1 = s_gr1,
  s2 = s_gr2,
  n1 = n_gr1,
  n2 = n_gr2,
  conf = 0.95
)

resultado
Medida Valor
Media (Muestra 1) 71.4
s (Muestra 1) 2.2211
n (Muestra 1) 10
Media (Muestra 2) 65.6
s (Muestra 2) 2.2211
n (Muestra 2) 10
Diferencia estimada 5.8
Grados de libertad 18
Error estándar 0.9933
Grado de confianza 0.95
Valor crítico 2.1009
Margen de error 2.0869
Extremo inferior 3.7131
Extremo superior 7.8869
Intervalo 5.8 ± 2.0869

5.0.10 Intervalo para la diferencia de proporciones

Se calcula el número de éxitos y el tamaño muestral dentro de cada grupo.

La diferencia se calcula en el orden:

\[\text{Grupo 1} \; −\; \text{Grupo 2}\]

# Se calcula el número de éxitos para cada uno de los dos grupos
fumador_gr1 <- sum(datos$fumador[datos$grupo == "Grupo 1"] == "Sí")
fumador_gr2 <- sum(datos$fumador[datos$grupo == "Grupo 2"] == "Sí")

# Se calcula el tamaño muestral para cada uno de los dos grupos
n_gr1 <- sum(datos$grupo == "Grupo 1")
n_gr2 <- sum(datos$grupo == "Grupo 2")

# Calcula el intervalo
resultado <- ic_dif_proporciones(
  exitos1 = fumador_gr1,
  n1 = n_gr1,
  exitos2 = fumador_gr2,
  n2 = n_gr2,
  conf = 0.95
)

resultado
Medida Valor
Éxitos (Muestra 1) 7
n (Muestra 1) 10
Proporción (Muestra 1) 0.7
Éxitos (Muestra 2) 4
n (Muestra 2) 10
Proporción (Muestra 2) 0.4
Diferencia estimada 0.3
Error estándar 0.2121
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 0.4158
Extremo inferior -0.1158
Extremo superior 0.7158
Intervalo 0.3 ± 0.4158

5.0.11 Intervalo para la razón de varianzas

Este intervalo permite comparar la variabilidad de la variable x en los dos grupos.

La razón se calcula en el orden:

\[\frac{\text{Grupo 1}}{\text{Grupo 2}}\]

var_gr1 <- var(puntaje1)
var_gr2 <- var(puntaje2)

n_gr1 <- length(puntaje1)
n_gr2 <- length(puntaje2)

resultado <- ic_razon_varianzas(
  varianza1 = var_gr1,
  varianza2 = var_gr2,
  n1 = n_gr1,
  n2 = n_gr2,
  conf = 0.95
)

resultado
Medida Valor
Varianza (Muestra 1) 4.9333
n (Muestra 1) 10
Grados de libertad (Muestra 1) 9
Varianza (Muestra 2) 4.9333
n (Muestra 2) 10
Grados de libertad (Muestra 2) 9
Razón de varianzas 1
Grado de confianza 0.95
Valor crítico inferior 0.2484
Valor crítico superior 4.026
Extremo inferior 0.2484
Extremo superior 4.026
Intervalo (0.2484, 4.026)

6 Ejemplos utilizando una base de datos

En esta sección se utiliza el conjunto de datos survey del paquete lsm, recopilado mediante una encuesta aplicada a una muestra de estudiantes universitarios. La descripción de sus variables puede consultarse en este enlace (clic aquí).

Las estadísticas resumidas se calcularán directamente a partir de las variables de la base de datos.

6.0.1 Nuestro data frame

Para acceder a la base de datos, hacemos:

#Base de datos
datosCompleto <- lsm::survey

# Para los ejemplos de esta sección utilizaremos únicamente las primeras 100 observaciones
df1 <- datosCompleto[1:100,]

# Para otros ejemplos de esta sección utilizaremos únicamente las primeras 29 observaciones
df2 <- datosCompleto[1:29,]

# Dimensión de las dos bases de datos (observaciones, variables)
dim(datosCompleto)
dim(df1)
## Dimensión de la base de datos original: 800 observaciones y 66 variables.
## Dimensión del data frame (df1) utilizado en los ejemplos: 100 observaciones y 66 variables.
## Dimensión del segundo data frame (df2) utilizado en los ejemplos: 29 observaciones y 66 variables.

6.0.2 Variables que vamos a utilizar para los ejemplos

En los siguientes ejemplos utilizaremos las variables Age, Gender y School.

  • Age representa la edad del estudiante.

  • Gender tiene las categorías Female y male.

  • School tiene, entre otros, los niveles Private y Public.

6.0.3 Verificar los niveles de las variables seleccionadas

Antes de continuar, se verifican los niveles observados.

unique(df1$Gender)
unique(df1$School)
## Niveles de Gender: Female Male
## Niveles de School: Private Public

6.0.4 Intervalo para la media (con \(Z\))

Se calcula el intervalo de confianza para la edad media. Para ilustrar el procedimiento con \(Z\), se supondrá conocida una desviación estándar poblacional igual a \(6\) años.

# Elimina los valores perdidos (NA)
edad <- df1$Age[!is.na(df1$Age)] 

# Calcula media y tamaño
media_edad <- mean(edad)
n_edad <- length(edad)

# Calcula el intervalo
resultado <- ic_media_z(
  media = media_edad,
  sigma = 6,
  n = n_edad,
  conf = 0.95
)

resultado
Medida Valor
Media 18.9374
σ 6
Error estándar 0.6
n 100
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 1.176
Extremo inferior 17.7614
Extremo superior 20.1134
Intervalo 18.9374 ± 1.176

6.0.5 Intervalo para la media (con \(t\))

Como normalmente la desviación estándar poblacional es desconocida, se utiliza la desviación estándar muestral de la variable Age.

# Elimina los valores perdidos (NA)
edad <- df2$Age[!is.na(df2$Age)] 

# Calcula media y tamaño
media_edad <- mean(edad)
s_edad <- sd(edad)
n_edad <- length(edad)

# Calcula el intervalo
resultado <- ic_media_t(
  media = media_edad,
  s = s_edad,
  n = n_edad,
  conf = 0.95
)

resultado
Medida Valor
Media 19.2641
s 2.0637
Error estándar 0.3832
n 29
Grados de libertad 28
Grado de confianza 0.95
Valor crítico 2.0484
Margen de error 0.785
Extremo inferior 18.4792
Extremo superior 20.0491
Intervalo 19.2641 ± 0.785

6.0.6 Intervalo para una proporción

En este ejemplo se estima la proporción poblacional de estudiantes de género Female. El número de éxitos corresponde al número de observaciones clasificadas como Female.

# Elimina los valores perdidos (NA)
genero <- df1$Gender[!is.na(df1$Gender)]

# Calcula número de estudiantes de género Female (éxitos) y tamaño total de la muestra.
total_fem <- sum(genero == "Female")
n_fem <- length(genero)

# Calcula el intervalo
resultado <- ic_proporcion(
  exitos = total_fem,
  n = n_fem,
  conf = 0.95
)

resultado
Medida Valor
Éxitos 49
n 100
Proporción 0.49
Error estándar 0.05
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 0.098
Extremo inferior 0.392
Extremo superior 0.588
Intervalo 0.49 ± 0.098

6.0.7 Intervalo para una varianza

La varianza muestral de la variable Age se utiliza para estimar la varianza poblacional de las edades.

# Elimina los valores perdidos (NA)
edad <- df1$Age[!is.na(df1$Age)]

# Calcula varianza y tamaño
varianza_edad <- var(edad)
n_edad <- length(edad)

# Calcula el intervalo
resultado <- ic_varianza(
  varianza = varianza_edad,
  n = n_edad,
  conf = 0.95
)

resultado
Medida Valor
Varianza muestral 4.0816
n 100
Grados de libertad 99
Grado de confianza 0.95
Cuantil inferior 73.3611
Cuantil superior 128.422
Extremo inferior 3.1465
Extremo superior 5.508
Intervalo (3.1465, 5.508)

6.0.8 Preparación y resumen de los dos grupos con los datos de df1

Primero se eliminan las observaciones con valores faltantes en Age o School. Luego se conservan únicamente los estudiantes procedentes de colegios Private y Public.

# Conservar solo observaciones válidas de Age y School, correspondientes a colegios privados o públicos.

datos_edad_df1 <- df1[
  !is.na(df1$Age) &
  !is.na(df1$School) &
  df1$School %in% c("Private", "Public"),
]

# Se separan las edades según el tipo de colegio.
edad_private_df1 <- datos_edad_df1$Age[datos_edad_df1$School == "Private"]
edad_public_df1 <- datos_edad_df1$Age[datos_edad_df1$School == "Public"]

# Se calculan las estadísticas resumidas de cada grupo.
media_private_df1 <- mean(edad_private_df1)
media_public_df1 <- mean(edad_public_df1)

s_private_df1 <- sd(edad_private_df1)
s_public_df1 <- sd(edad_public_df1)

n_private_df1 <- length(edad_private_df1)
n_public_df1 <- length(edad_public_df1)

A partir de estos resultados, se obtiene el siguiente resumen para cada grupo:

tabla_muestras <- data.frame(
  Estadística = c(
    "Tamaño muestral (n)",
    "Media",
    "Desviación estándar"
  ),
  Private = c(n_private_df1, round(media_private_df1, 2), round(s_private_df1, 2)),
  Public = c(n_public_df1, round(media_public_df1, 2), round(s_public_df1, 2)),
  check.names = FALSE
)

tabla_muestras
Resumen de la variable Age según el tipo de colegio.
Estadística Private Public
Tamaño muestral (n) 50.00 50.00
Media 19.08 18.79
Desviación estándar 2.19 1.84

Las estadísticas presentadas en la tabla corresponden a los argumentos que se utilizarán posteriormente en las funciones para comparar las medias de los dos grupos:

  • media1 y media2: medias muestrales;

  • s1 y s2: desviaciones estándar muestrales;

  • n1 y n2: tamaños muestrales.

En los procedimientos siguientes, el grupo Private se considerará como el Grupo 1 y el grupo Public como el Grupo 2.

6.0.9 Preparación y resumen de los dos grupos con los datos de df2

Primero se eliminan las observaciones con valores faltantes en Age o School. Luego se conservan únicamente los estudiantes procedentes de colegios Private y Public.

# Conservar solo observaciones válidas de Age y School, correspondientes a colegios privados o públicos.

datos_edad_df2 <- df2[
  !is.na(df2$Age) &
  !is.na(df2$School) &
  df2$School %in% c("Private", "Public"),
]

# Se separan las edades según el tipo de colegio.
edad_private_df2 <- datos_edad_df2$Age[datos_edad_df2$School == "Private"]
edad_public_df2 <- datos_edad_df2$Age[datos_edad_df2$School == "Public"]

# Se calculan las estadísticas resumidas de cada grupo.
media_private_df2 <- mean(edad_private_df2)
media_public_df2 <- mean(edad_public_df2)

s_private_df2 <- sd(edad_private_df2)
s_public_df2 <- sd(edad_public_df2)

n_private_df2 <- length(edad_private_df2)
n_public_df2 <- length(edad_public_df2)

A partir de estos resultados, se obtiene el siguiente resumen para cada grupo:

tabla_muestras <- data.frame(
  Estadística = c(
    "Tamaño muestral (n)",
    "Media",
    "Desviación estándar"
  ),
  Private = c(n_private_df2, round(media_private_df2, 2), round(s_private_df2, 2)),
  Public = c(n_public_df2, round(media_public_df2, 2), round(s_public_df2, 2)),
  check.names = FALSE
)

tabla_muestras
Resumen de la variable Age según el tipo de colegio.
Estadística Private Public
Tamaño muestral (n) 15.00 14.00
Media 19.20 19.33
Desviación estándar 2.37 1.77

Las estadísticas presentadas en la tabla corresponden a los argumentos que se utilizarán posteriormente en las funciones para comparar las medias de los dos grupos:

  • media1 y media2: medias muestrales;

  • s1 y s2: desviaciones estándar muestrales;

  • n1 y n2: tamaños muestrales.

En los procedimientos siguientes, el grupo Private se considerará como el Grupo 1 y el grupo Public como el Grupo 2.

6.0.10 Intervalo para la diferencia de medias (con \(Z\))

Se estima la diferencia entre la edad media de los estudiantes procedentes de colegios privados y públicos.

Es decir, la diferencia se calcula en el orden:

\[\text{Grupo 1 (Private)} \quad −\quad \text{Grupo 2 (Public)}\]

resultado <- ic_dif_medias_z(
  media1 = media_private_df1,
  media2 = media_public_df1,
  sigma1 = 6,
  sigma2 = 6,
  n1 = n_private_df1,
  n2 = n_public_df1,
  conf = 0.95
)

resultado
Medida Valor
Media (Muestra 1) 19.0842
σ (Muestra 1) 6
n (Muestra 1) 50
Media (Muestra 2) 18.7906
σ (Muestra 2) 6
n (Muestra 2) 50
Diferencia estimada 0.2936
Error estándar 1.2
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 2.352
Extremo inferior -2.0584
Extremo superior 2.6456
Intervalo 0.2936 ± 2.352

6.0.11 Intervalo para la diferencia de medias (con \(t\), varianzas desconocidas e iguales)

Este procedimiento compara las edades medias de los dos grupos suponiendo que las varianzas poblacionales son desconocidas, pero iguales.

La diferencia se calcula en el orden:

\[\text{Grupo 1 (Private)} \quad −\quad \text{Grupo 2 (Public)}\]

resultado <- ic_dif_medias_t_si(
  media1 = media_private_df2,
  media2 = media_public_df2,
  s1 = s_private_df2,
  s2 = s_public_df2,
  n1 = n_private_df2,
  n2 = n_public_df2,
  conf = 0.95
)

resultado
Medida Valor
Media (Muestra 1) 19.1993
s (Muestra 1) 2.3681
n (Muestra 1) 15
Media (Muestra 2) 19.3336
s (Muestra 2) 1.7672
n (Muestra 2) 14
Diferencia estimada -0.1342
Varianza combinada 4.4116
Desviación combinada 2.1004
Grados de libertad 27
Error estándar 0.7805
Grado de confianza 0.95
Valor crítico 2.0518
Margen de error 1.6015
Extremo inferior -1.7357
Extremo superior 1.4673
Intervalo -0.1342 ± 1.6015

6.0.12 Intervalo para la diferencia de medias (con \(t\), varianzas desconocidas y diferentes)

Cuando no se supone igualdad de varianzas, se utiliza el procedimiento de Welch para comparar las edades medias de los dos grupos.

La diferencia se calcula en el orden:

\[\text{Grupo 1 (Private)} \quad −\quad \text{Grupo 2 (Public)}\]

resultado <- ic_dif_medias_t_no(
  media1 = media_private_df2,
  media2 = media_public_df2,
  s1 = s_private_df2,
  s2 = s_public_df2,
  n1 = n_private_df2,
  n2 = n_public_df2,
  conf = 0.95
)

resultado
Medida Valor
Media (Muestra 1) 19.1993
s (Muestra 1) 2.3681
n (Muestra 1) 15
Media (Muestra 2) 19.3336
s (Muestra 2) 1.7672
n (Muestra 2) 14
Diferencia estimada -0.1342
Grados de libertad 25.7995
Error estándar 0.7726
Grado de confianza 0.95
Valor crítico 2.0563
Margen de error 1.5888
Extremo inferior -1.723
Extremo superior 1.4545
Intervalo -0.1342 ± 1.5888

6.0.13 Preparación de los datos para comparar proporciones

Para comparar la proporción de mujeres entre los estudiantes procedentes de colegios privados y públicos:

  • Primero se eliminan las observaciones con valores faltantes en las variables Gender y School.

  • Posteriormente se conservan únicamente los estudiantes provenientes de colegios Private y Public.

# Conservar solo observaciones válidas de Gender y School (para colegios privados o públicos).

datos_genero_df1 <- df1[
  !is.na(df1$Gender) &
  !is.na(df1$School) &
  df1$School %in% c("Private", "Public"),
]

# Se separa la variable Gender según el tipo de colegio.
genero_private_df1 <- datos_genero_df1$Gender[datos_genero_df1$School == "Private"]
genero_public_df1 <- datos_genero_df1$Gender[datos_genero_df1$School == "Public"]

# Se cuenta el número de estudiantes de género Female (éxitos) en cada grupo.
exitos_private_df1 <- sum(genero_private_df1 == "Female")
exitos_public_df1 <- sum(genero_public_df1 == "Female")

# Se calcula el tamaño muestral de cada grupo.
n_private_genero_df1 <- length(genero_private_df1)
n_public_genero_df1 <- length(genero_public_df1)

A partir de estos resultados, se obtiene el siguiente resumen para cada grupo:

tabla_genero <- data.frame(
  Estadística = c(
    "Tamaño muestral (n)",
    "Número de mujeres (éxitos)",
    "Proporción de mujeres"
  ),
  Private = c(
    n_private_genero_df1,
    exitos_private_df1,
    round(exitos_private_df1 / n_private_genero_df1, 3)
  ),
  Public = c(
    n_public_genero_df1,
    exitos_public_df1,
    round(exitos_public_df1 / n_public_genero_df1, 3)
  ),
  check.names = FALSE
)

tabla_genero
Resumen de la variable Gender según el tipo de colegio.
Estadística Private Public
Tamaño muestral (n) 50.00 50.00
Número de mujeres (éxitos) 26.00 23.00
Proporción de mujeres 0.52 0.46

Observe que las cantidades éxitos y n corresponden exactamente a los argumentos que posteriormente se utilizarán en la función ic_dif_proporciones().

6.0.14 Intervalo para la diferencia de proporciones

Se estima la diferencia entre la proporción de mujeres procedentes de colegios privados y la proporción de mujeres procedentes de colegios públicos.

La diferencia se calcula en el orden:

\[\text{Grupo 1 (Private)} \quad −\quad \text{Grupo 2 (Public)}\]

resultado <- ic_dif_proporciones(
  exitos1 = exitos_private_df1,
  n1 = n_private_genero_df1,
  exitos2 = exitos_public_df1,
  n2 = n_public_genero_df1,
  conf = 0.95
)

resultado
Medida Valor
Éxitos (Muestra 1) 26
n (Muestra 1) 50
Proporción (Muestra 1) 0.52
Éxitos (Muestra 2) 23
n (Muestra 2) 50
Proporción (Muestra 2) 0.46
Diferencia estimada 0.06
Error estándar 0.0998
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 0.1956
Extremo inferior -0.1356
Extremo superior 0.2556
Intervalo 0.06 ± 0.1956

6.0.15 Intervalo para la razón de varianzas

Este intervalo compara la variabilidad de las edades entre los estudiantes procedentes de colegios privados y públicos.

La razón se calcula en el orden:

\[\frac{\text{Grupo 1}}{\text{Grupo 2}}\]

varianza_private_df1<- var(edad_private_df1)
varianza_public_df1 <- var(edad_public_df1)

resultado <- ic_razon_varianzas(
  varianza1 = varianza_private_df1,
  varianza2 = varianza_public_df1,
  n1 = n_private_df1,
  n2 = n_public_df1,
  conf = 0.95
)

resultado
Medida Valor
Varianza (Muestra 1) 4.8177
n (Muestra 1) 50
Grados de libertad (Muestra 1) 49
Varianza (Muestra 2) 3.3848
n (Muestra 2) 50
Grados de libertad (Muestra 2) 49
Razón de varianzas 1.4233
Grado de confianza 0.95
Valor crítico inferior 0.5675
Valor crítico superior 1.7622
Extremo inferior 0.8077
Extremo superior 2.5082
Intervalo (0.8077, 2.5082)

7 Proyecto: Intervalos de Confianza

7.0.1 Tema

Intervalos de confianza para uno y dos parámetros.

7.0.2 Objetivo

Aplicar los procedimientos estudiados para construir e interpretar intervalos de confianza para uno y dos parámetros poblacionales utilizando un conjunto de datos real. Además, fortalecer las habilidades para seleccionar muestras, obtener las estadísticas muestrales necesarias a partir de una base de datos y documentar adecuadamente todo el proceso mediante R Markdown.

7.0.3 Base de datos

Utilice el conjunto de datos survey del paquete lsm, empleado durante las clases.

7.0.4 Lineamientos

Los lineamientos generales para la elaboración, entrega y evaluación de esta actividad se encuentran disponibles en:

https://rpubs.com/hllinas/R_Lineamiento_EstInf

No es necesario repetir dichos lineamientos en este documento.

7.0.5 Actividades

  1. Conociendo la base de datos

    Responda las siguientes preguntas:

    1. ¿Cuántas observaciones tiene su base de datos?

    2. ¿Cuántas variables contiene?

    3. Muestre los nombres de todas las variables.

    4. Seleccione:

      • Dos variables cuantitativas que utilizará para construir intervalos para la media poblacional.

      • Dos variables dicotómicas que utilizará para construir intervalos para una proporción poblacional.

      • Una variable categórica con exactamente dos niveles que utilizará para definir los dos grupos que serán comparados en los intervalos de confianza para dos parámetros.

    5. Justifique brevemente la selección realizada.

    Importante:

    • Las variables seleccionadas no podrán ser las mismas utilizadas durante las clases o en los ejemplos de las notas del curso. Cada estudiante deberá elegir un conjunto diferente de variables que cumpla las condiciones anteriores.
  1. Selección de una muestra

    1. Construya un nuevo data frame denominado Muestra1, compuesto por más de 100 observaciones seleccionadas de la base de datos original.

    2. Construya un segundo data frame denominado Muestra2, compuesto por menos de 29 observaciones seleccionadas de la base de datos original.

    3. Asegúrese de que tanto Muestra1 como Muestra2 contengan observaciones correspondientes a los dos niveles de la variable categórica seleccionada para comparar las dos poblaciones.

    4. Todas las estimaciones realizadas en la actividad deberán calcularse utilizando únicamente Muestra1 o Muestra2, según corresponda.

  1. Supuestos

    Suponga, en todos los casos, que las variables cuantitativas poblacionales seleccionadas siguen una distribución normal.

  1. Intervalos de confianza para un parámetro

    Utilizando las muestras construidas en el punto 2, realice las siguientes estimaciones:

    1. Utilizando Muestra1 (muestra grande), construya un intervalo de confianza para la diferencia de medias poblacionales, empleando la aproximación basada en la distribución normal.

    2. Utilizando Muestra2 (muestra pequeña), construya un intervalo de confianza para la diferencia de medias poblacionales, suponiendo desconocidas pero iguales las varianzas poblacionales. Emplee la distribución \(t\) de Student.

    3. Utilizando nuevamente Muestra2, construya un intervalo de confianza para la diferencia de medias poblacionales, suponiendo desconocidas y diferentes las varianzas poblacionales. Emplee la distribución \(t\) de Student.

    1. Utilizando nuevamente Muestra2, construya otro intervalo de confianza para la media poblacional mediante la distribución \(t\) de Student, utilizando una variable cuantitativa diferente de la empleada en el inciso anterior.

    2. Utilizando Muestra1, construya un intervalo de confianza para una proporción poblacional, a partir de una las variables dicotómicas seleccionadas.

    3. Utilizando Muestra1, construya un intervalo de confianza para una proporción poblacional, a partir de la segunda variable dicotómica seleccionada.

    Para cada intervalo:

    • Presente claramente los resultados obtenidos.

    • Indentifique el parámetro poblacional que se está estimando.

    • Presente e interprete los principales elementos del procedimiento: estimación puntual, error estándar, valor crítico, margen de error y límites inferior y superior del intervalo.

    • Interprete el intervalo de confianza en el contexto de la variable y del problema analizado.

    • Organice el desarrollo de acuerdo con la plantilla utilizada en clases: datos, supuestos, conclusión, fómula, procedimiento, resultados e interpretación.

  1. Preparación de los dos grupos

    Utilizando la variable categórica seleccionada en el punto 1:

    1. Construya dos subconjuntos de datos, uno para cada nivel de la variable categórica.

    2. Seleccione una variable cuantitativa que permita comparar las medias y las varianzas de los dos grupos.

    3. Seleccione una variable dicotómica que permita comparar las proporciones de los dos grupos.

    4. Obtenga, para cada grupo, todas las estadísticas resumidas necesarias para construir los intervalos de confianza solicitados en la siguiente sección..

  1. Intervalos de confianza para dos parámetros

    Utilizando los dos grupos definidos anteriormente, construya:

    1. Un intervalo de confianza para la diferencia de medias suponiendo conocidas las desviaciones estándar poblacionales.

    2. Un intervalo de confianza para la diferencia de medias suponiendo desconocidas pero iguales las varianzas poblacionales.

    3. Un intervalo de confianza para la diferencia de medias suponiendo desconocidas y diferentes las varianzas poblacionales.

    4. Un intervalo de confianza para la diferencia de proporciones poblacionales.

    5. Un intervalo de confianza para la razón de varianzas poblacionales.

    Para cada intervalo:

    • Presente claramente los resultados obtenidos.

    • Indentifique el parámetro poblacional que se está estimando.

    • Presente e interprete los principales elementos del procedimiento que correspondan en cada caso: estimación puntual, error estándar, valor crítico, margen de error y límites inferior y superior del intervalo.

    • Interprete el intervalo de confianza en el contexto de las variables y de los grupos analizados.

    • Organice el desarrollo de acuerdo con la plantilla utilizada en clases: datos, supuestos, conclusión, fómula, procedimiento, resultados e interpretación.

  1. Comparación entre procedimientos

    Responda las siguientes preguntas:

    1. ¿Qué diferencias conceptuales y prácticas observa entre los intervalos construidos utilizando las distribuciones (Z) y (t) de Student?

    2. Compare los tres intervalos obtenidos para la diferencia de medias poblacionales. ¿Qué similitudes y diferencias observa entre ellos? Explique teniendo en cuenta los supuestos utilizados en cada procedimiento.

    3. ¿Qué efecto tiene el supuesto de varianzas iguales o diferentes sobre el intervalo de confianza para la diferencia de medias?

    4. ¿Qué información aporta el intervalo de confianza para la diferencia de proporciones poblacionales?

    5. ¿Qué información aporta el intervalo de confianza para la razón de varianzas poblacionales? Explique cómo puede utilizarse para comparar la variabilidad de los dos grupos.

  1. Conclusión

    Escriba una conclusión de dos o tres párrafos en la que analice los principales resultados obtenidos.

    Entre otros aspectos, responda:

    1. ¿Qué conclusiones pueden obtenerse sobre la población a partir de los intervalos construidos?

    2. ¿Qué diferencias observó entre los procedimientos utilizados para estimar uno y dos parámetros poblacionales?

    3. ¿Qué efecto tuvieron el tamaño de la muestra y los supuestos sobre las estimaciones realizadas?

    4. ¿Qué limitaciones presentan los intervalos de confianza obtenidos?

7.0.6 Recomendaciones

  • Todas las tablas deberán estar numeradas y tituladas.

  • Todas las afirmaciones deberán sustentarse con los resultados obtenidos.

  • Muestre el código utilizado para obtener las estadísticas resumidas antes de construir cada intervalo de confianza.

  • Justifique los supuestos utilizados en cada procedimiento.

  • El código debe estar comentado y ejecutarse sin errores.

  • Recuerde consultar los lineamientos generales del curso para conocer los requisitos de reproducibilidad, entrega y evaluación.

Anexos

  1. RStudio, R Markdown y R (por lo menos, el capítulo 1): Click derecho aquí.

  2. Lineamientos (actividades de análisis de datos): Click derecho aquí.

  3. Tablas estadísticas: Click derecho aquí.

  4. Tabla de supuestos: Click derecho aquí.

Texto guía

  1. LLinás, H. (2006); Estadística inferencial. Barranquilla: Editorial Universidad del Norte.

Bibliografía complementaria

  1. LLinás, H., Rojas, C. (2005). Estadística descriptiva y distribuciones de probabilidad. Barranquilla: Editorial Universidad del Norte.

  2. Consultar mis notas de clase: Estadística inferencial

  3. Consultar el documento RPubs :: Enlace y materiales de ayuda.

  4. Agresti, A., Franklin, C., & Klingenberg, B. (2018). Statistics: The Art and Science of Learning from Data, 4/E.

  5. Puede consultarse mis siguientes documentos:

 

 
If you found any ERRORS or have SUGGESTIONS, please report them to my email. Thanks.