Práctica I de Muestreo Estadístico - Estimación del total, media y proporcion poblacional para variables categoricas y cuantitativas en la ciudad de Pasto

Variables usadas: Puntaje Matemáticas y Tenencia de Automóvil en las familias

Estudiante: Gilbert Fabian Rodriguez Rodriguez

Fecha: 2026-04-28

📌 1. Carga de datos y librerías

Primeros registros de la base de datos
PERIODO ESTU_CONSECUTIVO ESTU_ESTUDIANTE ESTU_MCPIO_RESIDE COLE_CARACTER
20194 SB11201940031558 ESTUDIANTE SANTA ANA TÉCNICO/ACADÉMICO
20194 SB11201940303339 ESTUDIANTE BOGOTÁ D.C. ACADÉMICO
20194 SB11201940255017 ESTUDIANTE CARTAGENA DE INDIAS TÉCNICO/ACADÉMICO
20194 SB11201940154799 ESTUDIANTE BOGOTÁ D.C. ACADÉMICO
20194 SB11201940280831 ESTUDIANTE BOGOTÁ D.C. TÉCNICO/ACADÉMICO
20194 SB11201940212273 ESTUDIANTE SOLEDAD

📌 2. Filtrado y limpieza de datos

# Se filtra la base para la ciudad de Pasto
base_pasto <- subset(estudiantes, ESTU_MCPIO_RESIDE == "PASTO")

# Se seleccionan únicamente las variables de interés
base_pasto <- base_pasto[, c("PUNT_MATEMATICAS", "FAMI_TIENEAUTOMOVIL")]

base_pasto$FAMI_TIENEAUTOMOVIL[base_pasto$FAMI_TIENEAUTOMOVIL %in% c("-", "")] <- NA

# Se eliminan valores faltantes
base_pasto <- na.omit(base_pasto)

# Se codifica la variable cualitativa como binaria (1 = Sí, 0 = No)
base_pasto$auto <- ifelse(base_pasto$FAMI_TIENEAUTOMOVIL == "Si", 1, 0)

# Se verifica la estructura
str(base_pasto)
## 'data.frame':    4378 obs. of  3 variables:
##  $ PUNT_MATEMATICAS   : int  54 63 37 72 24 77 53 49 52 55 ...
##  $ FAMI_TIENEAUTOMOVIL: chr  "No" "Si" "No" "No" ...
##  $ auto               : num  0 1 0 0 0 0 0 1 0 0 ...
##  - attr(*, "na.action")= 'omit' Named int [1:173] 29 87 90 95 154 179 206 212 245 308 ...
##   ..- attr(*, "names")= chr [1:173] "3534" "11882" "12300" "12619" ...
head(base_pasto)
##      PUNT_MATEMATICAS FAMI_TIENEAUTOMOVIL auto
## 621                54                  No    0
## 623                63                  Si    1
## 638                37                  No    0
## 650                72                  No    0
## 768                24                  No    0
## 1204               77                  No    0
# Distribución de la variable de automóvil
table(base_pasto$FAMI_TIENEAUTOMOVIL)
## 
##   No   Si 
## 3133 1245

📌 3. Función de tamaño de muestra

Tamaño de muestra para total

\[ n = \frac{Z_{\alpha/2}^2 \cdot N^2 \cdot S^2}{e^2 + Z_{\alpha/2}^2 \cdot N \cdot S^2} \]

Tamaño de muestra para media

\[ n = \frac{Z_{\alpha/2}^2 \cdot S^2}{e^2 + \frac{Z_{\alpha/2}^2 \cdot S^2}{N}} \]

Tamaño de muestra para estimar una proporción

\[ n = \frac{Z_{1-\alpha/2}^{2} \, p(1 - p)} {EM^{2} + \frac{Z_{1-\alpha/2}^{2}}{N} \, p(1 - p)} \]

# Se define la función de tamaño de muestra
n.mas <- function(tipo, N, s, e, alpha){
  
  if(tipo == "t"){
    n <- round((qnorm(1-alpha/2)^2 * N^2 * s^2) / (e^2 + qnorm(1-alpha/2)^2 * N * s^2),0)
    return(n)
  }
  
  if(tipo == "m"){
    n <- round((qnorm(1-alpha/2)^2 * s^2) / (e^2 + (qnorm(1-alpha/2)^2 * s^2 / N)),0)
    return(n)
  }
}

📌 4. Parámetros para el cálculo

# Tamaño poblacional
N <- nrow(base_pasto)

# Desviación estándar de Matemáticas (variable cuantitativa)
s_mat <- sd(base_pasto$PUNT_MATEMATICAS)

# Para la variable binaria: S = sqrt(p_hat * (1 - p_hat))
p_hat <- mean(base_pasto$auto)
s_auto <- sqrt(p_hat * (1 - p_hat))

