Introducción

Este notebook es el complemento práctico del documento teórico “Teoría y Ejercicios Resueltos: Muestreo Probabilístico y Estadística No Paramétrica”. Cada caso desarrollado allí con lápiz y papel se resuelve aquí en R, empleando exactamente los mismos datos y los mismos resultados, de modo que los estudiantes puedan comprobar que el cálculo manual y el cálculo computacional llegan a la misma respuesta. El objetivo no es solo mostrar el resultado, sino explicar, en cada bloque de código, qué hace cada línea y por qué se utiliza esa función.

La estructura sigue las cinco unidades del documento original: fundamentos del muestreo, muestreo aleatorio simple y sistemático, muestreo estratificado, muestreo por conglomerados, y estadística no paramétrica. Al final se incluye el solucionario completo de todos los ejercicios propuestos, también resuelto en R.

Unidad 1: Fundamentos del Muestreo

Ejemplo resuelto: parámetro y estadístico en un mercado de abastos

Diez bodegas de un mercado de Huánuco registraron sus ventas del último sábado, en soles. Como se cuenta con la información de las diez bodegas, estos datos constituyen la población completa, con \(N=10\). El siguiente bloque de código construye el vector de ventas, calcula la media y la varianza poblacional, y luego extrae la misma muestra de cuatro bodegas que se usó en el documento teórico, para comprobar que el resultado coincide.

# Vector con las ventas de las diez bodegas (la población completa)
ventas <- c(180, 220, 195, 210, 175, 240, 205, 190, 230, 200)

# mean() calcula el promedio; como se trabaja con la población completa,
# este valor es el parámetro poblacional mu
mu <- mean(ventas)
mu
## [1] 204.5
# var() en R divide entre (n-1) por defecto (varianza muestral).
# Para obtener la varianza POBLACIONAL, se multiplica por (n-1)/n
N <- length(ventas)
sigma2 <- var(ventas) * (N - 1) / N
sigma2
## [1] 397.25
# Se reproduce la misma muestra de 4 bodegas usada en el documento teórico
# (bodegas con ventas 220, 175, 205 y 200 soles), usando sus posiciones en el vector
muestra <- ventas[c(2, 5, 7, 10)]
muestra
## [1] 220 175 205 200
# El estadístico es la media de esa muestra
y_barra <- mean(muestra)
y_barra
## [1] 200
# El error muestral es la diferencia entre el estadístico y el parámetro
error_muestral <- y_barra - mu
error_muestral
## [1] -4.5

El resultado confirma lo obtenido a mano: la media poblacional es 204.5 soles, la varianza poblacional es 397.25, el estadístico de la muestra de cuatro bodegas es 200 soles, y el error muestral es -4.5 soles.

Ejercicio propuesto 1

Doce bodegas de un mercado similar registraron ventas de 150, 210, 175, 240, 190, 205, 230, 165, 220, 195, 180 y 250 soles. Calcule el parámetro poblacional de la media y de la varianza, extraiga una muestra aleatoria simple de cinco bodegas con la función sample(), calcule el estadístico correspondiente y determine el error muestral observado.

# Espacio para el desarrollo del alumno

Ejercicio propuesto 2

Una empresa consultora realiza una encuesta telefónica sobre el ingreso mensual de los hogares de un distrito, utilizando como marco muestral el padrón de líneas telefónicas fijas registradas cinco años atrás. Sin necesidad de código, redacte en un comentario de R dos posibles fuentes de error no muestral en este estudio, y explique si su magnitud dependería del tamaño de la muestra utilizada.

# Espacio para la respuesta del alumno (redactada como comentario)

Unidad 2: Muestreo Aleatorio Simple y Muestreo Sistemático

Ejemplo resuelto: cálculo del tamaño de muestra (asociación de transportistas)

Una asociación de transportistas cuenta con \(N=400\) socios. Se desea estimar el ingreso mensual promedio con un margen de error de 50 soles y un nivel de confianza del 95 por ciento. Un estudio piloto reportó una desviación estándar aproximada de 180 soles. El código siguiente traduce directamente la fórmula del tamaño de muestra a instrucciones de R.

