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 y se utiliza la desviación estándar muestral s.
  1. ic_proporcion()
Intervalo Z para estimar una proporción poblacional.

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 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 = 4,
  sigma = 2,
  n = 100,
  conf = 0.95
)

resultado
Medida Valor
Media 4
σ 2
Error estándar 0.2
n 100
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 0.392
Extremo inferior 3.608
Extremo superior 4.392
Intervalo 4 ± 0.392

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 = 4,
  s = 2,
  n = 100,
  conf = 0.95
)

resultado
Medida Valor
Media 4
s 2
Error estándar 0.2
n 100
Grados de libertad 99
Grado de confianza 0.95
Valor crítico 1.9842
Margen de error 0.3968
Extremo inferior 3.6032
Extremo superior 4.3968
Intervalo 4 ± 0.3968

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 = 35,
  n = 100,
  conf = 0.95
)

resultado
Medida Valor
Éxitos 35
n 100
Proporción 0.35
Error estándar 0.0477
Grado de confianza 0.95
Valor crítico 1.96
Margen de error 0.0935
Extremo inferior 0.2565
Extremo superior 0.4435
Intervalo 0.35 ± 0.0935

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

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
df <- datosCompleto[1:100,]

# Dimensión de las dos bases de datos (observaciones, variables)
dim(datosCompleto)
dim(df)
## Dimensión de la base de datos original: 800 observaciones y 66 variables.
## Dimensión del data frame utilizado en los ejemplos: 100 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(df$Gender)
unique(df$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 <- df$Age[!is.na(df$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 <- df$Age[!is.na(df$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 18.9374
s 2.0203
Error estándar 0.202
n 100
Grados de libertad 99
Grado de confianza 0.95
Valor crítico 1.9842
Margen de error 0.4009
Extremo inferior 18.5365
Extremo superior 19.3383
Intervalo 18.9374 ± 0.4009

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 <- 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)

# 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

7 Proyecto: Intervalos de Confianza

7.0.1 Tema

Intervalos de confianza para un parámetro.

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 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, el mismo 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 nueva base de datos?

    2. ¿Cuántas variables contiene?

    3. Muestre los nombres de todas las variables.

    4. Seleccione:

      • Una variable cuantitativa que utilizará para construir intervalos para la media;

      • Una variable dicotómica que utilizará para construir intervalos para una proporción.

    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 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:

    1. Construya un intervalo de confianza para la media suponiendo conocida la desviación estándar poblacional.

    2. Construya un intervalo de confianza para la media suponiendo desconocida la desviación estándar poblacional.

    3. Construya un intervalo de confianza para una proporción.

    Para cada intervalo:

    • Presente los resultados obtenidos;

    • Explique brevemente qué parámetro poblacional está siendo estimado.

    • Interprete el intervalo en el contexto del problema y cada uno de los outputs obtenidos (error estándar, valor crítico, margen de error, etc.).

    • Escriba todo organizado según la plantilla utilizada en clases (datos, supuestos, conclusión, etc.).

  1. Comparación entre procedimientos

    Responda, adicionalmente, las siguientes preguntas:

    1. ¿Qué diferencias observa entre los intervalos construidos con las distribuciones \(Z\) y \(t\)?

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

    3. ¿Qué información aporta el intervalo 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 intervalos construidos?

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

    3. ¿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 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.