hllinas2023

1 Introducción

Primero, debemos instalar y descargar las librerías que vamos a utilizar.

library(lsm)      # Para descargar una base de datos
library(knitr)

2 Conceptos básicos

La hipótesis nula, denotada por \(H_0\), representa la afirmación que se somete a evaluación. La hipótesis alternativa, denotada por \(H_1\), expresa la posibilidad que se desea contrastar.

El nivel de significancia se representa mediante α. En este documento se utilizará, salvo indicación contraria, \(\alpha=0.05\).

La regla de decisión basada en el p-valor es:

  • si p-valor \(\leq \alpha\), se rechaza \(H_0\);

  • si p-valor \(>\alpha\), no se rechaza \(H_0\).

No rechazar \(H_0\) no significa demostrar que sea verdadera; únicamente indica que la muestra no proporciona evidencia suficiente para rechazarla.

Las funciones admiten tres tipos de hipótesis alternativas:

alternative = "two.sided"  # bilateral
alternative = "greater"    # cola derecha
alternative = "less"       # cola izquierda

Funciones para pruebas de hipótesis

A continuación se presentan funciones desarrolladas para realizar las pruebas de hipótesis estudiadas en este capítulo. Cada función recibe las estadísticas muestrales necesarias y devuelve una tabla con las hipótesis, el estadístico de prueba, el p-valor, la decisión y una conclusión breve.

# ============================================================
# 1. Funciones auxiliares
# ============================================================

formato_num <- function(x, digitos = 4) {
  format(
    round(x, digitos),
    nsmall = 0,
    trim = TRUE,
    scientific = FALSE
  )
}

nombre_alternativa <- function(alternative) {
  switch(
    alternative,
    "two.sided" = "Bilateral",
    "greater"   = "Cola derecha",
    "less"      = "Cola izquierda"
  )
}

valor_p_normal <- function(estadistico, alternative) {
  switch(
    alternative,
    "two.sided" = 2 * pnorm(-abs(estadistico)),
    "greater"   = pnorm(estadistico, lower.tail = FALSE),
    "less"      = pnorm(estadistico)
  )
}

valor_p_t <- function(estadistico, gl, alternative) {
  switch(
    alternative,
    "two.sided" = 2 * pt(-abs(estadistico), df = gl),
    "greater"   = pt(estadistico, df = gl, lower.tail = FALSE),
    "less"      = pt(estadistico, df = gl)
  )
}

valor_p_chi <- function(estadistico, gl, alternative) {
  switch(
    alternative,
    "two.sided" = min(
      1,
      2 * min(
        pchisq(estadistico, df = gl),
        pchisq(estadistico, df = gl, lower.tail = FALSE)
      )
    ),
    "greater" = pchisq(estadistico, df = gl, lower.tail = FALSE),
    "less"    = pchisq(estadistico, df = gl)
  )
}

valor_p_f <- function(estadistico, gl1, gl2, alternative) {
  switch(
    alternative,
    "two.sided" = min(
      1,
      2 * min(
        pf(estadistico, df1 = gl1, df2 = gl2),
        pf(estadistico, df1 = gl1, df2 = gl2, lower.tail = FALSE)
      )
    ),
    "greater" = pf(
      estadistico,
      df1 = gl1,
      df2 = gl2,
      lower.tail = FALSE
    ),
    "less" = pf(
      estadistico,
      df1 = gl1,
      df2 = gl2
    )
  )
}

decision_prueba <- function(valor_p, alpha) {
  if (valor_p <= alpha) {
    "Rechazar H0"
  } else {
    "No rechazar H0"
  }
}

conclusion_prueba <- function(valor_p, alpha) {
  if (valor_p <= alpha) {
    paste0(
      "Existe evidencia estadística suficiente, al nivel α = ",
      formato_num(alpha),
      ", para apoyar H1"
    )
  } else {
    paste0(
      "No existe evidencia estadística suficiente, al nivel α = ",
      formato_num(alpha),
      ", para apoyar H1"
    )
  }
}

validar_alternativa <- function(alternative) {
  match.arg(alternative, c("two.sided", "greater", "less"))
}


# ============================================================
# 2. Prueba Z para una media con sigma conocida
#    H0: mu = mu0
# ============================================================