Z <- 1.96      # valor crítico para 95% de confianza
sigma <- 180   # desviación estándar aproximada (estudio piloto)
E <- 50        # margen de error deseado, en soles
N <- 400       # tamaño de la población

# Tamaño de muestra inicial, asumiendo población infinita
n0 <- (Z^2 * sigma^2) / E^2
n0
## [1] 49.78714
# Corrección por población finita
n <- n0 / (1 + (n0 - 1) / N)
n
## [1] 44.37483
# Se redondea siempre hacia arriba, ya que el tamaño de muestra
# debe ser un número entero de socios y no puede ser insuficiente
n_final <- ceiling(n)
n_final
## [1] 45

El código confirma que se necesitan 45 socios para cumplir con la precisión solicitada, el mismo resultado obtenido en el desarrollo manual.

Ejemplo resuelto: muestreo sistemático (padrón de comerciantes ambulantes)

Una municipalidad cuenta con un padrón de \(N=60\) comerciantes ambulantes y desea una muestra sistemática de \(n=10\). El intervalo de muestreo es \(k=N/n\), y a partir de un punto de arranque aleatorio se selecciona cada \(k\)-ésimo elemento. El código reproduce el mismo arranque utilizado en el documento teórico (\(a=4\)) para que el resultado sea idéntico.

N <- 60
n <- 10

# Intervalo de muestreo
k <- N / n
k
## [1] 6
# Punto de arranque aleatorio entre 1 y k
# (se fija en 4 para reproducir exactamente el ejemplo del documento teórico;
# en la práctica se usaría: inicio <- sample(1:k, 1))
inicio <- 4

# seq() genera la secuencia de posiciones seleccionadas, sumando k cada vez
posiciones_seleccionadas <- seq(from = inicio, to = N, by = k)
posiciones_seleccionadas
##  [1]  4 10 16 22 28 34 40 46 52 58

Las posiciones obtenidas, 4, 10, 16, 22, 28, 34, 40, 46, 52 y 58, coinciden exactamente con las calculadas a mano.

Ejercicio propuesto 1

Se desea estimar la proporción de comerciantes de un mercado que cuentan con licencia de funcionamiento vigente, con un margen de error de 4 puntos porcentuales y un nivel de confianza del 95 por ciento. Un sondeo preliminar sobre 20 comerciantes reportó que 6 de ellos no contaban con licencia vigente. Calcule en R el tamaño de muestra necesario, asumiendo una población de \(N=350\) comerciantes.

# Espacio para el desarrollo del alumno

Ejercicio propuesto 2

Un padrón electoral distrital cuenta con \(N=840\) inscritos, ordenados alfabéticamente. Se desea extraer una muestra sistemática de \(n=12\) inscritos. Calcule en R el intervalo de muestreo \(k\), proponga un punto de arranque aleatorio con sample() y liste las primeras seis posiciones seleccionadas con seq().

# Espacio para el desarrollo del alumno

Unidad 3: Muestreo Estratificado

Ejemplo resuelto: afijación proporcional y óptima en una planilla

Una empresa tiene \(N=50\) trabajadores distribuidos en tres áreas: Administración, Ventas y Producción, cada una con su propio tamaño \(N_h\) y su propia desviación estándar \(S_h\) del ingreso mensual. El código construye ambos esquemas de afijación utilizando vectores con nombre, lo cual facilita identificar a qué área corresponde cada resultado.

# N_h: número de trabajadores por área
N_h <- c(Administracion = 8, Ventas = 15, Produccion = 27)

# S_h: desviación estándar del ingreso mensual dentro de cada área
S_h <- c(Administracion = 150, Ventas = 420, Produccion = 210)

N <- sum(N_h)
n <- 20  # tamaño de muestra total deseado

