05/09/26
Abstract
La teoría mencionada puede revisarse en el TEXTO GUÍA o en la BIBLIOGRAFÍA COMPLEMENTARIA. En Rpubs:: toc se pueden ver otros documentos de posible interés.
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
La siguiente tabla resume las funciones desarrolladas para construir los intervalos de confianza y señala el procedimiento estadístico correspondiente.
| Función | Descripción |
|---|---|
|
Intervalo Z para una media cuando la desviación estándar poblacional σ es conocida. |
|
Intervalo t para una media cuando la desviación estándar poblacional es desconocida y se utiliza la desviación estándar muestral s. |
|
Intervalo Z para estimar una proporción poblacional. |
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")
)
}
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.
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 |
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 |
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 |
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.
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
| grupo | puntaje | edad | fumador |
|---|---|---|---|
| Grupo 1 | 72 | 38 | Sí |
| Grupo 1 | 68 | 42 | Sí |
| Grupo 1 | 75 | 41 | No |
| Grupo 1 | 70 | 39 | Sí |
| Grupo 1 | 73 | 40 | No |
| Grupo 1 | 71 | 37 | Sí |
| Grupo 1 | 69 | 43 | Sí |
| Grupo 1 | 74 | 40 | No |
| Grupo 1 | 70 | 39 | Sí |
| Grupo 1 | 72 | 41 | Sí |
| Grupo 2 | 65 | 35 | No |
| Grupo 2 | 63 | 37 | Sí |
| Grupo 2 | 67 | 34 | No |
| Grupo 2 | 69 | 36 | No |
| Grupo 2 | 64 | 38 | Sí |
| Grupo 2 | 66 | 35 | No |
| Grupo 2 | 62 | 39 | Sí |
| Grupo 2 | 68 | 37 | No |
| Grupo 2 | 65 | 36 | Sí |
| 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.
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 |
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 |
En este caso, un valor igual a Sí 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 |
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.
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.
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)
unique(df$School)
## Niveles de Gender: Female Male
## Niveles de School: Private Public
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 |
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 |
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 |
Intervalos de confianza para un parámetro.
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.
Utilice el conjunto de datos survey del
paquete lsm, el mismo empleado durante las
clases.
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.
Conociendo la base de datos
Responda las siguientes preguntas:
¿Cuántas observaciones tiene su nueva base de datos?
¿Cuántas variables contiene?
Muestre los nombres de todas las variables.
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.
Justifique brevemente la selección realizada.
Importante:
Selección de una muestra
Construya un nuevo data frame denominado
Muestra con más de 100 observaciones
seleccionadas de la base de datos.
Todas las estimaciones realizadas en la actividad deberán calcularse utilizando únicamente esta muestra.
Intervalos de confianza para un parámetro
Utilizando la muestra seleccionada:
Construya un intervalo de confianza para la media suponiendo conocida la desviación estándar poblacional.
Construya un intervalo de confianza para la media suponiendo desconocida la desviación estándar poblacional.
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.).
Comparación entre procedimientos
Responda, adicionalmente, las siguientes preguntas:
¿Qué diferencias observa entre los intervalos construidos con las distribuciones \(Z\) y \(t\)?
¿Los intervalos obtenidos mediante los dos procedimientos para la diferencia de medias fueron similares? Explique.
¿Qué información aporta el intervalo para la razón de varianzas?
Conclusión
Escriba una conclusión de dos o tres párrafos donde analice los principales resultados obtenidos.
Entre otros aspectos, responda:
¿Qué conclusiones pueden obtenerse sobre la población a partir de los intervalos construidos?
¿Qué diferencias encontró entre trabajar con estadísticas resumidas y calcularlas directamente desde una base de datos?
¿Qué limitaciones presentan los intervalos de confianza obtenidos?
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.
RStudio, R Markdown y R (por lo menos, el capítulo 1): Click derecho aquí.
Lineamientos (actividades de análisis de datos): Click derecho aquí.
Tablas estadísticas: Click derecho aquí.
Tabla de supuestos: Click derecho aquí.
LLinás, H., Rojas, C. (2005). Estadística descriptiva y distribuciones de probabilidad. Barranquilla: Editorial Universidad del Norte.
Consultar mis notas de clase: Estadística inferencial
Consultar el documento RPubs :: Enlace y materiales de ayuda.
Agresti, A., Franklin, C., & Klingenberg, B. (2018). Statistics: The Art and Science of Learning from Data, 4/E.
Puede consultarse mis siguientes documentos:
If you found any ERRORS or have SUGGESTIONS, please report them to my email. Thanks.