ph_media_z <- function(media, sigma, n, mu0,
                       alpha = 0.05,
                       alternative = "two.sided",
                       digitos = 4) {
  
  alternative <- validar_alternativa(alternative)
  
  if (sigma <= 0 || n <= 1) {
    stop("sigma debe ser positiva y n debe ser mayor que 1.")
  }
  
  error_estandar <- sigma / sqrt(n)
  estadistico <- (media - mu0) / error_estandar
  valor_p <- valor_p_normal(estadistico, alternative)
  
  resultado <- data.frame(
    Medida = c(
      "Media muestral",
      "Media bajo H0",
      "σ",
      "n",
      "Error estándar",
      "Tipo de prueba",
      "Nivel de significancia",
      "Estadístico Z",
      "p-valor",
      "Decisión",
      "Conclusión"
    ),
    Valor = c(
      formato_num(media, digitos),
      formato_num(mu0, digitos),
      formato_num(sigma, digitos),
      n,
      formato_num(error_estandar, digitos),
      nombre_alternativa(alternative),
      formato_num(alpha, digitos),
      formato_num(estadistico, digitos),
      formato_num(valor_p, digitos),
      decision_prueba(valor_p, alpha),
      conclusion_prueba(valor_p, alpha)
    ),
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}


# ============================================================
# 3. Prueba t para una media con sigma desconocida
#    H0: mu = mu0
# ============================================================

ph_media_t <- function(media, s, n, mu0,
                       alpha = 0.05,
                       alternative = "two.sided",
                       digitos = 4) {
  
  alternative <- validar_alternativa(alternative)
  
  if (s <= 0 || n <= 1) {
    stop("s debe ser positiva y n debe ser mayor que 1.")
  }
  
  gl <- n - 1
  error_estandar <- s / sqrt(n)
  estadistico <- (media - mu0) / error_estandar
  valor_p <- valor_p_t(estadistico, gl, alternative)
  
  resultado <- data.frame(
    Medida = c(
      "Media muestral",
      "Media bajo H0",
      "s",
      "n",
      "Grados de libertad",
      "Error estándar",
      "Tipo de prueba",
      "Nivel de significancia",
      "Estadístico t",
      "p-valor",
      "Decisión",
      "Conclusión"
    ),
    Valor = c(
      formato_num(media, digitos),
      formato_num(mu0, digitos),
      formato_num(s, digitos),
      n,
      gl,
      formato_num(error_estandar, digitos),
      nombre_alternativa(alternative),
      formato_num(alpha, digitos),
      formato_num(estadistico, digitos),
      formato_num(valor_p, digitos),
      decision_prueba(valor_p, alpha),
      conclusion_prueba(valor_p, alpha)
    ),
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}


# ============================================================
# 4. Prueba Z para una proporción
#    H0: p = p0
# ============================================================

ph_proporcion <- function(exitos, n, p0,
                          alpha = 0.05,
                          alternative = "two.sided",
                          digitos = 4) {
  
  alternative <- validar_alternativa(alternative)
  
  if (exitos < 0 || exitos > n) {
    stop("El número de éxitos debe estar entre 0 y n.")
  }
  
  if (p0 <= 0 || p0 >= 1) {
    stop("p0 debe estar entre 0 y 1.")
  }
  
  proporcion <- exitos / n
  error_estandar <- sqrt(p0 * (1 - p0) / n)
  estadistico <- (proporcion - p0) / error_estandar
  valor_p <- valor_p_normal(estadistico, alternative)
  
  resultado <- data.frame(
    Medida = c(
      "Éxitos",
      "n",
      "Proporción muestral",
      "Proporción bajo H0",
      "ES bajo H0",
      "Tipo de prueba",
      "Nivel de significancia",
      "Estadístico Z",
      "p-valor",
      "Decisión",
      "Conclusión"
    ),
    Valor = c(
      exitos,
      n,
      formato_num(proporcion, digitos),
      formato_num(p0, digitos),
      formato_num(error_estandar, digitos),
      nombre_alternativa(alternative),
      formato_num(alpha, digitos),
      formato_num(estadistico, digitos),
      formato_num(valor_p, digitos),
      decision_prueba(valor_p, alpha),
      conclusion_prueba(valor_p, alpha)
    ),
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}


# ============================================================
# 5. Prueba chi-cuadrada para una varianza
#    H0: sigma^2 = varianza0
# ============================================================

ph_varianza <- function(varianza, n, varianza0,
                        alpha = 0.05,
                        alternative = "two.sided",
                        digitos = 4) {
  
  alternative <- validar_alternativa(alternative)
  
  if (varianza <= 0 || varianza0 <= 0 || n <= 1) {
    stop("Las varianzas deben ser positivas y n debe ser mayor que 1.")
  }
  
  gl <- n - 1
  estadistico <- gl * varianza / varianza0
  valor_p <- valor_p_chi(estadistico, gl, alternative)
  
  resultado <- data.frame(
    Medida = c(
      "Varianza muestral",
      "Varianza bajo H0",
      "n",
      "Grados de libertad",
      "Tipo de prueba",
      "Nivel de significancia",
      "Estadístico chi-cuadrada",
      "p-valor",
      "Decisión",
      "Conclusión"
    ),
    Valor = c(
      formato_num(varianza, digitos),
      formato_num(varianza0, digitos),
      n,
      gl,
      nombre_alternativa(alternative),
      formato_num(alpha, digitos),
      formato_num(estadistico, digitos),
      formato_num(valor_p, digitos),
      decision_prueba(valor_p, alpha),
      conclusion_prueba(valor_p, alpha)
    ),
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}


# ============================================================
# 6. Prueba Z para diferencia de medias
#    Varianzas poblacionales conocidas
#    H0: mu1 - mu2 = diferencia0
# ============================================================

ph_dif_medias_z <- function(media1, media2,
                            sigma1, sigma2,
                            n1, n2,
                            diferencia0 = 0,
                            alpha = 0.05,
                            alternative = "two.sided",
                            digitos = 4) {
  
  alternative <- validar_alternativa(alternative)
  
  if (sigma1 <= 0 || sigma2 <= 0 || n1 <= 1 || n2 <= 1) {
    stop("Las desviaciones deben ser positivas y los tamaños mayores que 1.")
  }
  
  diferencia <- media1 - media2
  
  error_estandar <- sqrt(
    sigma1^2 / n1 +
      sigma2^2 / n2
  )
  
  estadistico <- (diferencia - diferencia0) / error_estandar
  valor_p <- valor_p_normal(estadistico, alternative)
  
  resultado <- data.frame(
    Medida = c(
      "Media (Muestra 1)",
      "σ (Muestra 1)",
      "n (Muestra 1)",
      "Media (Muestra 2)",
      "σ (Muestra 2)",
      "n (Muestra 2)",
      "Diferencia observada",
      "Diferencia bajo H0",
      "Error estándar",
      "Tipo de prueba",
      "Nivel de significancia",
      "Estadístico Z",
      "p-valor",
      "Decisión",
      "Conclusión"
    ),
    Valor = c(
      formato_num(media1, digitos),
      formato_num(sigma1, digitos),
      n1,
      formato_num(media2, digitos),
      formato_num(sigma2, digitos),
      n2,
      formato_num(diferencia, digitos),
      formato_num(diferencia0, digitos),
      formato_num(error_estandar, digitos),
      nombre_alternativa(alternative),
      formato_num(alpha, digitos),
      formato_num(estadistico, digitos),
      formato_num(valor_p, digitos),
      decision_prueba(valor_p, alpha),
      conclusion_prueba(valor_p, alpha)
    ),
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}


# ============================================================
# 7. Prueba t para diferencia de medias
#    Varianzas desconocidas, pero iguales
#    H0: mu1 - mu2 = diferencia0
# ============================================================

ph_dif_medias_t_si <- function(media1, media2,
                               s1, s2,
                               n1, n2,
                               diferencia0 = 0,
                               alpha = 0.05,
                               alternative = "two.sided",
                               digitos = 4) {
  
  alternative <- validar_alternativa(alternative)
  
  if (s1 <= 0 || s2 <= 0 || n1 <= 1 || n2 <= 1) {
    stop("Las desviaciones deben ser positivas y los tamaños mayores que 1.")
  }
  
  diferencia <- media1 - media2
  gl <- n1 + n2 - 2
  
  varianza_combinada <- (
    (n1 - 1) * s1^2 +
      (n2 - 1) * s2^2
  ) / gl
  
  s_combinada <- sqrt(varianza_combinada)
  
  error_estandar <- s_combinada *
    sqrt(1 / n1 + 1 / n2)
  
  estadistico <- (diferencia - diferencia0) / error_estandar
  valor_p <- valor_p_t(estadistico, gl, alternative)
  
  resultado <- data.frame(
    Medida = c(
      "Media (Muestra 1)",
      "s (Muestra 1)",
      "n (Muestra 1)",
      "Media (Muestra 2)",
      "s (Muestra 2)",
      "n (Muestra 2)",
      "Diferencia observada",
      "Diferencia bajo H0",
      "Varianza combinada",
      "Desviación combinada",
      "Grados de libertad",
      "Error estándar",
      "Tipo de prueba",
      "Nivel de significancia",
      "Estadístico t",
      "p-valor",
      "Decisión",
      "Conclusión"
    ),
    Valor = c(
      formato_num(media1, digitos),
      formato_num(s1, digitos),
      n1,
      formato_num(media2, digitos),
      formato_num(s2, digitos),
      n2,
      formato_num(diferencia, digitos),
      formato_num(diferencia0, digitos),
      formato_num(varianza_combinada, digitos),
      formato_num(s_combinada, digitos),
      gl,
      formato_num(error_estandar, digitos),
      nombre_alternativa(alternative),
      formato_num(alpha, digitos),
      formato_num(estadistico, digitos),
      formato_num(valor_p, digitos),
      decision_prueba(valor_p, alpha),
      conclusion_prueba(valor_p, alpha)
    ),
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}


# ============================================================
# 8. Prueba t de Welch para diferencia de medias
#    Varianzas desconocidas y diferentes
#    H0: mu1 - mu2 = diferencia0
# ============================================================

ph_dif_medias_t_no <- function(media1, media2,
                               s1, s2,
                               n1, n2,
                               diferencia0 = 0,
                               alpha = 0.05,
                               alternative = "two.sided",
                               digitos = 4) {
  
  alternative <- validar_alternativa(alternative)
  
  if (s1 <= 0 || s2 <= 0 || n1 <= 1 || n2 <= 1) {
    stop("Las desviaciones deben ser positivas y los tamaños mayores que 1.")
  }
  
  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)
    )
  
  estadistico <- (diferencia - diferencia0) / error_estandar
  valor_p <- valor_p_t(estadistico, gl, alternative)
  
  resultado <- data.frame(
    Medida = c(
      "Media (Muestra 1)",
      "s (Muestra 1)",
      "n (Muestra 1)",
      "Media (Muestra 2)",
      "s (Muestra 2)",
      "n (Muestra 2)",
      "Diferencia observada",
      "Diferencia bajo H0",
      "Grados de libertad",
      "Error estándar",
      "Tipo de prueba",
      "Nivel de significancia",
      "Estadístico t",
      "p-valor",
      "Decisión",
      "Conclusión"
    ),
    Valor = c(
      formato_num(media1, digitos),
      formato_num(s1, digitos),
      n1,
      formato_num(media2, digitos),
      formato_num(s2, digitos),
      n2,
      formato_num(diferencia, digitos),
      formato_num(diferencia0, digitos),
      formato_num(gl, digitos),
      formato_num(error_estandar, digitos),
      nombre_alternativa(alternative),
      formato_num(alpha, digitos),
      formato_num(estadistico, digitos),
      formato_num(valor_p, digitos),
      decision_prueba(valor_p, alpha),
      conclusion_prueba(valor_p, alpha)
    ),
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}


# ============================================================
# 9. Prueba Z para diferencia de proporciones
#    H0: p1 - p2 = 0
# ============================================================

ph_dif_proporciones <- function(exitos1, n1,
                                exitos2, n2,
                                alpha = 0.05,
                                alternative = "two.sided",
                                digitos = 4) {
  
  alternative <- validar_alternativa(alternative)
  
  if (exitos1 < 0 || exitos1 > n1 ||
      exitos2 < 0 || exitos2 > n2) {
    stop("Los números de éxitos deben estar entre 0 y n.")
  }
  
  p1 <- exitos1 / n1
  p2 <- exitos2 / n2
  diferencia <- p1 - p2
  
  proporcion_combinada <- (exitos1 + exitos2) / (n1 + n2)
  
  error_estandar <- sqrt(
    proporcion_combinada *
      (1 - proporcion_combinada) *
      (1 / n1 + 1 / n2)
  )
  
  estadistico <- diferencia / error_estandar
  valor_p <- valor_p_normal(estadistico, alternative)
  
  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 observada",
      "Proporción combinada",
      "ES bajo H0",
      "Tipo de prueba",
      "Nivel de significancia",
      "Estadístico Z",
      "p-valor",
      "Decisión",
      "Conclusión"
    ),
    Valor = c(
      exitos1,
      n1,
      formato_num(p1, digitos),
      exitos2,
      n2,
      formato_num(p2, digitos),
      formato_num(diferencia, digitos),
      formato_num(proporcion_combinada, digitos),
      formato_num(error_estandar, digitos),
      nombre_alternativa(alternative),
      formato_num(alpha, digitos),
      formato_num(estadistico, digitos),
      formato_num(valor_p, digitos),
      decision_prueba(valor_p, alpha),
      conclusion_prueba(valor_p, alpha)
    ),
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}


# ============================================================
# 10. Prueba F para la razón de varianzas
#     H0: sigma1^2 / sigma2^2 = razon0
# ============================================================

ph_razon_varianzas <- function(varianza1, varianza2,
                               n1, n2,
                               razon0 = 1,
                               alpha = 0.05,
                               alternative = "two.sided",
                               digitos = 4) {
  
  alternative <- validar_alternativa(alternative)
  
  if (varianza1 <= 0 || varianza2 <= 0 || razon0 <= 0) {
    stop("Las varianzas y la razón bajo H0 deben ser positivas.")
  }
  
  gl1 <- n1 - 1
  gl2 <- n2 - 1
  
  razon_muestral <- varianza1 / varianza2
  estadistico <- razon_muestral / razon0
  valor_p <- valor_p_f(estadistico, gl1, gl2, alternative)
  
  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 muestral",
      "Razón bajo H0",
      "Tipo de prueba",
      "Nivel de significancia",
      "Estadístico F",
      "p-valor",
      "Decisión",
      "Conclusión"
    ),
    Valor = c(
      formato_num(varianza1, digitos),
      n1,
      gl1,
      formato_num(varianza2, digitos),
      n2,
      gl2,
      formato_num(razon_muestral, digitos),
      formato_num(razon0, digitos),
      nombre_alternativa(alternative),
      formato_num(alpha, digitos),
      formato_num(estadistico, digitos),
      formato_num(valor_p, digitos),
      decision_prueba(valor_p, alpha),
      conclusion_prueba(valor_p, alpha)
    ),
    check.names = FALSE
  )
  
  knitr::kable(
    resultado,
    format = "html",
    col.names = c("Medida", "Valor"),
    align = c("l", "r")
  )
}

3 Ejemplos utilizando estadísticas resumidas

En esta sección se presentan ejemplos sencillos a partir de estadísticas resumidas. En todos los casos se utiliza un nivel de significancia de \(\alpha=0.05\).

3.0.1 Prueba para la media (con \(Z\))

Cuando la desviación estándar poblacional (\(\sigma\)) es conocida, se puede usar la distribución normal estándar para evaluar, por ejemplo,

\[ H_0:\ \mu = 3.5 \qquad \text{frente a} \qquad H_1:\ \mu \neq 3.5. \]

resultado <- ph_media_z(
  media = 4,
  sigma = 2,
  n = 100,
  mu0 = 3.5,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media muestral 4
Media bajo H0 3.5
σ 2
n 100
Error estándar 0.2
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z 2.5
p-valor 0.0124
Decisión Rechazar H0
Conclusión Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

3.0.2 Prueba 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 <- ph_media_t(
  media = 4,
  s = 2,
  n = 100,
  mu0 = 3.5,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media muestral 4
Media bajo H0 3.5
s 2
n 100
Grados de libertad 99
Error estándar 0.2
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico t 2.5
p-valor 0.0141
Decisión Rechazar H0
Conclusión Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

3.0.3 Prueba para la proporción

Se desea determinar si la proporción poblacional de éxitos es diferente de 0.25.

resultado <- ph_proporcion(
  exitos = 35,
  n = 100,
  p0 = 0.25,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Éxitos 35
n 100
Proporción muestral 0.35
Proporción bajo H0 0.25
ES bajo H0 0.0433
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z 2.3094
p-valor 0.0209
Decisión Rechazar H0
Conclusión Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

3.0.4 Prueba para la varianza

Se evalúa si la varianza poblacional es igual a 16.

resultado <- ph_varianza(
  varianza = 25,
  n = 30,
  varianza0 = 16,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Varianza muestral 25
Varianza bajo H0 16
n 30
Grados de libertad 29
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico chi-cuadrada 45.3125
p-valor 0.0549
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

3.0.5 Prueba para la diferencia de medias (con \(Z\))

Se contrasta la igualdad de las medias poblacionales.

La diferencia se calcula en el orden:

\[ \text{Grupo 1}-\text{Grupo 2}. \]

resultado <- ph_dif_medias_z(
  media1 = 45,
  media2 = 40,
  sigma1 = 8,
  sigma2 = 10,
  n1 = 50,
  n2 = 60,
  diferencia0 = 0,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media (Muestra 1) 45
σ (Muestra 1) 8
n (Muestra 1) 50
Media (Muestra 2) 40
σ (Muestra 2) 10
n (Muestra 2) 60
Diferencia observada 5
Diferencia bajo H0 0
Error estándar 1.7166
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z 2.9128
p-valor 0.0036
Decisión Rechazar H0
Conclusión Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

3.0.6 Prueba 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 <- ph_dif_medias_t_si(
  media1 = 45,
  media2 = 40,
  s1 = 8,
  s2 = 7,
  n1 = 30,
  n2 = 35,
  diferencia0 = 0,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media (Muestra 1) 45
s (Muestra 1) 8
n (Muestra 1) 30
Media (Muestra 2) 40
s (Muestra 2) 7
n (Muestra 2) 35
Diferencia observada 5
Diferencia bajo H0 0
Varianza combinada 55.9048
Desviación combinada 7.4769
Grados de libertad 63
Error estándar 1.8603
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico t 2.6877
p-valor 0.0092
Decisión Rechazar H0
Conclusión Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

3.0.7 Prueba para la diferencia de medias (con \(t\), varianzas desconocidas y diferentes)

Si no es razonable asumir igualdad de varianzas, se utiliza la prueba de Welch.

La diferencia se calcula en el orden:

\[ \text{Grupo 1}-\text{Grupo 2}. \]

resultado <- ph_dif_medias_t_no(
  media1 = 45,
  media2 = 40,
  s1 = 8,
  s2 = 12,
  n1 = 30,
  n2 = 35,
  diferencia0 = 0,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media (Muestra 1) 45
s (Muestra 1) 8
n (Muestra 1) 30
Media (Muestra 2) 40
s (Muestra 2) 12
n (Muestra 2) 35
Diferencia observada 5
Diferencia bajo H0 0
Grados de libertad 59.6104
Error estándar 2.4995
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico t 2.0004
p-valor 0.05
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

3.0.8 Prueba para la diferencia de proporciones

Este ejemplo se evalúa si las dos proporciones poblacionales son iguales..

La diferencia se calcula en el orden:

\[ \text{Grupo 1}-\text{Grupo 2}. \]

resultado <- ph_dif_proporciones(
  exitos1 = 5,
  n1 = 100,
  exitos2 = 7,
  n2 = 150,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Éxitos (Muestra 1) 5
n (Muestra 1) 100
Proporción (Muestra 1) 0.05
Éxitos (Muestra 2) 7
n (Muestra 2) 150
Proporción (Muestra 2) 0.0467
Diferencia observada 0.0033
Proporción combinada 0.048
ES bajo H0 0.0276
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z 0.1208
p-valor 0.9039
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

3.0.9 Prueba para la razón de varianzas

Se evalúa si las dos varianzas poblacionales son iguales.

La razón se calcula en el orden:

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

resultado <- ph_razon_varianzas(
  varianza1 = 16,
  varianza2 = 9,
  n1 = 20,
  n2 = 25,
  razon0 = 1,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Varianza (Muestra 1) 16
n (Muestra 1) 20
Grados de libertad (Muestra 1) 19
Varianza (Muestra 2) 9
n (Muestra 2) 25
Grados de libertad (Muestra 2) 24
Razón muestral 1.7778
Razón bajo H0 1
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico F 1.7778
p-valor 0.1828
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

4 Ejemplos utilizando un data frame simulado

En esta sección se utiliza el mismo data frame sencillo construido manualmente en las notas de intervalos de confianza.

4.0.1 Construcción del data frame

El siguiente código crea un data frame con dos variables cuantitativas (x e y), una variable dicotómica (exito) 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)
)

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

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

exito <- c(
  1,1,0,1,0,1,1,0,1,1,
  0,1,0,0,1,0,1,0,1,0
)

datos <- data.frame(
  grupo,
  x,
  y,
  exito
)

datos
##      grupo  x  y exito
## 1  Grupo 1 72 38     1
## 2  Grupo 1 68 42     1
## 3  Grupo 1 75 41     0
## 4  Grupo 1 70 39     1
## 5  Grupo 1 73 40     0
## 6  Grupo 1 71 37     1
## 7  Grupo 1 69 43     1
## 8  Grupo 1 74 40     0
## 9  Grupo 1 70 39     1
## 10 Grupo 1 72 41     1
## 11 Grupo 2 65 35     0
## 12 Grupo 2 63 37     1
## 13 Grupo 2 67 34     0
## 14 Grupo 2 69 36     0
## 15 Grupo 2 64 38     1
## 16 Grupo 2 66 35     0
## 17 Grupo 2 62 39     1
## 18 Grupo 2 68 37     0
## 19 Grupo 2 65 36     1
## 20 Grupo 2 67 34     0

La variable grupo identifica las dos muestras; x y y son cuantitativas, mientras que exito toma los valores \(1\) para éxito y \(0\) para fracaso.

4.0.2 Prueba 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_x <- mean(datos$x)
n_x <- length(datos$x)

# Realiza la prueba
resultado <- ph_media_z(
  media = media_x,
  sigma = 9,
  n = n_x,
  mu0 = 68,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media muestral 68.5
Media bajo H0 68
σ 9
n 20
Error estándar 2.0125
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z 0.2485
p-valor 0.8038
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

4.0.3 Prueba para la media (con \(t\))

Como normalmente la desviación estándar poblacional es desconocida, se estima mediante la desviación estándar muestral de \(x\).

# Calcula media y tamaño
media_x <- mean(datos$x)
s_x <- sd(datos$x)
n_x <- length(datos$x)

# Realiza la prueba
resultado <- ph_media_t(
  media = media_x,
  s = s_x,
  n = n_x,
  mu0 = 68,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media muestral 68.5
Media bajo H0 68
s 3.6778
n 20
Grados de libertad 19
Error estándar 0.8224
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico t 0.608
p-valor 0.5504
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

4.0.4 Prueba para una proporción

En este caso, un valor igual a \(1\) en la variable exito representa un éxito. La suma 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
exitos <- sum(datos$exito)
n <- length(datos$exito)

# Realiza la prueba
resultado <- ph_proporcion(
  exitos = exitos,
  n = n,
  p0 = 0.50,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Éxitos 11
n 20
Proporción muestral 0.55
Proporción bajo H0 0.5
ES bajo H0 0.1118
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z 0.4472
p-valor 0.6547
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

4.0.5 Prueba para la varianza

Se evalúa si la varianza poblacional de \(x\) es igual a 20.

# Calcula varianza y tamaño
varianza_x <- var(datos$x)
n_x <- length(datos$x)

# Realiza la prueba
resultado <- ph_varianza(
  varianza = varianza_x,
  n = n_x,
  varianza0 = 20,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Varianza muestral 13.5263
Varianza bajo H0 20
n 20
Grados de libertad 19
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico chi-cuadrada 12.85
p-valor 0.3077
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

4.0.6 Preparación de las dos muestras

Para comparar las medias de los dos grupos, primero se separan los valores de la variable x 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 x correspondientes a cada uno de los grupos
x1 <- datos$x[datos$grupo == "Grupo 1"]
x2 <- datos$x[datos$grupo == "Grupo 2"]

# Calcula media, desviación y tamaño
media1 <- mean(x1)
media2 <- mean(x2)

s1 <- sd(x1)
s2 <- sd(x2)

n1 <- length(x1)
n2 <- length(x2)

4.0.7 Prueba para la diferencia de medias con \(Z\)

Se evalúa si las medias poblacionales son iguales, suponiendo conocidas las desviaciones estándar poblacionales.

La diferencia se calcula en el orden:

\[ \text{Grupo 1}-\text{Grupo 2}. \]

resultado <- ph_dif_medias_z(
  media1 = media1,
  media2 = media2,
  sigma1 = 8,
  sigma2 = 10,
  n1 = n1,
  n2 = n2,
  diferencia0 = 0,
  alpha = 0.05,
  alternative = "two.sided"
)

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 observada 5.8
Diferencia bajo H0 0
Error estándar 4.0497
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z 1.4322
p-valor 0.1521
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

4.0.8 Prueba para la diferencia de medias (con \(t\), varianzas iguales)

Este procedimiento utiliza una varianza combinada y supone que las dos poblaciones tienen la misma varianza.

La diferencia se calcula en el orden:

\[ \text{Grupo 1}-\text{Grupo 2}. \]

resultado <- ph_dif_medias_t_si(
  media1 = media1,
  media2 = media2,
  s1 = s1,
  s2 = s2,
  n1 = n1,
  n2 = n2,
  diferencia0 = 0,
  alpha = 0.05,
  alternative = "two.sided"
)

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 observada 5.8
Diferencia bajo H0 0
Varianza combinada 4.9333
Desviación combinada 2.2211
Grados de libertad 18
Error estándar 0.9933
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico t 5.8391
p-valor 0
Decisión Rechazar H0
Conclusión Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

4.0.9 Prueba para la diferencia de medias (con \(t\), varianzas 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 <- ph_dif_medias_t_no(
  media1 = media1,
  media2 = media2,
  s1 = s1,
  s2 = s2,
  n1 = n1,
  n2 = n2,
  diferencia0 = 0,
  alpha = 0.05,
  alternative = "two.sided"
)

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 observada 5.8
Diferencia bajo H0 0
Grados de libertad 18
Error estándar 0.9933
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico t 5.8391
p-valor 0
Decisión Rechazar H0
Conclusión Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

4.0.10 Prueba para la diferencia de proporciones

Se evalúa si la proporción de éxitos es igual en los dos grupos.

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
exitos1 <- sum(datos$exito[datos$grupo == "Grupo 1"])
exitos2 <- sum(datos$exito[datos$grupo == "Grupo 2"])

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

# Realiza la prueba
resultado <- ph_dif_proporciones(
  exitos1 = exitos1,
  n1 = n1,
  exitos2 = exitos2,
  n2 = n2,
  alpha = 0.05,
  alternative = "two.sided"
)

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 observada 0.3
Proporción combinada 0.55
ES bajo H0 0.2225
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z 1.3484
p-valor 0.1775
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

4.0.11 Prueba para la razón de varianzas

Se evalúa si las varianzas poblacionales de x son iguales en los dos grupos.

La razón se calcula en el orden:

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

# Calcula las varianzas  para cada uno de los dos grupos
var_g1 <- var(x1)
var_g2 <- var(x2)

# Se calcula el tamaño muestral de cada grupo.
n_g1 <- length(x1)
n_g2 <- length(x2)

# Realiza la prueba
resultado <- ph_razon_varianzas(
  varianza1 = var_g1,
  varianza2 = var_g2,
  n1 = n_g1,
  n2 = n_g2,
  razon0 = 1,
  alpha = 0.05,
  alternative = "two.sided"
)

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 muestral 1
Razón bajo H0 1
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico F 1
p-valor 1
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

5 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.

5.0.1 Nuestro data frame

Para acceder a la base de datos, hacemos:

datosCompleto <- lsm::survey

dim(datosCompleto)
## [1] 800  66
df <- datosCompleto[1:100,]

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.

Antes de continuar, se verifican los niveles observados.

unique(df$Gender)
## [1] "Female" "Male"
unique(df$School)
## [1] "Private" "Public"

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

Para ilustrar el procedimiento con \(Z\), se evalúa si la edad media poblacional es igual a 20 años, suponiendo conocida una desviación estándar poblacional de 6 años.

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

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

# Realiza la prueba
resultado <- ph_media_z(
  media = media_edad,
  sigma = 6,
  n = n_edad,
  mu0 = 20,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media muestral 18.9374
Media bajo H0 20
σ 6
n 100
Error estándar 0.6
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z -1.771
p-valor 0.0766
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

5.0.3 Prueba 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. En este ejemplo, se evalúa la misma hipótesis utilizando la desviación estándar muestral.

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

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

# Realiza la prueba
resultado <- ph_media_t(
  media = media_edad,
  s = s_edad,
  n = n_edad,
  mu0 = 20,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media muestral 18.9374
Media bajo H0 20
s 2.0203
n 100
Grados de libertad 99
Error estándar 0.202
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico t -5.2596
p-valor 0
Decisión Rechazar H0
Conclusión Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

5.0.4 Prueba para una proporción

En este ejemplo se evalúa si la proporción poblacional de estudiantes de género Female es igual a 0.50.

Para ello, 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 <- df$Gender[!is.na(df$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)

# Realiza la prueba
resultado <- ph_proporcion(
  exitos = total_fem,
  n = n_fem,
  p0 = 0.50,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Éxitos 49
n 100
Proporción muestral 0.49
Proporción bajo H0 0.5
ES bajo H0 0.05
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z -0.2
p-valor 0.8415
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

5.0.5 Prueba para la varianza

Se evalúa si la varianza poblacional de las edades es igual a 16. La varianza muestral de la variable Age se utiliza para estimar la varianza poblacional de las edades.

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

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

# Realiza la prueba
resultado <- ph_varianza(
  varianza = varianza_edad,
  n = n_edad,
  varianza0 = 16,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Varianza muestral 4.0816
Varianza bajo H0 16
n 100
Grados de libertad 99
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico chi-cuadrada 25.2547
p-valor 0
Decisión Rechazar H0
Conclusión Existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

5.0.6 Preparación de las dos muestras

Para comparar estudiantes procedentes de colegios privados y públicos, se extraen las edades correspondientes a los niveles Private y Public de la variable School.

# Tome la variable Age, elimine las observaciones donde la edad sea NA, elimine las observaciones donde School sea NA y conserve únicamente aquellas cuyo colegio sea Private.
edad_private <- df$Age[
  !is.na(df$Age) &
  !is.na(df$School) &
  df$School == "Private"
]

# Tome la variable Age, elimine las observaciones donde la edad sea NA, elimine las observaciones donde School sea NA y conserve únicamente aquellas cuyo colegio sea Public.
edad_public <- df$Age[
  !is.na(df$Age) &
  !is.na(df$School) &
  df$School == "Public"
]

# Calcular media, desviación y tamaño para cada grupo
media_private <- mean(edad_private)
media_public <- mean(edad_public)

s_private <- sd(edad_private)
s_public <- sd(edad_public)

n_private <- length(edad_private)
n_public <- length(edad_public)

5.0.7 Prueba 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{Private}-\text{Public}. \]

Para ilustrar el procedimiento con \(Z\), se supondrán conocidas desviaciones estándar poblacionales iguales a \(6\) años.

resultado <- ph_dif_medias_z(
  media1 = media_private,
  media2 = media_public,
  sigma1 = 6,
  sigma2 = 6,
  n1 = n_private,
  n2 = n_public,
  diferencia0 = 0,
  alpha = 0.05,
  alternative = "two.sided"
)

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 observada 0.2936
Diferencia bajo H0 0
Error estándar 1.2
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z 0.2447
p-valor 0.8067
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

5.0.8 Prueba para la diferencia de medias (con \(t\), varianzas 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{Private}-\text{Public}. \]

resultado <- ph_dif_medias_t_si(
  media1 = media_private,
  media2 = media_public,
  s1 = s_private,
  s2 = s_public,
  n1 = n_private,
  n2 = n_public,
  diferencia0 = 0,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media (Muestra 1) 19.0842
s (Muestra 1) 2.1949
n (Muestra 1) 50
Media (Muestra 2) 18.7906
s (Muestra 2) 1.8398
n (Muestra 2) 50
Diferencia observada 0.2936
Diferencia bajo H0 0
Varianza combinada 4.1012
Desviación combinada 2.0251
Grados de libertad 98
Error estándar 0.405
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico t 0.7249
p-valor 0.4702
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

5.0.9 Prueba para la diferencia de medias (con \(t\), varianzas 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{Private}-\text{Public}. \]

resultado <- ph_dif_medias_t_no(
  media1 = media_private,
  media2 = media_public,
  s1 = s_private,
  s2 = s_public,
  n1 = n_private,
  n2 = n_public,
  diferencia0 = 0,
  alpha = 0.05,
  alternative = "two.sided"
)

resultado
Medida Valor
Media (Muestra 1) 19.0842
s (Muestra 1) 2.1949
n (Muestra 1) 50
Media (Muestra 2) 18.7906
s (Muestra 2) 1.8398
n (Muestra 2) 50
Diferencia observada 0.2936
Diferencia bajo H0 0
Grados de libertad 95.0978
Error estándar 0.405
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico t 0.7249
p-valor 0.4703
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

5.0.10 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, se conservan únicamente las observaciones con información válida en Gender y School.

# Conserve únicamente las observaciones que tengan información en Gender, tengan información en School y cuyo tipo de colegio sea Private o Public
datos_genero <- df[
  !is.na(df$Gender) &
  !is.na(df$School) &
  df$School %in% c("Private", "Public"),
]

# Extraiga la variable Gender de todos los estudiantes cuyo colegio sea Private
genero_private <- datos_genero$Gender[datos_genero$School == "Private"]

# Extraiga la variable Gender de todos los estudiantes cuyo colegio sea Public
genero_public <- datos_genero$Gender[datos_genero$School == "Public"]

# Cuente cuántos estudiantes de género Female hay en cada grupo
exitos_private <- sum(genero_private == "Female")
exitos_public <- sum(genero_public == "Female")

# Tamaño muestral de cada grupo contando el número de observaciones que contiene cada vector
n_private_genero <- length(genero_private)
n_public_genero <- length(genero_public)

5.0.11 Prueba 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{Private}-\text{Public}. \]

resultado <- ph_dif_proporciones(
  exitos1 = exitos_private,
  n1 = n_private_genero,
  exitos2 = exitos_public,
  n2 = n_public_genero,
  alpha = 0.05,
  alternative = "two.sided"
)

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 observada 0.06
Proporción combinada 0.49
ES bajo H0 0.1
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico Z 0.6001
p-valor 0.5484
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

5.0.12 Prueba para la razón de varianzas

Se compara la variabilidad de las edades entre los estudiantes procedentes de colegios privados y públicos. En este caso, se evalúa si las varianzas poblacionales de las edades son iguales.

La razón se calcula en el orden:

\[ \frac{\text{Private}} {\text{Public}}. \]

# Calcula varianzas
varianza_private <- var(edad_private)
varianza_public <- var(edad_public)


resultado <- ph_razon_varianzas(
  varianza1 = varianza_private,
  varianza2 = varianza_public,
  n1 = n_private,
  n2 = n_public,
  razon0 = 1,
  alpha = 0.05,
  alternative = "two.sided"
)

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 muestral 1.4233
Razón bajo H0 1
Tipo de prueba Bilateral
Nivel de significancia 0.05
Estadístico F 1.4233
p-valor 0.2202
Decisión No rechazar H0
Conclusión No existe evidencia estadística suficiente, al nivel α = 0.05, para apoyar H1

6 Actividad práctica

6.0.1 Tema

Pruebas de hipótesis para uno y dos parámetros.

6.0.2 Objetivo

Aplicar los procedimientos estudiados para formular, ejecutar e interpretar pruebas de hipótesis para uno y dos parámetros poblacionales utilizando un conjunto de datos real.

6.0.3 Base de datos

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

6.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.

6.0.5 Actividades

  1. Conociendo la base de datos

    Responda las siguientes preguntas:

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

    2. ¿Cuántas variables contiene?

    3. Muestre los nombres de todas las variables.

    4. Seleccione:

      • una variable cuantitativa que utilizará con el fin de realizar pruebas para la media y la varianza;

      • una variable dicotómica que utilizará con el fin de realizar pruebas para una proporción;

      • una variable categórica con exactamente dos niveles que utilizará para comparar dos poblaciones.

    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 Muestra con más de 100 observaciones seleccionadas de la base de datos.

    2. Todas las estimaciones realizadas en la actividad deberán calcularse utilizando únicamente esta muestra.

  1. Intervalos de confianza para un parámetro

    Utilizando la muestra seleccionada, realice:

    1. una prueba \(Z\) para la media suponiendo conocida la desviación estándar poblacional.

    2. una prueba \(t\) para la media suponiendo desconocida la desviación estándar poblacional.

    3. una prueba para una proporción.

    4. una prueba para una varianza.

    Para cada prueba:

    • plantee \(H_0\) y \(H_1\);

    • indique el nivel de significancia utilizado;

    • justifique el valor propuesto bajo \(H_0\);

    • presente el estadístico y el p-valor;

    • tome una decisión;

    • redacte una conclusión contextualizada.

  1. Preparación de los dos grupos

    Utilizando la variable categórica seleccionada:

    1. construya dos subconjuntos correspondientes a cada uno de sus niveles;

    2. obtenga todas las estadísticas resumidas necesarias para realizar la pruebas solicitadas en la siguiente sección.

  1. Pruebas para dos parámetros

    Utilizando los dos grupos definidos anteriormente, realice:

    1. una prueba \(Z\) para la diferencia de medias suponiendo conocidas las desviaciones estándar poblacionales.

    2. una prueba \(t\) para la diferencia de medias suponiendo varianzas desconocidas e iguales.

    3. una prueba para la diferencia de medias suponiendo varianzas desconocidas y diferentes.

    4. una prueba para la diferencia de proporciones.

    5. una prueba para la razón de varianzas.

    Para cada prueba:

    • plantee \(H_0\) y \(H_1\);

    • indique el nivel de significancia utilizado;

    • justifique el valor propuesto bajo \(H_0\);

    • presente el estadístico y el p-valor;

    • tome una decisión;

    • redacte una conclusión contextualizada.

  1. Comparación entre procedimientos

    Responda las siguientes preguntas:

    1. ¿Qué diferencias observa entre las pruebas \(Z\) y \(t\) para una media?

    2. ¿Los resultadoss obtenidos mediante los dos procedimientos para la diferencia de medias fueron similares? Explique.

    3. ¿Qué información aporta el resultado obtenido para la razón de varianzas?

  1. Conclusión

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

    Entre otros aspectos, responda:

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

    2. ¿Qué diferencias encontró entre trabajar con estadísticas resumidas y calcularlas directamente desde una base de datos?

    3. ¿Qué limitaciones presentan los análisis realizados?

6.0.6 Recomendaciones

  • Todas las hipótesis deben escribirse con notación estadística.

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

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

  • Todas las decisiones deben justificarse mediante el p-valor y el nivel de significancia.

  • No escriba “se acepta \(H_0\)”; utilice “no se rechaza \(H_0\)”.

  • Muestre el código utilizado para obtener las estadísticas resumidas antes de realizar cada prueba.

  • Justifique cualquier supuesto realizado (por ejemplo, la desviación estándar poblacional utilizada en los procedimientos con el estadístico \(Z\)).

  • 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.