# Afijación proporcional: cada área recibe una muestra proporcional a su peso poblacional
n_h_proporcional <- n * (N_h / N)
round(n_h_proporcional, 1)
## Administracion         Ventas     Produccion 
##            3.2            6.0           10.8
# Afijación óptima (Neyman): se pondera además por la variabilidad interna de cada área
n_h_optima <- n * (N_h * S_h) / sum(N_h * S_h)
round(n_h_optima, 1)
## Administracion         Ventas     Produccion 
##            1.8            9.6            8.6
# Tabla comparativa de ambos esquemas
comparacion <- data.frame(
  Área = names(N_h),
  N_h = as.numeric(N_h),
  S_h = as.numeric(S_h),
  Afijacion_Proporcional = round(as.numeric(n_h_proporcional), 1),
  Afijacion_Optima = round(as.numeric(n_h_optima), 1)
)
comparacion

Se observa que la afijación óptima asigna una muestra considerablemente mayor al área de Ventas, la de mayor variabilidad interna, tal como se explicó en el desarrollo teórico del Teorema de optimalidad de Neyman.

Ejercicio propuesto 1

Utilizando los mismos tres estratos del ejemplo anterior, pero ahora sobre la variable gasto mensual, con desviaciones estándar de 90, 380 y 160 soles respectivamente, calcule en R la distribución de una muestra de \(n=18\) trabajadores mediante afijación proporcional y mediante afijación óptima.

# Espacio para el desarrollo del alumno

Ejercicio propuesto 2

Demuestre, escribiendo el desarrollo algebraico como comentario de R, que si todos los estratos tienen exactamente la misma desviación estándar, la afijación óptima coincide con la afijación proporcional. Luego compruébelo numéricamente en R utilizando los mismos \(N_h\) del ejemplo anterior, pero asignando el mismo valor de \(S_h\) a las tres áreas.

# Espacio para el desarrollo del alumno

Unidad 4: Muestreo por Conglomerados

Ejemplo resuelto: comedores populares como conglomerados

Una organización social trabaja con seis comedores populares de un distrito, considerados como conglomerados, cada uno con un número distinto de beneficiarios. Se seleccionan dos comedores completos y se estima el promedio de beneficiarios a partir únicamente de los conglomerados elegidos.

comedores <- c(C1 = 12, C2 = 9, C3 = 15, C4 = 11, C5 = 8, C6 = 14)

# Se reproduce la selección del documento teórico: los comedores C3 y C5
# (en la práctica, la selección se haría con: sample(names(comedores), 2))
seleccionados <- c("C3", "C5")
comedores[seleccionados]
## C3 C5 
## 15  8
# El estimador de conglomerados es el promedio simple de los conglomerados seleccionados
media_conglomerados <- mean(comedores[seleccionados])
media_conglomerados
## [1] 11.5

El resultado, 11.5 beneficiarios en promedio, coincide con el obtenido en el documento teórico.

Ejercicio propuesto 1

Una red de ocho postas de salud rurales reporta la siguiente cantidad de atenciones semanales: 22, 18, 30, 25, 15, 28, 20 y 24. Seleccione aleatoriamente tres postas como conglomerados usando sample(), calcule el estimador de conglomerados para el promedio de atenciones semanales, y compárelo con la media real de las ocho postas calculada con mean().

# Espacio para el desarrollo del alumno

Unidad 5: Estadística No Paramétrica

Las pruebas no paramétricas se emplean cuando no es razonable asumir que la variable de interés sigue una distribución conocida, o cuando los datos son de naturaleza ordinal, o el tamaño de muestra es reducido. R incluye funciones ya construidas para las pruebas más utilizadas, pero en cada caso se muestra primero el cálculo manual del estadístico, y luego la función de R que produce el mismo resultado de forma directa.

Ejemplo resuelto: prueba Chi-cuadrado de bondad de ajuste

Se lanza un dado 60 veces, obteniéndose las frecuencias observadas 12, 8, 11, 9, 10 y 10 para las caras del 1 al 6. Bajo la hipótesis nula de que el dado es equilibrado, la frecuencia esperada en cada cara es 10.

