1. Descripción del trabajo y planteamiento del problema

1.1 Descripción del trabajo

Este trabajo analiza una base de datos económica con 328 registros de estudiantes. Cada registro trae el estrato socioeconómico (1 a 4), la renta (ingreso, en pesos) y el valor de la matrícula (en pesos). Con ella se aplica la estadística inferencial: a partir de una muestra se estiman características de toda la población (media, varianza, desviación estándar y mediana) y se decide cuáles estimadores son los más adecuados.

1.2 Planteamiento del problema

En la realidad no es posible medir la renta y la matrícula de todos los estudiantes, así que se trabaja con una muestra. Pero los estudiantes no son iguales: los de estrato 1 pagan matrículas muy distintas a los de estrato 4. Si se tomara una muestra sin tener en cuenta el estrato, algunos grupos podrían quedar mal representados y las estimaciones perderían precisión.

Problema: ¿cuál es la renta y el valor de matrícula típicos de la población estudiantil, y qué estimadores (media, varianza, desviación estándar o mediana) son los mejores para estimarlos cuando el muestreo se hace por estratos?

1.3 Objetivos

  • General: estimar los parámetros de Renta y Valor de matrícula con un muestreo estratificado y seleccionar los mejores estimadores.
  • Específicos:
    1. Describir la base de datos y definir el tipo de muestreo.
    2. Calcular media, varianza, desviación estándar y mediana de cada variable, por estrato y en total.
    3. Seleccionar un modelo probabilístico idóneo para los datos.
    4. Elegir los estimadores que cumplan mejor las propiedades de insesgamiento, consistencia, eficiencia y suficiencia.

1.4 Variables

Variable Tipo Papel
Estrato Cualitativa ordinal (1 a 4) Variable de estratificación
Renta Cuantitativa continua (pesos) Variable de estudio
Matricula Cuantitativa continua (pesos) Variable de estudio

2. Cargar datos

library(readxl)
library(MASS)

datos <- read_excel("Economía.xlsx")
names(datos) <- c("Estrato", "Renta", "Matricula")
datos$Estrato <- as.integer(datos$Estrato)

n  <- nrow(datos)
nh <- table(datos$Estrato)
cat("n =", n, "| datos faltantes:", sum(is.na(datos)), "\n")
## n = 328 | datos faltantes: 0
nh
## 
##   1   2   3   4 
## 109 192  21   6
summary(datos)
##     Estrato          Renta              Matricula      
##  Min.   :1.000   Min.   :   2160000   Min.   : 256230  
##  1st Qu.:1.000   1st Qu.:   8126580   1st Qu.: 400703  
##  Median :2.000   Median :  13175385   Median : 513182  
##  Mean   :1.768   Mean   :  43286426   Mean   : 761998  
##  3rd Qu.:2.000   3rd Qu.:  28222000   3rd Qu.:1012141  
##  Max.   :4.000   Max.   :1648706000   Max.   :2848569

La base está completa. Hay 109 datos del estrato 1, 192 del estrato 2, 21 del estrato 3 y solo 6 del estrato 4. En Renta la media (≈ 43,3 millones) es mucho mayor que la mediana (≈ 13,2 millones): unos pocos ingresos muy altos jalan la media hacia arriba.

3. Tipo de muestreo: aleatorio estratificado

La población se divide en grupos homogéneos llamados estratos (aquí, Estrato 1, 2, 3 y 4) y dentro de cada uno se toma una muestra aleatoria simple, independiente de las demás.

La matrícula cambia mucho entre estratos y poco dentro de ellos; ese es el caso en que estratificar mejora la precisión.

Notación.

  • \(L=4\) estratos; \(N_h\) = tamaño de la población en el estrato \(h\); \(N=\sum N_h\).
  • \(n_h\) = tamaño de la muestra en el estrato \(h\); \(n=\sum n_h=328\).
  • \(W_h = N_h/N\) = peso del estrato \(h\).

Como la base no trae los \(N_h\), se supone asignación proporcional: \(W_h = n_h/n\). Si conoces los tamaños reales de la población por estrato, escríbelos en Nh.