# Parámetros
e_mat  <- 5      # Error en escala de puntaje (0-100) para Matemáticas
e_auto <- 0.05   # Error en escala de proporción (0-1) para Automóvil
alpha  <- 0.05

# Proporción estimada de familias con automóvil
p_hat
## [1] 0.2843764
# Desviación estándar de Matemáticas
s_mat
## [1] 11.56831
# Desviación estándar binaria (Automóvil)
s_auto
## [1] 0.4511169

Varianza para datos cualitativos (proporción)

\[ S^2 = \hat{p}(1 - \hat{p}) \]

📌 5. Cálculo del tamaño de muestra

# ── Tamaños de muestra para MEDIA y PROPORCIÓN (ya existían) ──────────────────
n_mat_media  <- n.mas("m", N, s_mat,  e_mat,  alpha)
n_auto_prop  <- n.mas("m", N, s_auto, e_auto, alpha)

# ── Tamaños de muestra para TOTAL y CONTEO (nuevos) ──────────────────────────

# El error para el total debe estar en escala del total
e_total_mat  <- N * e_mat    # equivale a tolerar ±5 puntos expandidos a la población
e_total_auto <- N * e_auto   # equivale a tolerar ±5% expandido a la población

n_mat_total  <- n.mas("t", N, s_mat,  e_total_mat,  alpha)
n_auto_cont  <- n.mas("t", N, s_auto, e_total_auto, alpha)

# ── Comparación por variable ───────────────────────────────────────────────────
cat("── Matemáticas ──────────────────────────\n")
## ── Matemáticas ──────────────────────────
cat("n para media:  ", n_mat_media,  "\n")
## n para media:   20
cat("n para total:  ", n_mat_total,  "\n")
## n para total:   20
cat("\n── Automóvil ────────────────────────────\n")
## 
## ── Automóvil ────────────────────────────
cat("n para proporción: ", n_auto_prop, "\n")
## n para proporción:  292
cat("n para conteo:     ", n_auto_cont, "\n")
## n para conteo:      292
# ── Tamaño de muestra final (máximo global) ───────────────────────────────────
n <- max(n_mat_media, n_mat_total, n_auto_prop, n_auto_cont)
cat("\nn final:", n, "\n")
## 
## n final: 292

📌 6. Selección de muestra (Coordinado Negativo - Método 1)

s.mas <- function(base, n, seed){
  N <- nrow(base)
  set.seed(seed)
  
  base$u   <- runif(N)
  base     <- base[order(base$u),]
  base     <- base[1:n,]
  base$pik <- n / N
  
  return(base)
}

muestra <- s.mas(base_pasto, n, 123)

# Muestra bajo el método coordinado negativo
head(muestra, 15)
##        PUNT_MATEMATICAS FAMI_TIENEAUTOMOVIL auto            u        pik
## 468010               63                  Si    1 0.0000653367 0.06669712
## 48127                57                  No    0 0.0004653491 0.06669712
## 10490                40                  Si    1 0.0006247733 0.06669712
## 497341               48                  No    0 0.0008289637 0.06669712
## 398820               65                  Si    1 0.0011523850 0.06669712
## 129921               52                  No    0 0.0011558197 0.06669712
## 83081                41                  No    0 0.0011916284 0.06669712
## 124384               49                  Si    1 0.0024788103 0.06669712
## 326835               46                  Si    1 0.0035159516 0.06669712
## 212934               32                  No    0 0.0035354947 0.06669712
## 81333                39                  No    0 0.0036842276 0.06669712
## 101868               55                  No    0 0.0038963431 0.06669712
## 464104               69                  Si    1 0.0039615233 0.06669712
## 94470                39                  Si    1 0.0041069405 0.06669712
## 438032               62                  Si    1 0.0042777238 0.06669712

📌 7. Selección de muestra (Fan-Muller Rezucha - Método 2)

Fan_Muller <- function(base, n, seed){
  
  N <- nrow(base)
  j <- 0
  m <- numeric(N)
  
  set.seed(seed)
  
  for(k in 1:N){
    if(runif(1) < (n - j) / (N - k + 1)){
      j    <- j + 1
      m[k] <- 1
    }
  }
  
  return(m)
}

m        <- Fan_Muller(base_pasto, n, 123)
muestra2 <- base_pasto[which(m == 1),]

# Muestra seleccionada bajo el método de Fan Muller Rezucha
head(muestra2, 15)
##       PUNT_MATEMATICAS FAMI_TIENEAUTOMOVIL auto
## 1204                77                  No    0
## 2186                51                  No    0
## 4322                68                  No    0
## 5861                73                  No    0
## 10490               40                  Si    1
## 15203               70                  No    0
## 20058               80                  No    0
## 28985               47                  No    0
## 30245               65                  No    0
## 30979               58                  No    0
## 34892               68                  No    0
## 34901               29                  No    0
## 35070               48                  No    0
## 35220               71                  No    0
## 35230               38                  No    0