observadas <- c(12, 8, 11, 9, 10, 10)
esperadas <- rep(10, 6)  # rep() repite el valor 10 seis veces

# Cálculo manual del estadístico Chi-cuadrado, siguiendo la fórmula
chi_cuadrado_manual <- sum((observadas - esperadas)^2 / esperadas)
chi_cuadrado_manual
## [1] 1
# chisq.test() realiza el mismo cálculo de forma directa
# p = rep(1/6, 6) indica que, bajo H0, cada cara tiene probabilidad 1/6
prueba_chi <- chisq.test(x = observadas, p = rep(1/6, 6))
prueba_chi
## 
##  Chi-squared test for given probabilities
## 
## data:  observadas
## X-squared = 1, df = 5, p-value = 0.9626

El estadístico calculado a mano (1.0) coincide con el valor X-squared que entrega chisq.test(). Como el p-valor es mayor a 0.05, no se rechaza la hipótesis de que el dado es equilibrado.

Ejemplo resuelto: prueba U de Mann-Whitney

Se comparan los ingresos mensuales, en cientos de soles, de cinco hogares del distrito A y cinco hogares del distrito B.

distrito_A <- c(18, 22, 15, 25, 20)
distrito_B <- c(30, 28, 35, 26, 32)

# wilcox.test() con dos muestras independientes realiza la prueba U de Mann-Whitney
prueba_mannwhitney <- wilcox.test(distrito_A, distrito_B)
prueba_mannwhitney
## 
##  Wilcoxon rank sum exact test
## 
## data:  distrito_A and distrito_B
## W = 0, p-value = 0.007937
## alternative hypothesis: true location shift is not equal to 0

El estadístico W que entrega R corresponde al valor \(U\) calculado manualmente en el documento teórico. Con un p-valor menor a 0.05, se concluye que existe una diferencia significativa entre los ingresos de ambos distritos.

Ejemplo resuelto: correlación de rangos de Spearman

Seis pequeñas empresas reportan su posición relativa (rango) en gasto de publicidad y en nivel de ventas.

rango_publicidad <- c(1, 2, 3, 4, 5, 6)
rango_ventas <- c(2, 1, 4, 3, 6, 5)

# cor() con method = "spearman" calcula directamente el coeficiente de Spearman
correlacion_spearman <- cor(rango_publicidad, rango_ventas, method = "spearman")
correlacion_spearman
## [1] 0.8285714
# cor.test() ademas entrega el p-valor asociado a la prueba de significancia
cor.test(rango_publicidad, rango_ventas, method = "spearman")
## 
##  Spearman's rank correlation rho
## 
## data:  rango_publicidad and rango_ventas
## S = 6, p-value = 0.05833
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.8285714

El coeficiente obtenido, aproximadamente 0.829, confirma el resultado del cálculo manual: una correlación positiva y fuerte entre el gasto en publicidad y el nivel de ventas.

Ejercicio propuesto 1

En una fiscalización de pesos de un producto envasado, se esperaba que las 80 unidades revisadas se distribuyeran equitativamente entre cuatro categorías de calidad (A, B, C, D). Las frecuencias observadas fueron 25, 15, 22 y 18. Realice en R la prueba Chi-cuadrado de bondad de ajuste, primero de forma manual y luego con chisq.test(), y concluya con un nivel de significancia de 0.05.

# Espacio para el desarrollo del alumno

Ejercicio propuesto 2

Se comparan los tiempos de atención, en minutos, de dos ventanillas de un banco: Ventanilla 1 con 8, 12, 7, 15 y 10 minutos; Ventanilla 2 con 18, 20, 16, 22 y 19 minutos. Aplique en R la prueba U de Mann-Whitney con wilcox.test() y determine si existe diferencia significativa entre ambas ventanillas.

# Espacio para el desarrollo del alumno

Ejercicio propuesto 3

Seis estudiantes obtuvieron los siguientes rangos en un examen de matemáticas y en un examen de estadística: Matemáticas con rangos 1, 2, 3, 4, 5, 6; Estadística con rangos 2, 1, 3, 5, 4, 6. Calcule en R el coeficiente de correlación de Spearman entre ambos exámenes, con cor() y con cor.test(), e interprete el resultado.