# >>> Reemplaza por los N_h reales si los tienes, por ejemplo: Nh <- c(5200, 9300, 1000, 300)
Nh <- as.numeric(nh)
usar_fpc <- FALSE      # TRUE solo si Nh son los tamaños reales de la población
Wh  <- Nh / sum(Nh)
fpc <- if (usar_fpc) 1 - as.numeric(nh) / Nh else rep(1, length(Nh))

data.frame(Estrato = names(nh), nh = as.numeric(nh), Nh = Nh, Wh = round(Wh, 4))
##   Estrato  nh  Nh     Wh
## 1       1 109 109 0.3323
## 2       2 192 192 0.5854
## 3       3  21  21 0.0640
## 4       4   6   6 0.0183

El estrato 2 pesa el 58,5 %, el 1 el 33,2 %, el 3 el 6,4 % y el 4 solo el 1,8 %. Las estimaciones globales se calculan con estos pesos, así los estratos pequeños no distorsionan el resultado.

4. Estimadores: media, varianza, desviación estándar y mediana

Todo se calcula directamente sobre los datos, sin transformaciones.

Estimador Fórmula
Media por estrato \(\bar y_h=\frac{1}{n_h}\sum y_{hi}\)
Varianza por estrato \(s_h^2=\frac{1}{n_h-1}\sum (y_{hi}-\bar y_h)^2\)
Desviación estándar por estrato \(s_h=\sqrt{s_h^2}\)
Mediana por estrato valor central de los datos ordenados del estrato
Media estratificada \(\bar y_{st}=\sum_h W_h\,\bar y_h\)
Varianza de la media estratificada \(\widehat{\text{Var}}(\bar y_{st})=\sum_h W_h^2\,\dfrac{(1-f_h)\,s_h^2}{n_h}\)
Varianza poblacional estratificada \(\sum_h W_h\left[s_h^2+(\bar y_h-\bar y_{st})^2\right]\) (variación dentro + entre estratos)
Desviación estándar poblacional raíz cuadrada de la varianza anterior
Mediana global mediana de los datos ponderando cada dato por \(W_h/n_h\)

4.1 Resultados por estrato

tabla_estrato <- function(v) {
  do.call(rbind, lapply(split(datos[[v]], datos$Estrato), function(x)
    data.frame(n = length(x), media = mean(x), varianza = var(x),
               desv_est = sd(x), mediana = median(x))))
}
cat("RENTA por estrato\n");     print(round(tabla_estrato("Renta")))
## RENTA por estrato
##     n     media          varianza  desv_est  mediana
## 1 109  46649407 37599617552446680 193906208  9374904
## 2 192  31902650  5527000806463716  74343801 13785696
## 3  21 120664070 37521862363308440 193705607 40811000
## 4   6  75651315  1623149293873698  40288327 74885812
cat("\nMATRÍCULA por estrato\n"); print(round(tabla_estrato("Matricula")))
## 
## MATRÍCULA por estrato
##     n   media     varianza desv_est mediana
## 1 109  527377 133156277812   364906  386679
## 2 192  775949 190343309655   436284  550918
## 3  21 1475487 420342469177   648338 1461943
## 4   6 2080635 191362176180   437450 2031442
  • Matrícula: crece con el estrato. La media va de ≈ 527 mil (estrato 1) a ≈ 2,08 millones (estrato 4). Por eso estratificar tiene sentido.
  • Renta: no sigue un orden claro por estrato. El estrato 1 tiene una media de ≈ 46,6 millones pero una mediana de solo ≈ 9,4 millones, señal de valores extremos. El estrato 1 también contiene la renta máxima de la base (≈ 1.649 millones).
  • Desviación estándar: en varios estratos de Renta supera a la media, es decir, los datos son muy dispersos.

4.2 Resultados globales (estimadores estratificados)

mediana_pond <- function(x, w) {
  o <- order(x); cum <- cumsum(w[o]) / sum(w)
  x[o][which(cum >= 0.5)[1]]
}
w_i <- Wh[datos$Estrato] / as.numeric(nh)[datos$Estrato]   # peso de cada dato

