Inicio de los paquetes (Ya instalados previamente)
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
Ejemplo con los paquetes 1
# ============================================================
# 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")
)
}
Base de datos
#Base de datos
datosCompleto <- lsm::survey
df1 <- datosCompleto[1:100,]
df2 <- datosCompleto[1:29,]
df3 <- datosCompleto[1:60,]
df4 <- datosCompleto[1:15,]
# Dimensión de las dos bases de datos (observaciones, variables)
dim(datosCompleto)
## [1] 800 66
dim(df1)
## [1] 100 66
dim(df2)
## [1] 29 66
dim(df3)
## [1] 60 66
dim(df4)
## [1] 15 66
Intervalo de confianza
# Elimina los valores perdidos (NA)
edad <- df1$Age[!is.na(df1$Age)]
# Calcula media y tamaño
media_edad <- mean(edad)
n_edad <- length(edad)
# Calcula el intervalo
resultado <- ic_media_z(
media = media_edad,
sigma = 6,
n = n_edad,
conf = 0.95
)
resultado
|
Medida
|
Valor
|
|
Media
|
18.9374
|
|
σ
|
6
|
|
Error estándar
|
0.6
|
|
n
|
100
|
|
Grado de confianza
|
0.95
|
|
Valor crítico
|
1.96
|
|
Margen de error
|
1.176
|
|
Extremo inferior
|
17.7614
|
|
Extremo superior
|
20.1134
|
|
Intervalo
|
18.9374 ± 1.176
|
# Elimina los valores perdidos (NA)
edad <- df2$Age[!is.na(df2$Age)]
# Calcula media y tamaño
media_edad <- mean(edad)
s_edad <- sd(edad)
n_edad <- length(edad)
# Calcula el intervalo
resultado <- ic_media_t(
media = media_edad,
s = s_edad,
n = n_edad,
conf = 0.95
)
resultado
|
Medida
|
Valor
|
|
Media
|
19.2641
|
|
s
|
2.0637
|
|
Error estándar
|
0.3832
|
|
n
|
29
|
|
Grados de libertad
|
28
|
|
Grado de confianza
|
0.95
|
|
Valor crítico
|
2.0484
|
|
Margen de error
|
0.785
|
|
Extremo inferior
|
18.4792
|
|
Extremo superior
|
20.0491
|
|
Intervalo
|
19.2641 ± 0.785
|
Intervalo de confianza para proporciones
# Elimina los valores perdidos (NA)
genero <- df1$Gender[!is.na(df1$Gender)]
# Calcula número de estudiantes de género Female (éxitos) y tamaño total de la muestra.
total_fem <- sum(genero == "Female")
n_fem <- length(genero)
# Calcula el intervalo
resultado <- ic_proporcion(
exitos = total_fem,
n = n_fem,
conf = 0.95
)
resultado
|
Medida
|
Valor
|
|
Éxitos
|
49
|
|
n
|
100
|
|
Proporción
|
0.49
|
|
Error estándar
|
0.05
|
|
Grado de confianza
|
0.95
|
|
Valor crítico
|
1.96
|
|
Margen de error
|
0.098
|
|
Extremo inferior
|
0.392
|
|
Extremo superior
|
0.588
|
|
Intervalo
|
0.49 ± 0.098
|
# Elimina los valores perdidos (NA)
genero <- df1$Gender[!is.na(df1$Gender)]
# Calcula número de estudiantes de género Female (éxitos) y tamaño total de la muestra.
total_fem <- sum(genero == "Male x")
n_fem <- length(genero)
# Calcula el intervalo
resultado <- ic_proporcion(
exitos = total_fem,
n = n_fem,
conf = 0.95
)
resultado
|
Medida
|
Valor
|
|
Éxitos
|
0
|
|
n
|
100
|
|
Proporción
|
0
|
|
Error estándar
|
0
|
|
Grado de confianza
|
0.95
|
|
Valor crítico
|
1.96
|
|
Margen de error
|
0
|
|
Extremo inferior
|
0
|
|
Extremo superior
|
0
|
|
Intervalo
|
0 ± 0
|
Actividad 1
# 1. Filtra los valores no nulos de Height en df1 y asigna al objeto height
height <- df3$Height[!is.na(df3$Height)]
# 2. Calcula la media y el tamaño muestral
media_height <- mean(height)
n_height <- length(height)
# 3. Calcula el intervalo de confianza
resultado <- ic_media_z(
media = media_height,
sigma = 6,
n = n_height,
conf = 0.95
)
resultado
|
Medida
|
Valor
|
|
Media
|
1.6513
|
|
σ
|
6
|
|
Error estándar
|
0.7746
|
|
n
|
60
|
|
Grado de confianza
|
0.95
|
|
Valor crítico
|
1.96
|
|
Margen de error
|
1.5182
|
|
Extremo inferior
|
0.1332
|
|
Extremo superior
|
3.1695
|
|
Intervalo
|
1.6513 ± 1.5182
|
Con un grado de confianza del 95%, es posible afirmar que la altura
promedio de todos los estudiantes esta entre 0,49 metros y 2,8
metros.
# Elimina los valores perdidos (NA)
height <- df3$Height[!is.na(df3$Height)]
# Calcula media y tamaño
media_height <- mean(height)
s_height <- sd(height)
n_height <- length(height)
# Calcula el intervalo
resultado <- ic_media_t(
media = media_height,
s = s_height,
n = n_height,
conf = 0.95
)
resultado
|
Medida
|
Valor
|
|
Media
|
1.6513
|
|
s
|
0.0843
|
|
Error estándar
|
0.0109
|
|
n
|
60
|
|
Grados de libertad
|
59
|
|
Grado de confianza
|
0.95
|
|
Valor crítico
|
2.001
|
|
Margen de error
|
0.0218
|
|
Extremo inferior
|
1.6296
|
|
Extremo superior
|
1.6731
|
|
Intervalo
|
1.6513 ± 0.0218
|
Con un grado de confianza del 95%, es posible afirmar que la altura
promedio de todos los estudiantes esta entre 1,62 metros y 1,73
metros.
height <- df3$Height[!is.na(df3$Height)]
total_height <- sum(height == "Height")
n_height <- length(height)
resultado <- ic_proporcion(
exitos = total_height,
n = n_height,
conf = 0.95
)
resultado
|
Medida
|
Valor
|
|
Éxitos
|
0
|
|
n
|
60
|
|
Proporción
|
0
|
|
Error estándar
|
0
|
|
Grado de confianza
|
0.95
|
|
Valor crítico
|
1.96
|
|
Margen de error
|
0
|
|
Extremo inferior
|
0
|
|
Extremo superior
|
0
|
|
Intervalo
|
0 ± 0
|
Parte 2 de la actividad
# Elimina los valores perdidos (NA)
masacorpo <- df4$BMI[!is.na(df4$BMI)]
# Calcula media y tamaño
media_masacorpo <- mean(masacorpo)
n_masacorpo <- length(masacorpo)
# Calcula el intervalo
resultado <- ic_media_z(
media = media_masacorpo,
sigma = 6,
n = n_masacorpo,
conf = 0.95
)
resultado
|
Medida
|
Valor
|
|
Media
|
28.0928
|
|
σ
|
6
|
|
Error estándar
|
1.5492
|
|
n
|
15
|
|
Grado de confianza
|
0.95
|
|
Valor crítico
|
1.96
|
|
Margen de error
|
3.0364
|
|
Extremo inferior
|
25.0564
|
|
Extremo superior
|
31.1291
|
|
Intervalo
|
28.0928 ± 3.0364
|
Con un grado de confianza del 95%, es posible afirmar que la masa
corporal promedio de todos los estudiantes esta entre 25 kg/m² y 31
kg/m².
# Elimina los valores perdidos (NA)
masacorpo <- df4$BMI[!is.na(df4$BMI)]
# Calcula media y tamaño
media_masacorpo <- mean(masacorpo)
s_masacorpo <- sd(masacorpo)
n_masacorpo <- length(masacorpo)
# Calcula el intervalo
resultado <- ic_media_t(
media = media_masacorpo,
s = s_masacorpo,
n = n_masacorpo,
conf = 0.95
)
resultado
|
Medida
|
Valor
|
|
Media
|
28.0928
|
|
s
|
6.9706
|
|
Error estándar
|
1.7998
|
|
n
|
15
|
|
Grados de libertad
|
14
|
|
Grado de confianza
|
0.95
|
|
Valor crítico
|
2.1448
|
|
Margen de error
|
3.8602
|
|
Extremo inferior
|
24.2326
|
|
Extremo superior
|
31.953
|
|
Intervalo
|
28.0928 ± 3.8602
|
Con un grado de confianza del 95%, es posible afirmar que la masa
corporal promedio de todos los estudiantes esta entre 24,2 kg/m² y 31,9
kg/m².
masacorpo <- df4$BMI[!is.na(df4$BMI)]
total_masacorpo<- sum(masacorpo == "20-24")
n_masacorpo <- length(masacorpo)
resultado <- ic_proporcion(
exitos = total_masacorpo,
n = n_masacorpo,
conf = 0.95
)
resultado
|
Medida
|
Valor
|
|
Éxitos
|
0
|
|
n
|
15
|
|
Proporción
|
0
|
|
Error estándar
|
0
|
|
Grado de confianza
|
0.95
|
|
Valor crítico
|
1.96
|
|
Margen de error
|
0
|
|
Extremo inferior
|
0
|
|
Extremo superior
|
0
|
|
Intervalo
|
0 ± 0
|