# Espacio para el desarrollo del alumno

Solucionario de los Ejercicios Propuestos

A continuación se resuelve, en R, cada uno de los ejercicios propuestos a lo largo del notebook, siguiendo el mismo orden de las unidades anteriores.

Solución al Ejercicio 1 (Fundamentos del Muestreo)

ventas_12 <- c(150, 210, 175, 240, 190, 205, 230, 165, 220, 195, 180, 250)
N <- length(ventas_12)

mu <- mean(ventas_12)
mu
## [1] 200.8333
sigma2 <- var(ventas_12) * (N - 1) / N
sigma2
## [1] 865.9722
set.seed(1)  # fija la semilla aleatoria para que el resultado sea reproducible
muestra_12 <- sample(ventas_12, 5)
muestra_12
## [1] 220 240 230 150 210
y_barra <- mean(muestra_12)
y_barra
## [1] 210
error_muestral <- y_barra - mu
error_muestral
## [1] 9.166667

Solución al Ejercicio 2 (Fundamentos del Muestreo)

# Primera fuente de error no muestral: sesgo de cobertura.
# El padrón telefónico de cinco años de antigüedad excluye sistemáticamente a los
# hogares que se mudaron, cambiaron de número o nunca tuvieron línea fija,
# sin importar qué tan grande sea la muestra extraída de dicho padrón.
#
# Segunda fuente de error no muestral: sesgo de no respuesta.
# Los hogares que no contestan la llamada telefónica pueden diferir sistemáticamente,
# en su nivel de ingreso, de los que sí responden. En ambos casos, aumentar el
# tamaño de la muestra no corrige el sesgo, ya que este se origina antes del
# proceso de selección aleatoria propiamente dicho.

Solución al Ejercicio 1 (Muestreo Aleatorio Simple y Sistemático)

p_piloto <- 6 / 20
Z <- 1.96
E <- 0.04
N <- 350

n0 <- (Z^2 * p_piloto * (1 - p_piloto)) / E^2
n0
## [1] 504.21
n <- n0 / (1 + (n0 - 1) / N)
n_final <- ceiling(n)
n_final
## [1] 207

El tamaño de muestra necesario es de 207 comerciantes.

Solución al Ejercicio 2 (Muestreo Aleatorio Simple y Sistemático)

N <- 840
n <- 12

k <- N / n
k
## [1] 70
set.seed(2)
inicio <- sample(1:k, 1)
inicio
## [1] 70
primeras_seis <- seq(from = inicio, by = k, length.out = 6)
primeras_seis
## [1]  70 140 210 280 350 420

Solución al Ejercicio 1 (Muestreo Estratificado)

N_h <- c(Administracion = 8, Ventas = 15, Produccion = 27)
S_h <- c(Administracion = 90, Ventas = 380, Produccion = 160)
N <- sum(N_h)
n <- 18

n_h_proporcional <- n * (N_h / N)
round(n_h_proporcional, 1)
## Administracion         Ventas     Produccion 
##            2.9            5.4            9.7
n_h_optima <- n * (N_h * S_h) / sum(N_h * S_h)
round(n_h_optima, 1)
## Administracion         Ventas     Produccion 
##            1.2            9.6            7.2

Nuevamente, la afijación óptima privilegia al área de Ventas, la de mayor variabilidad del gasto mensual.

Solución al Ejercicio 2 (Muestreo Estratificado)

# Demostración algebraica:
# Si S_1 = S_2 = ... = S_L = S (una constante), la fórmula de Neyman
#   n_h = n * (N_h * S_h) / sum(N_i * S_i)
# se reduce a
#   n_h = n * (N_h * S) / (S * sum(N_i)) = n * (N_h / N)
# porque el factor común S se cancela entre el numerador y el denominador.
# Esta última expresión es exactamente la fórmula de la afijación proporcional.

