Paquetes

{r} 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

```{r} # ============================================================ # 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”, “3c3”, “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

```{r}
#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)

Ejemplo de intervalo de confianza con z

```{r} # Elimina los valores perdidos (NA) altura <- df1\(Height[!is.na(df1\)Height)]

Calcula media y tamaño

media_altura <- mean(altura) n_altura <- length(altura)

Calcula el intervalo

resultado <- ic_media_z( media = media_altura, sigma = 6, n = n_altura, conf = 0.95 )

resultado


Con un grado de confianza del 95%, se puede concluir que la altura está entre 0.44978m y 2.8498m.

# Ejemplo  de intervalo de confianza con t


```{r}
# Elimina los valores perdidos (NA)
altura <- df4$Height[!is.na(df4$Height)] 

# Calcula media y tamaño
media_altura <- mean(altura)
s_altura <- sd(altura)
n_altura <- length(altura)

# Calcula el intervalo
resultado <- ic_media_t(
  media = media_altura,
  s = s_altura,
  n = n_altura,
  conf = 0.95
)

resultado

Con un grado de confianza del 95%, se puede concluir que la altura está entre 1.5641m y 16639m.

Ejemplo de intervalo de confianza para proporciones

```{r} # 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


Con un grado de confianza del 95%, se puede concluir que la proporción de hombres está entre 0.4663m y 2.8794m.

# Ejercicio 

#*Proporción*


```{r}
# Elimina los valores perdidos (NA)
altura_madre <- df1$MotherHeight[!is.na(df1$MotherHeight)]

# Calcula número de estudiantes de madres con estatura alta (éxitos) y tamaño total de la muestra.
total_mal <- sum(altura_madre == "Normal_M")
n_mal <- length(altura_madre)

# Calcula el intervalo
resultado <- ic_proporcion(
  exitos = total_mal,
  n = n_mal,
  conf = 0.95
)

resultado

Con una confianza del 95% la proporción de madres con estatura alta Normal_M está entre 0.2378 y 0.4222

Intervalo de confianza con Z

```{r} # Elimina los valores perdidos (NA) puntaje <- df1\(Score[!is.na(df1\)Score)]

Calcula media y tamaño

media_puntaje <- mean(puntaje) n_puntaje <- length(puntaje)

Calcula el intervalo

resultado <- ic_media_z( media = media_puntaje, sigma = 6, n = n_puntaje, conf = 0.95 )

resultado


Con un grado de confianza del 95%, es posible afirmar que el punataje promedio de todos los estudiantes esta entre 32.074% y 34.426%.


# Intervalo de confianza con t

```{r}
# Elimina los valores perdidos (NA)
peso <- df3$Weight[!is.na(df2$Weight)] 

# Calcula media y tamaño
media_peso <- mean(peso)
s_peso <- sd(peso)
n_peso <- length(peso)

# Calcula el intervalo
resultado <- ic_media_t(
  media = media_peso,
  s = s_peso,
  n = n_peso,
  conf = 0.95
)

resultado

Con una confianza del 95%, se puede concluir que el peso medio esta entre 69.0843kg y 77.1957kg.