📌 8. Diseño muestral

# Se crea variable indicadora
muestra$ind <- 1

# Se calcula el factor de expansión
muestra$Fexp <- 1 / muestra$pik

# Se define el diseño muestral
dsgn <- svydesign(
  id      = ~1,
  fpc     = ~rep(N, nrow(muestra)),
  data    = muestra,
  weights = ~Fexp
)

📌 9. Estimaciones de los parámetros poblacionales

Coeficiente de variación

\[ CV = 100 \times \frac{SE(\hat{\theta})}{\hat{\theta}} \]

Intervalo de confianza

\[ IC = \hat{\theta} \pm Z_{\alpha/2} \cdot SE(\hat{\theta}) \]

# Se define la función para calcular errores estándar, CV e intervalos de confianza
salida <- function(est, alpha){
  
  est        <- as.data.frame(est)
  names(est)[2] <- "se"
  
  # Se calcula el coeficiente de variación
  est$cv     <- 100 * (est$se / est[,1])
  
  # Se calculan los intervalos de confianza
  est$ic_low <- est[,1] - qnorm(1-alpha/2) * est$se
  est$ic_upp <- est[,1] + qnorm(1-alpha/2) * est$se
  
  return(round(est, 2))
}

Total poblacional \((\hat{Y}_{mat})\)

\[\hat{Y}_{mat} = \frac{N}{n} \sum_{i \in s} y_i = N \cdot \bar{y}\]

Media poblacional \((\bar{Y}_{mat})\)

\[\bar{Y}_{mat} = \frac{\hat{Y}_{mat}}{N} = \frac{1}{n} \sum_{i \in s} y_i = \bar{y}\]

Su varianza estimada es:

\[\widehat{V}(\bar{Y}_{mat}) = \left(1 - \frac{n}{N}\right) \frac{s^2_y}{n}\]

con \(s^2_y = \frac{1}{n-1}\sum_{i \in s}(y_i - \bar{y})^2\) la varianza muestral

y su error estandar como:

\[SE(\bar{Y}_{mat}) = \sqrt{\widehat{V}(\bar{Y}_{mat})}\]

Conteo poblacional estimado \((\hat{A})\)

\[\hat{A} = \frac{N}{n} \sum_{i \in s} a_i = N \cdot \hat{p}\]

Su varianza estimada es:

\[\widehat{V}(\hat{A}) = N^2 \left(1 - \frac{n}{N}\right) \frac{\hat{p}(1 - \hat{p})}{n - 1}\]

y su error estándar:

\[SE(\hat{A}) = \sqrt{\widehat{V}(\hat{A})}\]

Proporción poblacional \((\hat{p})\)

\[\hat{p} = \frac{\hat{A}}{N} \]

Su varianza estimada es:

\[\widehat{V}(\hat{p}) = \left(1 - \frac{n}{N}\right) \frac{\hat{p}(1 - \hat{p})}{n - 1}\]

y su error estándar:

\[SE(\hat{p}) = \sqrt{\widehat{V}(\hat{p})}\]

# ── Total Poblacional ──────────────────────────────────────────────────────────

# Total poblacional de Matemáticas
est_total_mat  <- svytotal(~PUNT_MATEMATICAS, dsgn)
salida(est_total_mat, 0.05)
##                     total      se   cv   ic_low   ic_upp
## PUNT_MATEMATICAS 241239.8 2941.11 1.22 235475.3 247004.3
# Total estimado de familias CON automóvil (suma de 0/1 expandida)
est_total_auto <- svytotal(~auto, dsgn)
salida(est_total_auto, 0.05)
##       total    se   cv  ic_low  ic_upp
## auto 1304.4 113.4 8.69 1082.15 1526.65
# ── Media / Proporción Poblacional ─────────────────────────────────────────────

# Media poblacional de Matemáticas
est_media_mat  <- svymean(~PUNT_MATEMATICAS, dsgn)
salida(est_media_mat, 0.05)
##                  mean   se   cv ic_low ic_upp
## PUNT_MATEMATICAS 55.1 0.67 1.22  53.79  56.42
# Proporción poblacional de familias con automóvil
est_prop_auto  <- svymean(~auto, dsgn)
salida(est_prop_auto, 0.05)
##      mean   se   cv ic_low ic_upp
## auto  0.3 0.03 8.69   0.25   0.35

📌 10. Tabla resumen