# Comprobación numérica: se asigna la misma desviación estándar a los tres estratos
N_h <- c(Administracion = 8, Ventas = 15, Produccion = 27)
S_igual <- c(Administracion = 200, Ventas = 200, Produccion = 200)
N <- sum(N_h)
n <- 18

n_h_proporcional <- n * (N_h / N)
n_h_optima_igual <- n * (N_h * S_igual) / sum(N_h * S_igual)

round(n_h_proporcional, 3)
## Administracion         Ventas     Produccion 
##           2.88           5.40           9.72
round(n_h_optima_igual, 3)
## Administracion         Ventas     Produccion 
##           2.88           5.40           9.72
# Se verifica que ambos vectores son idénticos
all.equal(as.numeric(n_h_proporcional), as.numeric(n_h_optima_igual))
## [1] TRUE

Solución al Ejercicio 1 (Muestreo por Conglomerados)

postas <- c(22, 18, 30, 25, 15, 28, 20, 24)

media_real <- mean(postas)
media_real
## [1] 22.75
set.seed(3)
seleccionadas <- sample(postas, 3)
seleccionadas
## [1] 15 18 25
media_conglomerados <- mean(seleccionadas)
media_conglomerados
## [1] 19.33333
diferencia <- media_conglomerados - media_real
diferencia
## [1] -3.416667

Solución al Ejercicio 1 (Estadística No Paramétrica)

observadas <- c(25, 15, 22, 18)
esperadas <- rep(20, 4)

chi_manual <- sum((observadas - esperadas)^2 / esperadas)
chi_manual
## [1] 2.9
chisq.test(x = observadas, p = rep(1/4, 4))
## 
##  Chi-squared test for given probabilities
## 
## data:  observadas
## X-squared = 2.9, df = 3, p-value = 0.4073

Como el estadístico (2.90) es menor al valor crítico de referencia (7.81) y el p-valor es mayor a 0.05, no se rechaza la hipótesis de equidistribución entre las categorías de calidad.

Solución al Ejercicio 2 (Estadística No Paramétrica)

ventanilla_1 <- c(8, 12, 7, 15, 10)
ventanilla_2 <- c(18, 20, 16, 22, 19)

wilcox.test(ventanilla_1, ventanilla_2)
## 
##  Wilcoxon rank sum exact test
## 
## data:  ventanilla_1 and ventanilla_2
## W = 0, p-value = 0.007937
## alternative hypothesis: true location shift is not equal to 0

El p-valor resultante es menor a 0.05, por lo que se concluye que existe una diferencia estadísticamente significativa entre los tiempos de atención de ambas ventanillas.

Solución al Ejercicio 3 (Estadística No Paramétrica)

rango_matematicas <- c(1, 2, 3, 4, 5, 6)
rango_estadistica <- c(2, 1, 3, 5, 4, 6)

cor(rango_matematicas, rango_estadistica, method = "spearman")
## [1] 0.8857143
cor.test(rango_matematicas, rango_estadistica, method = "spearman")
## 
##  Spearman's rank correlation rho
## 
## data:  rango_matematicas and rango_estadistica
## S = 4, p-value = 0.03333
## alternative hypothesis: true rho is not equal to 0
## sample estimates:
##       rho 
## 0.8857143

El coeficiente obtenido, cercano a 0.886, indica una asociación positiva muy fuerte: los estudiantes que obtienen mejores posiciones relativas en Matemáticas tienden también a obtener mejores posiciones relativas en Estadística.

Cierre del notebook

Este notebook demostró que cada resultado obtenido mediante el desarrollo algebraico manual, presentado en el documento teórico, puede reproducirse exactamente en R, ya sea traduciendo la fórmula paso a paso o utilizando funciones ya incorporadas en el lenguaje, como chisq.test(), wilcox.test() o cor.test(). Se recomienda que los estudiantes trabajen primero el cálculo manual de cada ejercicio propuesto, y utilicen después el código de R únicamente para verificar su propio resultado, de manera que el programa refuerce la comprensión conceptual en lugar de reemplazarla.