global <- function(v) {
  x   <- datos[[v]]
  m_h <- tapply(x, datos$Estrato, mean)
  s2h <- tapply(x, datos$Estrato, var)
  m_st    <- sum(Wh * m_h)
  var_m   <- sum(Wh^2 * fpc * s2h / as.numeric(nh))
  var_pob <- sum(Wh * (s2h + (m_h - m_st)^2))
  data.frame(
    media_estratificada = m_st,
    error_estandar_media = sqrt(var_m),
    IC95_inferior = m_st - qnorm(.975) * sqrt(var_m),
    IC95_superior = m_st + qnorm(.975) * sqrt(var_m),
    varianza = var_pob,
    desviacion_estandar = sqrt(var_pob),
    mediana = mediana_pond(x, w_i))
}
resultados <- rbind(Renta = global("Renta"), Matricula = global("Matricula"))
round(resultados, 1)
##           media_estratificada error_estandar_media IC95_inferior IC95_superior
## Renta                43286426            7441298.4    28701748.7    57871102.5
## Matricula              761998              23818.6      715314.3      808681.6
##                    varianza desviacion_estandar  mediana
## Renta     18644429221517900         136544605.2 13150770
## Matricula      268890214319            518546.3   513182
  • Media estratificada. Renta ≈ 43,3 millones; matrícula ≈ 762 mil. Con pesos proporcionales coincide con la media simple.
  • Error estándar de la media. Renta ≈ 7,4 millones; matrícula ≈ 23,8 mil. Con muestreo simple la matrícula daba ≈ 28,5 mil: estratificar redujo el error en la matrícula, porque los estratos son muy distintos entre sí. En la renta casi no hay mejora.
  • Intervalo de confianza del 95 %. Para la matrícula la media queda entre ≈ 715 mil y ≈ 809 mil. Para la renta el intervalo es muy ancho, porque la renta es muy dispersa.
  • Varianza y desviación estándar. Matrícula: desviación ≈ 519 mil. Renta: desviación ≈ 137 millones, más de tres veces su media. Eso hace que la media de la renta sea poco confiable como resumen.
  • Mediana. Renta ≈ 13,2 millones; matrícula ≈ 513 mil. La mitad de los estudiantes tiene renta menor a 13,2 millones, mientras que la media (43,3 millones) está muy por encima de lo que gana un estudiante típico.

4.3 Proporción (apunte de clase)

Como Estrato es la variable de estratificación, su composición la fija el diseño. Por eso se estima otra proporción: la de estudiantes con matrícula mayor a 1 millón de pesos.

alto <- datos$Matricula > 1e6
p_h  <- tapply(alto, datos$Estrato, mean)
p_st <- sum(Wh * p_h)
ee_p <- sqrt(sum(Wh^2 * fpc * p_h * (1 - p_h) / (as.numeric(nh) - 1)))
data.frame(Estrato = names(p_h), proporcion = round(p_h, 4))
##   Estrato proporcion
## 1       1     0.1193
## 2       2     0.2656
## 3       3     0.6667
## 4       4     1.0000
cat("Proporción estratificada =", round(p_st, 4), "| error estándar =", round(ee_p, 4),
    "| IC 95% = [", round(p_st - 1.96 * ee_p, 4), ",", round(p_st + 1.96 * ee_p, 4), "]\n")
## Proporción estratificada = 0.2561 | error estándar = 0.0224 | IC 95% = [ 0.2121 , 0.3001 ]

Alrededor del 25,6 % de los estudiantes paga una matrícula mayor a 1 millón (IC 95 %: ≈ 21,2 % a 30,0 %). La proporción sube con el estrato: ≈ 12 % en el 1, ≈ 27 % en el 2, ≈ 67 % en el 3 y 100 % en el 4. Este último valor se basa en solo 6 datos, por lo que no es concluyente.

5. Selección del modelo probabilístico

Para elegir el modelo se comparan varias distribuciones con el criterio AIC (cuanto menor, mejor ajuste). Los valores se expresan en millones de pesos solo para que el cálculo numérico sea estable.