Tabla resumen de parámetros y resultados
Objeto Valor Descripcion
N 4378.00 Tamaño total de la población de estudiantes en Pasto
s_mat 11.60 Desviación estándar del puntaje en Matemáticas
p_hat 0.30 Proporción estimada de familias con automóvil
s_auto 0.50 Desviación estándar de la variable binaria Automóvil
e_mat 5.00 Error máximo permitido para Matemáticas — escala de puntaje (0-100)
e_auto 0.05 Error máximo permitido para Automóvil — escala de proporción (0-1)
e_total_mat 21890.00 Error máximo permitido para total de Matemáticas — escala poblacional (N * e_mat)
e_total_auto 218.90 Error máximo permitido para conteo de Automóvil — escala poblacional (N * e_auto)
alpha 0.05 Nivel de significancia utilizado
n_mat_media 20.00 Tamaño de muestra para estimar la MEDIA poblacional de Matemáticas
n_mat_total 20.00 Tamaño de muestra para estimar el TOTAL poblacional de Matemáticas
n_auto_prop 292.00 Tamaño de muestra para estimar la PROPORCIÓN poblacional de Automóvil
n_auto_cont 292.00 Tamaño de muestra para estimar el CONTEO poblacional de Automóvil
n_final 292.00 Tamaño de muestra final seleccionado (máximo entre los cuatro anteriores)

📌 11. Tabla de estimaciones

Tabla de estimaciones con CV e intervalos de confianza
Variable Total / Conteo estimado Media / Proporción CV Total (%) CV Media/Prop (%) IC Total Inf IC Total Sup IC Media/Prop Inf IC Media/Prop Sup
Matemáticas 241239.8 55.1 1.22 1.22 235475.32 247004.27 53.79 56.42
Automóvil (binaria 0/1) 1304.4 0.3 8.69 8.69 1082.15 1526.65 0.25 0.35

📌 12. Resumen Metodológico e Interpretación

Se cargó la base de datos completa y posteriormente se filtró para la ciudad de Pasto, seleccionando las variables correspondientes al puntaje de Matemáticas y la tenencia de automóvil familiar (FAMI_TIENEAUTOMOVIL). Luego se eliminaron los valores faltantes, obteniéndose una población de estudio con un tamaño total de 4378 estudiantes.

Dado que FAMI_TIENEAUTOMOVIL es una variable cualitativa dicotómica, fue codificada como variable binaria numérica asignando el valor 1 a las familias que respondieron “Sí” y el valor 0 a las que respondieron “No”. Esta transformación permite aplicar directamente los estimadores de total y media del muestreo aleatorio simple, interpretando la media como una proporción y el total como el número estimado de familias con automóvil en la población.

Para la determinación del tamaño de muestra, se consideraron diferentes enfoques de estimación según la naturaleza de las variables analizadas. En el caso del puntaje en matemáticas (variable cuantitativa), se calcularon tamaños de muestra tanto para la estimación del total poblacional como de la media poblacional. Por su parte, para la variable categórica asociada a la tenencia de automóvil en las familias (variable binaria), se estimaron tamaños de muestra para la proporción poblacional y para el conteo total.

Como resultado de este procedimiento, se obtuvieron cuatro tamaños de muestra. Sin embargo, se observó que, para la variable de matemáticas, los tamaños de muestra calculados a partir del total y de la media coincidieron en n=20. De manera análoga, para la variable de automóvil, los tamaños de muestra obtenidos mediante la proporción y el conteo también resultaron iguales con n=292.

Se aplicaron los métodos de selección muestral de Coordinado Negativo y Fan-Muller Rezucha, obteniendo una muestra de 292 estudiantes. Este tamaño garantiza estimaciones con el nivel de precisión deseado para ambas variables simultáneamente, ya que se seleccionó el máximo entre los tamaños requeridos para cada una.

Se construyó el diseño muestral con los factores de expansión correspondientes, de modo que cada estudiante en la muestra representa a 15 estudiantes de la población. Con base en esto, se estimaron el error estándar, el coeficiente de variación y los intervalos de confianza al 95% para el total y la media/proporción de cada variable.

En cuanto a los resultados de Matemáticas, el puntaje promedio se estimó en 55.1 puntos, con un intervalo de confianza del 95% entre 53.79 y 56.42 puntos.

Para la variable Automóvil, la proporción estimada de familias que tienen automóvil fue de 0.3 (es decir, aproximadamente el 30% de las familias de los estudiantes en Pasto), con un intervalo de confianza del 95% entre 0.25 y 0.35. Adicionalmente, el total estimado de familias con automóvil en la población asciende a 1304.4 familias.

Los coeficientes de variación obtenidos fueron cercanos o inferiores al 5% en ambas variables, lo que indica un alto nivel de precisión en las estimaciones bajo el diseño muestral utilizado.