31/07/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 y descargar las librerías que vamos a utilizar.
library(lsm) # Para descargar una base de datos
library(knitr)
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",
"ES",
"n",
"Nivel 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",
"ES",
"n",
"Grados de libertad",
"Nivel 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",
"ES",
"Nivel 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",
"Nivel 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",
"ES",
"Nivel 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",
"ES",
"Nivel 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",
"ES",
"Nivel 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",
"ES",
"Nivel 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",
"Nivel 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")
)
}
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 |
| ES | 0.2 |
| n | 100 |
| Nivel 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 |
| ES | 0.2 |
| n | 100 |
| Grados de libertad | 99 |
| Nivel 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 |
| ES | 0.0477 |
| Nivel 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 |
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 (\(\ch^2\)).
resultado <- ic_varianza(
varianza = 25,
n = 30,
conf = 0.95
)
resultado
| Medida | Valor |
|---|---|
| Varianza muestral | 25 |
| n | 30 |
| Grados de libertad | 29 |
| Nivel de confianza | 0.95 |
| Cuantil inferior | 16.0471 |
| Cuantil superior | 45.7223 |
| Extremo inferior | 15.8566 |
| Extremo superior | 45.1796 |
| Intervalo | (15.8566, 45.1796) |
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 = 45,
media2 = 40,
sigma1 = 8,
sigma2 = 10,
n1 = 50,
n2 = 60,
conf = 0.95
)
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 estimada | 5 |
| ES | 1.7166 |
| Nivel de confianza | 0.95 |
| Valor crítico | 1.96 |
| Margen de error | 3.3644 |
| Extremo inferior | 1.6356 |
| Extremo superior | 8.3644 |
| Intervalo | 5 ± 3.3644 |
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 = 45,
media2 = 40,
s1 = 8,
s2 = 7,
n1 = 30,
n2 = 35,
conf = 0.95
)
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 estimada | 5 |
| Varianza combinada | 55.9048 |
| Desviación combinada | 7.4769 |
| Grados de libertad | 63 |
| ES | 1.8603 |
| Nivel de confianza | 0.95 |
| Valor crítico | 1.9983 |
| Margen de error | 3.7175 |
| Extremo inferior | 1.2825 |
| Extremo superior | 8.7175 |
| Intervalo | 5 ± 3.7175 |
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 = 45,
media2 = 40,
s1 = 8,
s2 = 12,
n1 = 30,
n2 = 35,
conf = 0.95
)
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 estimada | 5 |
| Grados de libertad | 59.6104 |
| ES | 2.4995 |
| Nivel de confianza | 0.95 |
| Valor crítico | 2.0006 |
| Margen de error | 5.0005 |
| Extremo inferior | -5e-04 |
| Extremo superior | 10.0005 |
| Intervalo | 5 ± 5.0005 |
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 = 5,
n1 = 100,
exitos2 = 7,
n2 = 150,
conf = 0.95
)
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 estimada | 0.0033 |
| ES | 0.0278 |
| Nivel de confianza | 0.95 |
| Valor crítico | 1.96 |
| Margen de error | 0.0544 |
| Extremo inferior | -0.0511 |
| Extremo superior | 0.0578 |
| Intervalo | 0.0033 ± 0.0544 |
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 = 16,
varianza2 = 9,
n1 = 20,
n2 = 25,
conf = 0.95
)
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 de varianzas | 1.7778 |
| Nivel de confianza | 0.95 |
| Valor crítico inferior | 0.4078 |
| Valor crítico superior | 2.3452 |
| Extremo inferior | 0.7581 |
| Extremo superior | 4.3597 |
| Intervalo | (0.7581, 4.3597) |
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 (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.
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\).
media_x <- mean(datos$x)
n_x <- length(datos$x)
resultado <- ic_media_z(
media = media_x,
sigma = 9,
n = n_x,
conf = 0.95
)
resultado
| Medida | Valor |
|---|---|
| Media | 68.5 |
| σ | 9 |
| ES | 2.0125 |
| n | 20 |
| Nivel 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 de \(x\).
media_x <- mean(datos$x)
s_x <- sd(datos$x)
n_x <- length(datos$x)
resultado <- ic_media_t(
media = media_x,
s = s_x,
n = n_x,
conf = 0.95
)
resultado
| Medida | Valor |
|---|---|
| Media | 68.5 |
| s | 3.6778 |
| ES | 0.8224 |
| n | 20 |
| Grados de libertad | 19 |
| Nivel 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 \(1\) en la variable exito representa un éxito. La suma de esta variable proporciona el número total de éxitos.
exitos <- sum(datos$exito)
n <- length(datos$exito)
resultado <- ic_proporcion(
exitos = exitos,
n = n,
conf = 0.95
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 11 |
| n | 20 |
| Proporción | 0.55 |
| ES | 0.1112 |
| Nivel 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 |
La varianza muestral de \(x\) se utiliza para estimar la varianza de la población.
varianza_x <- var(datos$x)
n_x <- length(datos$x)
resultado <- ic_varianza(
varianza = varianza_x,
n = n_x,
conf = 0.95
)
resultado
| Medida | Valor |
|---|---|
| Varianza muestral | 13.5263 |
| n | 20 |
| Grados de libertad | 19 |
| Nivel 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) |
Para comparar los grupos, primero se extraen los valores de \(x\) correspondientes a cada uno.
x1 <- datos$x[
datos$grupo == "Grupo 1"
]
x2 <- datos$x[
datos$grupo == "Grupo 2"
]
media1 <- mean(x1)
media2 <- mean(x2)
s1 <- sd(x1)
s2 <- sd(x2)
n1 <- length(x1)
n2 <- length(x2)
IC 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 = media1,
media2 = media2,
sigma1 = 8,
sigma2 = 10,
n1 = n1,
n2 = n2,
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 |
| ES | 4.0497 |
| Nivel 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 |
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 <- ic_dif_medias_t_si(
media1 = media1,
media2 = media2,
s1 = s1,
s2 = s2,
n1 = n1,
n2 = n2,
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 |
| ES | 0.9933 |
| Nivel 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 |
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 = media1,
media2 = media2,
s1 = s1,
s2 = s2,
n1 = n1,
n2 = n2,
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 |
| ES | 0.9933 |
| Nivel 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 |
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}. \]
exitos1 <- sum(
datos$exito[
datos$grupo == "Grupo 1"
]
)
exitos2 <- sum(
datos$exito[
datos$grupo == "Grupo 2"
]
)
n1 <- sum(datos$grupo == "Grupo 1")
n2 <- sum(datos$grupo == "Grupo 2")
resultado <- ic_dif_proporciones(
exitos1 = exitos1,
n1 = n1,
exitos2 = exitos2,
n2 = n2,
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 |
| ES | 0.2121 |
| Nivel 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 |
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}}. \]
varianza1 <- var(x1)
varianza2 <- var(x2)
resultado <- ic_razon_varianzas(
varianza1 = varianza1,
varianza2 = varianza2,
n1 = length(x1),
n2 = length(x2),
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 |
| Nivel 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) |
En esta sección aplicaremos las funciones definidas anteriormente al
conjunto de datos survey del paquete lsm. Las
estadísticas resumidas se calcularán directamente a partir de las
variables de la base de datos.
Vamos a utilizar 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í).
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.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.
edad <- df$Age[
!is.na(df$Age)
]
media_edad <- mean(edad)
n_edad <- length(edad)
resultado <- ic_media_z(
media = media_edad,
sigma = 6,
n = n_edad,
conf = 0.95
)
resultado
| Medida | Valor |
|---|---|
| Media | 18.9374 |
| σ | 6 |
| ES | 0.6 |
| n | 100 |
| Nivel 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.
edad <- df$Age[
!is.na(df$Age)
]
media_edad <- mean(edad)
s_edad <- sd(edad)
n_edad <- length(edad)
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 |
| ES | 0.202 |
| n | 100 |
| Grados de libertad | 99 |
| Nivel 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.
genero <- df$Gender[
!is.na(df$Gender)
]
exitos <- sum(genero == "Female")
n <- length(genero)
resultado <- ic_proporcion(
exitos = exitos,
n = n,
conf = 0.95
)
resultado
| Medida | Valor |
|---|---|
| Éxitos | 49 |
| n | 100 |
| Proporción | 0.49 |
| ES | 0.05 |
| Nivel 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 |
La varianza muestral de la variable Age se utiliza para
estimar la varianza poblacional de las edades.
edad <- df$Age[
!is.na(df$Age)
]
varianza_edad <- var(edad)
n_edad <- length(edad)
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 |
| Nivel 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) |
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.
edad_private <- df$Age[
df$School == "Private" &
!is.na(df$School) &
!is.na(df$Age)
]
edad_public <- df$Age[
df$School == "Public" &
!is.na(df$School) &
!is.na(df$Age)
]
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)
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 <- ic_dif_medias_z(
media1 = media_private,
media2 = media_public,
sigma1 = 6,
sigma2 = 6,
n1 = n_private,
n2 = n_public,
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 |
| ES | 1.2 |
| Nivel 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 |
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 <- ic_dif_medias_t_si(
media1 = media_private,
media2 = media_public,
s1 = s_private,
s2 = s_public,
n1 = n_private,
n2 = n_public,
conf = 0.95
)
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 estimada | 0.2936 |
| Varianza combinada | 4.1012 |
| Desviación combinada | 2.0251 |
| Grados de libertad | 98 |
| ES | 0.405 |
| Nivel de confianza | 0.95 |
| Valor crítico | 1.9845 |
| Margen de error | 0.8038 |
| Extremo inferior | -0.5102 |
| Extremo superior | 1.0974 |
| Intervalo | 0.2936 ± 0.8038 |
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 <- ic_dif_medias_t_no(
media1 = media_private,
media2 = media_public,
s1 = s_private,
s2 = s_public,
n1 = n_private,
n2 = n_public,
conf = 0.95
)
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 estimada | 0.2936 |
| Grados de libertad | 95.0978 |
| ES | 0.405 |
| Nivel de confianza | 0.95 |
| Valor crítico | 1.9852 |
| Margen de error | 0.8041 |
| Extremo inferior | -0.5105 |
| Extremo superior | 1.0977 |
| Intervalo | 0.2936 ± 0.8041 |
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.
datos_genero <- df[
!is.na(df$Gender) &
!is.na(df$School) &
df$School %in% c("Private", "Public"),
]
genero_private <- datos_genero$Gender[
datos_genero$School == "Private"
]
genero_public <- datos_genero$Gender[
datos_genero$School == "Public"
]
exitos_private <- sum(genero_private == "Female")
exitos_public <- sum(genero_public == "Female")
n_private_genero <- length(genero_private)
n_public_genero <- length(genero_public)
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 <- ic_dif_proporciones(
exitos1 = exitos_private,
n1 = n_private_genero,
exitos2 = exitos_public,
n2 = n_public_genero,
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 |
| ES | 0.0998 |
| Nivel 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 |
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{Private}} {\text{Public}}. \]
varianza_private <- var(edad_private)
varianza_public <- var(edad_public)
resultado <- ic_razon_varianzas(
varianza1 = varianza_private,
varianza2 = varianza_public,
n1 = n_private,
n2 = n_public,
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 |
| Nivel 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) |
Intervalos de confianza para uno y dos parámetros.
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 la 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 y la varianza;
una variable dicotómica que utilizará para construir intervalos 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:
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.
Construya un intervalo de confianza para una varianza.
Para cada intervalo:
indique el nivel de confianza utilizado;
presente los resultados obtenidos;
interprete el intervalo en el contexto del problema.
Preparación de los dos grupos
Utilizando la variable categórica seleccionada:
construya dos subconjuntos correspondientes a cada uno de sus niveles;
obtenga todas las estadísticas resumidas necesarias para construir los intervalos de confianza solicitados en la siguiente sección.
Intervalos de confianza para dos parámetros
Utilizando los dos grupos definidos anteriormente, construya:
Un intervalo de confianza para la diferencia de medias suponiendo conocidas las desviaciones estándar poblacionales.
Un intervalo de confianza para la diferencia de medias suponiendo varianzas desconocidas e iguales.
Un intervalo de confianza para la diferencia de medias suponiendo varianzas desconocidas y diferentes.
Un intervalo de confianza para la diferencia de proporciones.
Un intervalo de confianza para la razón de varianzas.
Para cada intervalo:
presente los resultados obtenidos;
interprete el intervalo;
explique brevemente qué parámetro poblacional está siendo estimado.
Comparación entre procedimientos
Responda 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 deberá estar correctamente documentado mediante comentarios.
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.