comparar <- function(x) {
  aj <- list(Normal      = fitdistr(x, "normal"),
             Exponencial = fitdistr(x, "exponential"),
             Gamma       = fitdistr(x, "gamma", lower = 1e-6),
             Weibull     = fitdistr(x, "weibull", lower = 1e-6),
             Lognormal   = fitdistr(x, "lognormal"))
  aic <- sapply(aj, function(a) -2 * a$loglik + 2 * length(a$estimate))
  data.frame(AIC = round(aic, 1))[order(aic), , drop = FALSE]
}
cat("RENTA\n");     comparar(datos$Renta / 1e6)
## RENTA
##                AIC
## Lognormal   2819.4
## Weibull     3010.6
## Gamma       3084.5
## Exponencial 3129.7
## Normal      4155.7
cat("\nMATRÍCULA\n"); comparar(datos$Matricula / 1e6)
## 
## MATRÍCULA
##               AIC
## Lognormal   289.6
## Gamma       333.9
## Weibull     369.3
## Exponencial 479.7
## Normal      500.5
par(mfrow = c(1, 2))
hist(datos$Renta / 1e6, breaks = 40, main = "Renta", xlab = "Millones de pesos", col = "grey85")
hist(datos$Matricula / 1e6, breaks = 25, main = "Valor de matrícula", xlab = "Millones de pesos", col = "grey85")

par(mfrow = c(1, 1))

El modelo con menor AIC en ambas variables es la lognormal. Significa simplemente que los datos son siempre positivos y están muy sesgados a la derecha (muchos valores pequeños y pocos muy grandes), como pasa con ingresos y pagos. La normal es el peor modelo, lo que confirma que los datos no son simétricos.

Esto solo sirve para entender la forma de los datos: los estimadores de la sección 4 no usan ninguna transformación.

Como los datos son asimétricos y la renta tiene valores extremos, la media muestral se comporta peor de lo que tendría con datos simétricos, y la mediana se vuelve una alternativa mejor. Esto se comprueba en la sección 6. El ajuste no es perfecto (hay una mezcla de estratos y valores extremos), pero es el mejor entre los comparados.

Para la proporción se usa el modelo Bernoulli dentro de cada estrato (cada estudiante tiene o no matrícula > 1 millón) y Binomial(\(n_h\), \(p_h\)) para el conteo.

6. Selección de los mejores estimadores

6.1 Qué significa cada propiedad

Propiedad Idea Cómo se verifica
Insesgado En promedio, acierta: \(E(\hat\theta)=\theta\) Teoría (esperanza del estimador)
Consistente Con muestras más grandes, se acerca al valor real La varianza baja al aumentar \(n\)
Eficiente Entre estimadores insesgados, el de menor varianza Comparar errores estándar
Suficiente Resume toda la información de la muestra sobre el parámetro Teorema de factorización

6.2 Evidencia: errores estándar por remuestreo

Para comparar la precisión de la media y la mediana se repite 2.000 veces el muestreo (bootstrap estratificado: remuestrear con reemplazo dentro de cada estrato) y se mide cuánto varía cada estimador. El coeficiente de variación (error estándar / valor estimado) permite comparar estimadores con distinta escala.

set.seed(2026)
varpob <- function(x, e) {
  m_h <- tapply(x, e, mean); s2h <- tapply(x, e, var)
  sum(Wh * (s2h + (m_h - sum(Wh * m_h))^2))
}
boot <- function(v, B = 2000) {
  t(replicate(B, {
    idx <- unlist(lapply(split(seq_len(n), datos$Estrato), function(i) sample(i, length(i), replace = TRUE)))
    x <- datos[[v]][idx]; e <- datos$Estrato[idx]
    c(media   = sum(Wh * tapply(x, e, mean)),
      mediana = mediana_pond(x, Wh[e] / as.numeric(nh)[e]),
      desv    = sqrt(varpob(x, e)))
  }))
}
resumen_boot <- function(b) {
  data.frame(estimador = colnames(b),
             valor_medio = colMeans(b),
             error_estandar = apply(b, 2, sd),
             coef_variacion_pct = round(100 * apply(b, 2, sd) / colMeans(b), 1),
             row.names = NULL)
}
cat("RENTA\n");     resumen_boot(boot("Renta"))
## RENTA
##   estimador valor_medio error_estandar coef_variacion_pct
## 1     media    42978337        7412078               17.2
## 2   mediana    13036470        1164653                8.9
## 3      desv   131421718       32240931               24.5
cat("\nMATRÍCULA\n"); resumen_boot(boot("Matricula"))
## 
## MATRÍCULA
##   estimador valor_medio error_estandar coef_variacion_pct
## 1     media    761620.0       23052.62                3.0
## 2   mediana    519295.0       22984.73                4.4
## 3      desv    516963.2       22404.30                4.3
  • Renta: el coeficiente de variación de la media es ≈ 17 %; el de la mediana es ≈ 9 %. La mediana es casi el doble de precisa, porque no la afectan los valores extremos. La desviación estándar es aún más inestable (≈ 24 %).
  • Matrícula: el coeficiente de variación de la media es ≈ 3 %, menor que el de la mediana (≈ 5 %). Aquí la media es más precisa, porque los datos son menos extremos.

6.3 Tabla de propiedades

Estimador Insesgado Consistente Eficiente Suficiente
Media estratificada \(\bar y_{st}\) Sí, para cualquier distribución Sí Sí en Matricula (menor error). No en Renta: los valores extremos inflan su varianza Solo bajo ciertos modelos (por ejemplo normal o exponencial); con datos asimétricos no se puede asegurar
Mediana No exactamente (sesgo pequeño en muestras finitas) Sí Sí en Renta (menor error). No en Matricula No (no resume toda la información)
Varianza \(s_h^2\) (divisor \(n_h-1\)) Sí Sí Sí entre los insesgados si hay normalidad Junto con la media, suficiente bajo normalidad
Varianza con divisor \(n_h\) No (subestima) Sí Menor varianza pero sesgada Igual que la anterior
Desviación estándar \(s\) No (sesgo pequeño) Sí Aceptable Igual que la varianza
Proporción \(\hat p_h=X_h/n_h\) y \(\hat p_{st}\) Sí Sí Sí (alcanza la cota de Cramér-Rao) Sí (el conteo \(X_h\) es suficiente para el modelo Binomial)

Por qué la media estratificada es insesgada (para cualquier distribución): \(E(\bar y_{st})=\sum W_h E(\bar y_h)=\sum W_h\mu_h=\mu\), porque los \(W_h\) son constantes del diseño.

Por qué es consistente: \(\text{Var}(\bar y_{st})=\sum W_h^2\sigma_h^2/n_h\to 0\) cuando los \(n_h\) crecen.

Por qué \(s^2\) es insesgada: se divide por \(n_h-1\) y no por \(n_h\), lo que corrige la subestimación: \(E(s_h^2)=\sigma_h^2\).

Sobre suficiencia (honestidad con los datos). La suficiencia depende del modelo. La media y la varianza forman estadísticos suficientes si los datos fueran normales. Como los datos son asimétricos, en las variables económicas esa propiedad no está garantizada. En cambio, para la proporción el modelo Binomial sí se cumple y el conteo es suficiente.

7. Conclusiones

  1. Muestreo: estratificado por Estrato, con pesos proporcionales (reemplazar por \(N_h\) reales si se conocen).

  2. Resultados principales:

    Renta Matrícula
    Media estratificada ≈ 43,3 millones ≈ 762 mil
    Mediana ≈ 13,2 millones ≈ 513 mil
    Desviación estándar ≈ 137 millones ≈ 519 mil
  3. Mejor estimador del valor típico:

    • Renta → mediana. Es consistente, robusta y casi el doble de precisa que la media; la media es insesgada pero muy inestable por los valores extremos.
    • Matrícula → media estratificada. Es insesgada, consistente y la más precisa; además la estratificación reduce su error estándar de ≈ 28,5 mil a ≈ 23,8 mil.
  4. Mejor estimador de la dispersión: \(s^2\) con divisor \(n_h-1\) (insesgado y consistente).

  5. Proporción: \(\hat p_{st}\) cumple las cuatro propiedades (insesgado, consistente, eficiente y suficiente).

  6. Limitaciones: el estrato 4 tiene solo 6 datos; hay rentas superiores a 600 millones que conviene verificar en la fuente; y los \(N_h\) son supuestos si no se conocen.