Créditos al Dr. Giovany Bavativa Márquez PhD en Estadística, MSc en Big Data, MSc en Estadística

limpiar entorno

rm(list = ls()) # Se utiliza para borrar todos los objetos del espacio de trabajo.
graphics.off() # Se utiliza para cerrar todas las ventanas gráficas abiertas.

0. Carga de Paquetes (Global Setup)

# Establece opciones globales para R, desactivando la notificación de advertencias y configurando otras opciones de ejecución.
options(scipen=999, warn=-1, survey.lonely.psu="certainty")

# Establece las opciones globales de 'knitr' para ocultar los mensajes, advertencias, y controlar la visualización del código.
knitr::opts_chunk$set(warning=FALSE, message=FALSE, echo = TRUE, fig.align  = "center")

# Define un vector con los nombres de los paquetes necesarios para el análisis.
pq <- c("tidyverse", "data.table", "splitstackshape", "readxl", "here", "samplesize4surveys", "TeachingSampling", "writexl", "kableExtra", "scales", "survey", "patchwork", "srvyr", "stratification", "stringi")

# Verifica qué paquetes ya están instalados.
instalar <- pq %in% installed.packages()  

if(length(pq[!instalar]) > 0) install.packages(pq[!instalar]) 


# Carga todos los paquetes listados en 'pq' para que estén disponibles en el script.
invisible(lapply(pq,library,character.only=TRUE))

TITULO

Diseño Muestral para la Evaluación del Programa IRACA en las Comunidades Étnicas en Colombia

1. CONTEXTO DE LA INVESTIGACION

El Programa IRACA (Infraestructura Rural en Áreas de Comunidades Étnicas) busca mejorar la calidad de vida de los hogares en las comunidades indígenas y afrodescendientes en Colombia. Por lo que es importante realizar una evaluación para medir los impactos de este programa y garantizar la equidad en las intervenciones. Este estudio busca comprender el alcance y los efectos de los ciclos operativos del programa en los hogares de las comunidades étnicas en los años 2015-2016 y 2017-2018, lo que permitirá ajustar políticas públicas para mejorar los resultados en estas poblaciones vulnerables.

1.1. Objetivo

Evaluar los impactos del Programa IRACA (Infraestructura Rural en Áreas de Comunidades Étnicas) en los hogares de las comunidades indígenas y afrodescendientes de Colombia durante los ciclos operativos 2015-2016 y 2017-2018, con el fin de medir su efectividad en la mejora de la calidad de vida y garantizar la equidad en las intervenciones.

1.2. Pregunta de Investigación

¿El Programa IRACA tiene un efecto significativo en las condiciones de vida de las comunidades étnicas en Colombia?

1.3. Planteamiento de la hipótesis

1.3.1. H0: El Programa IRACA no tiene un efecto significativo en las condiciones de vida de las comunidades étnicas en Colombia.

1.3.2. H1: El Programa IRACA tiene un efecto significativo en las condiciones de vida de las comunidades étnicas en Colombia.

2. MARCO MUESTRAL

# Carga el archivo Excel con los datos del marco muestral y convierte todas las variables de tipo texto a mayúsculas.
# Explicación: Esta línea importa los datos de un archivo Excel (base iraca.xlsx) y convierte todas las columnas de texto (caracteres) en mayúsculas para facilitar su procesamiento posterior.
datos <- read_excel(here::here("data/base iraca.xlsx")) %>% 
         mutate_if(is.character, str_to_upper) 
#dim(datos)
glimpse(datos)
## Rows: 29,721
## Columns: 8
## $ Vigencia                <dbl> 2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015…
## $ CodigoMunicipioAtencion <chr> "05837", "05837", "05837", "05837", "05837", "…
## $ NombreMunicipioAtencion <chr> "TURBO", "TURBO", "TURBO", "TURBO", "TURBO", "…
## $ Zona                    <chr> "RURAL DISPERSO", "RURAL DISPERSO", "RURAL DIS…
## $ Etnia                   <chr> "INDIGENA", "INDIGENA", "INDIGENA", "INDIGENA"…
## $ `Consejo/Resguardo`     <chr> "RESGUARDO INDÍGENA CAIMAN NUEVO", "RESGUARDO …
## $ Comunidad               <chr> "CAIMAN ALTO", "CAIMAN ALTO", "CAIMAN ALTO", "…
## $ CodigoFamilia           <dbl> 716, 715, 660, 655, 654, 648, 637, 957, 280, 4…
#write_xlsx(datos, "datos.xlsx")


# Se utiliza la función cat() para mostrar la cantidad de variables y de filas en el dataset
cat("La base de datos contiene", ncol(datos), "variables y", nrow(datos), "registros.\n")
## La base de datos contiene 8 variables y 29721 registros.

2.1. Variable de Interés:

Este bloque genera una tabla que muestra la cantidad de beneficiarios por etnia y la presenta utilizando la librería kableExtra con formato en un estilo “striped” para una mejor visualización. A continuación se genera una tabla con la cantidad de beneficiarios por etnia y la presenta de manera estilizada.

Tabla 1. Distribución de Beneficiarios por Etnia

# Usando table() para contar ocurrencias
tab1 = as.data.frame(table(datos$Etnia)) %>%
  rename(`Etnia` = Var1, `Cantidad de beneficiarios` = Freq)


# Mostrar la tabla con kable y formato
knitr::kable(tab1, digits = 0) %>%
  kable_styling(bootstrap_options = "striped", full_width = F)
Etnia Cantidad de beneficiarios
AFROCOLOMBIANO – NEGRO 12498
INDIGENA 17029
ND 194

Detalle de la variable de interés:

AFROCOLOMBIANO–NEGRO: 12498 beneficiarios.

INDÍGENA: 17029 beneficiarios.

ND (No definida): 194 beneficiarios.

Nota: “ND” generalmente significa “No Definido” o “No Disponible”. Esto podría indicar que para 194 beneficiarios, no se ha registrado o no se ha definido su etnia de manera específica en los datos. Es posible que no se haya proporcionado información sobre su etnia o que esta no esté disponible en los registros.

2.2. Descripción del marco muestral

La base de datos contiene 8 variables y 29721 registros que permiten identificar los territorios étnicos, como resguardos y consejos comunitarios. Sin embargo, este campo está representado como una variable de texto no estandarizada, lo que puede generar inconsistencias en los datos. Para corregir esto, se llevó a cabo un proceso de preprocesamiento con el fin de realizar una canonicalización.

La canonicalización es una técnica utilizada para limpiar y estandarizar los datos, asegurando que diferentes variantes o formas de representación de un mismo valor se conviertan en una única forma estándar. Esto permite que los datos sean más consistentes y fáciles de analizar.

a. Proceso de Canonicalización

#Canonicalization Process
# preprocesamiento
# Proceso de Canonicalización de la columna 'Consejo/Resguardo' para estandarizar nombres de territorios.
# Explicación: Este bloque realiza un preprocesamiento de la columna Consejo/Resguardo, limpiando y estandarizando los valores para garantizar que no haya errores en los nombres de los territorios.
datos$`Consejo/Resguardo` <- stri_trans_general(datos$`Consejo/Resguardo`,"Latin-ASCII")
datos$`Consejo/Resguardo` <- gsub("'", "", datos$`Consejo/Resguardo`) # Elimina comillas
datos$`Consejo/Resguardo` <- gsub("  ", " ", datos$`Consejo/Resguardo`) # Elimina espacios dobles
datos$`Consejo/Resguardo` <- gsub("   ", " ", datos$`Consejo/Resguardo`) # Elimina tres espacios
datos$`Consejo/Resguardo` <- gsub("[[:punct:]]", " ", datos$`Consejo/Resguardo`) # Elimina signos de puntuación
datos$`Consejo/Resguardo` <- gsub("[[:cntrl:]]", " ", datos$`Consejo/Resguardo`) # Elimina caracteres de control
datos$`Consejo/Resguardo` <- gsub("^[[:space:]]+", "", datos$`Consejo/Resguardo`) # Elimina espacios al inicio
datos$`Consejo/Resguardo` <- gsub("[[:space:]]+$", "", datos$`Consejo/Resguardo`) # Elimina espacios al final
datos$`Consejo/Resguardo` <- gsub('CURBARADO', 'CURVARADO', datos$`Consejo/Resguardo`) # Corrección de nombres erróneos
#datos$`Consejo/Resguardo` <- gsub('CURBARADO', 'CURVARADO', datos$`Consejo/Resguardo`)
datos$`Consejo/Resguardo` <- gsub('NUESTROS ANCESTROS DEL RIO MEJICANO', 'NUESTRO ANCESTRO DEL RIO MEJICANO', datos$`Consejo/Resguardo`) # Corrección de nombre largo

b. Cálculo de Información Descriptiva

Este código cuenta la cantidad de valores únicos en las columnas Consejo/Resguardo, CodigoMunicipioAtencion, y Comunidad, y almacenan el número de filas resultantes.

# Calcula el número de diferentes territorios, municipios y comunidades en los datos.

Inf1 <- datos %>% 
        count(`Consejo/Resguardo`) %>% 
        nrow() # Cuenta los diferentes consejos/resguardos

Inf2 <- datos %>% 
        count(CodigoMunicipioAtencion) %>% 
        nrow() # Cuenta los diferentes municipios

Inf3 <- datos %>% 
        count(Comunidad) %>% 
        nrow() # Cuenta las diferentes comunidades

2.3. Estratos

Definición del muestreo en general en cada una de las etapas

Selección forzada: Algunas Unidades Primarias de Muestreo (UPMs) son seleccionadas de manera obligatoria antes de realizar cualquier otro muestreo aleatorio. Esto se hace con el fin de asegurar que las UPMs de especial interés o relevancia para la investigación estén representadas en la muestra. Una vez que estas UPMs son incluidas de manera forzada, se procede a realizar el muestreo aleatorio en el resto de las unidades. En el caso de los estratos con inclusión forzosa, se seleccionan todas las UPMs de ese estrato, garantizando su inclusión completa en el estudio.

Imagen 1. Esquema de muestreo

Texto alternativo

Se propone un diseño de muestreo probabilístico estratificado en dos etapas. Las Unidades Primarias de Muestreo (UPMs) se estratifican según el método de Lavallé-Hidroglou (1998):

Primera etapa: En esta fase, la población se divide en estratos utilizando el método de Lavallé-Hidroglou (1998), lo cual es una técnica que agrupa las unidades de muestreo de manera que sean más homogéneas dentro de cada estrato.

Segunda etapa: Dentro de cada estrato, se seleccionan las Unidades Primarias de Muestreo (UPMs) utilizando un muestreo aleatorio simple (M.A.S.). El MAS se aplica dentro de cada estrato, donde las Unidades Primarias de Muestreo (UPMs) son seleccionadas de manera aleatoria sin ninguna preferencia previa. En este caso, el MAS no se menciona como “M.A.S.” explícitamente en el codigo, pero se está describiendo como un muestreo aleatorio sin reposición dentro de los estratos seleccionados. La aleatoriedad en la selección de las UPMs es una característica clave del Muestreo Aleatorio Simple.

Tabla 2. Diferencias entre Estratificación óptima y Muestreo Aleatorio Simple (MAS)

Característica Estratificación óptima Muestreo Aleatorio Simple (MAS)
Objetivo Maximizar precisión y eficiencia Obtener muestra representativa aleatoria
División de la población Población dividida en estratos homogéneos No hay división, muestreo aleatorio total
Precisión Alta precisión, especialmente con poblaciones heterogéneas Menor precisión, más propenso a sesgo en poblaciones heterogéneas
Uso Cuando hay variabilidad significativa entre subgrupos En poblaciones homogéneas o cuando no hay estratificación previa
Tamaño de la muestra Proporcional a la variabilidad en cada estrato Un tamaño fijo de muestra para toda la población
Costo y complejidad Mayor costo y complejidad (requiere estratificación) Menor costo y complejidad, fácil de implementar

Aquí se crea una tabla que cuenta el número de UPMs en cada municipio y consejo/resguardo.

# Cuenta la cantidad de UPM (Unidad Primaria de Muestreo) por municipio y consejo/resguardo.

upm <- datos %>% 
       count(CodigoMunicipioAtencion,`Consejo/Resguardo`)

glimpse(upm)
## Rows: 258
## Columns: 3
## $ CodigoMunicipioAtencion <chr> "05475", "05475", "05475", "05837", "05837", "…
## $ `Consejo/Resguardo`     <chr> "CONSEJO COMUNITARIO MAYOR DEL MEDIO ATRATO AC…
## $ n                       <int> 67, 57, 40, 201, 54, 52, 336, 14, 200, 200, 30…

La distribución del número de beneficiarios por UPM presenta un comportamiento asimétrico, por lo que una estrategia de estratificación óptima es conveniente.

Grafico 1. Histograma para visualizar la distribución del número de beneficiarios por UPM.

# Cargar los paquetes necesarios
library(ggplot2)
library(plotly)

# Crear el histograma con ggplot2
p <- upm %>% 
  ggplot(aes(x = n)) +
  geom_histogram(color = "white", bins = 30, fill = "steelblue") + 
  labs(y = "Cantidad de UPMs", x = "Número de beneficiarios") + 
  theme_bw()  # Guardar el gráfico en una variable 'p'

# Convertir el gráfico en interactivo con ggplotly
ggplotly(p)

El histograma es importante porque nos permite visualizar cómo se distribuyen los datos a lo largo de un rango de valores. Esta muestra la distribución del número de beneficiarios por UPM.

la mayoría de las UPMs tienen un número de beneficiarios pequeño a moderado, concentrándose en un rango de 0 a 500 beneficiarios. El número de beneficiarios más frecuente es de 107, lo que indica que un grupo importante de UPMs tiene alrededor de esa cantidad de beneficiarios. Sin embargo, hay algunas UPMs con un número significativamente mayor de beneficiarios, lo que indica que no todas las UPMs tienen un tamaño de población similar, lo que puede generar una distribución asimétrica.

El hecho de que haya un pico alrededor de 107 beneficiarios y que algunos valores se desvíen a la derecha, indica que existen UPMs con cantidades significativamente mayores de beneficiarios. Esto señala que hay una gran variabilidad en el número de beneficiarios entre las UPMs. Algunas UPMs tienen un número bajo de beneficiarios, mientras que otras tienen números más altos, lo que implica que no todas las UPMs tienen un tamaño de población similar.

el histograma tiene un comportamiento asimétrico. Específicamente, la distribución es asimétrica a la derecha (sesgada positivamente), lo que significa que la mayoría de las UPMs tienen pocos beneficiarios (concentrados entre 0 y 500).

2.3.1. método propuesto por Lavallé e Hidroglou (1988) mediante el algoritmo de Kozak (2004):

Con el propósito de aumentar la eficiencia de la inferencia, se usa el método propuesto por Lavallé e Hidroglou (1988) mediante el algoritmo de Kozak (2004) que permite estratificar una población asimétrica. Para ello, se usa la cantidad de beneficiarios por UPM como variable auxiliar con el fin de estratificar a las UPM mediante 4 estratos. La distribución de las UPMs por estrato queda de la siguiente manera, donde además el algoritmo nos permite encontrar el tamaño óptimo de muestra para las UPMs en cada estrato.

Tabla 3. método propuesto por Lavallé e Hidroglou (1988) mediante el algoritmo de Kozak (2004)

Aspecto Lavallé e Hidroglou (1988) Algoritmo de Kozak (2004)
Enfoque Principal Estratificación de muestras en función de características específicas. Optimización de la asignación de recursos en redes.
Área de Aplicación Estadística y muestreo para mejorar la precisión en estimaciones. Optimización computacional de redes y flujos.
Métodos Utilizados Estratificación basada en la variabilidad dentro de los estratos. Algoritmo de optimización para encontrar soluciones eficientes en redes.
Problema que Aborda Mejora de la precisión en estimaciones estadísticas en muestras complejas. Optimización de flujos en redes, buscando soluciones de costos mínimos.
Relevancia en Investigación Mejora de la eficiencia de los censos y encuestas estratificadas. Utilización en la optimización de la asignación de recursos o logística en redes.
Objetivo Mejorar la precisión y reducir el error en las estimaciones de muestras. Dividir la población en grupos (estratos) de manera eficiente para optimizar recursos.
Método Computacional Puede usar métodos de simulación, como el algoritmo de Kozak para dividir la población. Requiere cálculos computacionales intensivos para optimizar redes.
Aplicación en el Código Estratificación de la población en 4 estratos con un CV de 0.05. El algoritmo de Kozak se utiliza como parte del proceso de estratificación en el código proporcionado.
Resultado Esperado Estimación más precisa de los parámetros al trabajar con estratos bien definidos. Mejor división de la población, optimizando los recursos de acuerdo a las características de cada estrato.

Se elige por su capacidad para manejar eficientemente distribuciones asimétricas y para optimizar el proceso de estratificación en poblaciones complejas como la que describe en este estudio de muestreo (Unidades Primarias de Muestreo, o UPMs). A continuación, te explico la importancia de este método en lugar de otros:

  • Permite estratificar de manera eficiente en presencia de distribuciones sesgadas.

  • Aprovecha una variable auxiliar relevante (número de beneficiarios por UPM).

  • Optimiza el tamaño de muestra por estrato, mejorando la precisión de las inferencias.

  • Aumenta la eficiencia y reduce el error relativo del muestreo, lo cual es crucial para análisis con gran variabilidad en las UPMs.

2.3.2. Método de estratificación propuesto por Lavallé e Hidroglou, utilizando el algoritmo de Kozak para dividir la población en 4 estratos según la cantidad de beneficiarios por UPM.

estrato = strata.LH(x = upm$n,  CV = 0.05, Ls=4, algo = "Kozak")
estrato
## Given arguments:
## x = upm$n
## CV = 0.05, Ls = 4, takenone = 0, takeall = 0
## allocation: q1 = 0.5, q2 = 0, q3 = 0.5
## model = none
## algo = Kozak: minsol = 1000, idopti = nh, minNh = 2, maxiter = 10000, 
##               maxstep = 15, maxstill = 150, rep = 5, trymany = TRUE
## 
## Strata information:
##           |      type rh |     bh   E(Y)    Var(Y)  Nh nh   fh
## stratum 1 | take-some  1 |   69.5  36.48    322.73 153  8 0.05
## stratum 2 | take-some  1 |  182.0 114.45    930.32  55  5 0.09
## stratum 3 | take-some  1 |  455.5 269.93   3689.29  44  8 0.18
## stratum 4 |  take-all  1 | 1577.0 994.50 185498.92   6  6 1.00
## Total                                              258 27 0.10
## 
## Total sample size: 27 
## Anticipated population mean: 115.1977 
## Anticipated CV: 0.04918726 
## Note: CV=RRMSE (Relative Root Mean Squared Error) because takenone=0.

Tabla 4. Información de los Estratos (Strata Information)

Stratum Type rh bh E(Y) Var(Y) Nh nh fh
Stratum 1 take-some 1 79.0 37.66 355.00 158 9 0.06
Stratum 2 take-some 1 192.0 122.36 1034.91 53 5 0.09
Stratum 3 take-some 1 455.5 276.07 3405.48 41 7 0.17
Stratum 4 take-all 1 1577.0 994.50 185498.92 6 6 1.00

2.3.3. Conclusiones

Datos de Entrada y Parámetros

x = upm$n: Variable ‘n’ de datos para la estratificación.

CV = 0.05: Coeficiente de variación (error relativo máximo del 5%). Ls = 4: Población dividida en 4 estratos.

allocation: Distribución de muestra 50% para estratos 1 y 3, 0% para el estrato 2.

algo = Kozak: Algoritmo utilizado para optimizar la asignación de muestras.

Parámetros del Algoritmo

minsol = 1000: Mínimo de soluciones generadas.

idopti = nh: Uso de la asignación óptima de Nash.

minNh = 2: Tamaño mínimo de muestra en cada estrato.

maxiter = 10000: Máximo de iteraciones permitidas.

rep = 5: Repeticiones para estabilidad de resultados.

Resumen del Algoritmo

  • Tamaño Total de la Muestra: 27

  • Media Anticipada de la Población: 112.1547

  • Coeficiente de Variación Anticipado (CV): 0.04905467

Nota: CV = RRMSE (Error Cuadrático Medio Relativo)

Calculo del tamaño de la muestra con la fórmula definida en el pliego de condiciones.

Fórmula:

\[ n = \frac{n_0}{1 + \frac{n_0}{N}} \]

Donde:

\[ n_0 = \frac{z_{\left(1-\frac{\alpha}{2}\right)}^2 \cdot S^2}{\epsilon^2} \]

Y:

\[ S^2 = P(1-P) \cdot \text{DEFF} \]

Se utiliza la función ss4p del paquete samplesize4surveys para calcular el tamaño de la muestra de acuerdo a una serie de parámetros, como el tamaño de la población, el parámetro trazador y el margen de error.

nTam <- samplesize4surveys::ss4p(N = nrow(datos),
                                 P = 0.5,
       error = "me",
       delta = 0.05,
       DEFF = 2,
       conf = 0.95)

# Usar cat() para mostrar el valor de nTam
cat("El tamaño de la muestra calculado es:", nTam, "\n")
## El tamaño de la muestra calculado es: 749

2.4. Distribuir el tamaño de la muestra entre los estratos de forma proporcional.

\[ n_h = \frac{n \cdot N_h}{\sum_{h=1}^{4} N_h} \]

# Definir los valores dados
z <- 1.96       # Valor crítico para un nivel de confianza del 95% (z_(1-α/2))
P <- 0.5        # Proporción de la población (P = 0.5)
DEFF <- 2       # Efecto de diseño
epsilon <- 0.05 # Margen de error (ε)
N <- 29721     # Tamaño total de la población (N)

# Calcular la varianza S^2
S2 <- P * (1 - P) * DEFF

# Calcular el tamaño de la muestra inicial (n_0)
n0 <- (z^2 * S2) / (epsilon^2)

# Ajustar el tamaño de la muestra para población finita
n <- n0 / (1 + (n0 / N))

# Mostrar los resultados
cat("El tamaño de muestra inicial (n0) es:", round(n0), "\n")
## El tamaño de muestra inicial (n0) es: 768
cat("El tamaño ajustado de la muestra (n) es:", round(n), "\n")
## El tamaño ajustado de la muestra (n) es: 749

a. Definir los parámetros

Primero, definimos los parámetros necesarios para el cálculo. Esto incluye el tamaño total de la muestra, los tamaños de cada estrato, y el tamaño total de la población.

# Parámetros
n_total <- 749  # Tamaño total de la muestra (calculado previamente)
N_total <- 29721  # Tamaño total de la población (Número total de UPMs)
N_h <- c(158, 53, 41, 6)  # Tamaños de la población en cada estrato

b. Calcular el total de la población sumando los tamaños de los estratos

# Sumar los tamaños de cada estrato
total_Nh <- sum(N_h)
total_Nh
## [1] 258

c. Calcular el tamaño de la muestra para cada estrato usando la afijación proporcional

Aplicamos la fórmula de afijación proporcional:

\[ n_h = \frac{n \cdot N_h}{\sum_{h=1}^4 N_h} \]

# Calcular el tamaño de la muestra para cada estrato
n_h <- n_total * N_h / total_Nh

# Usar cat() para imprimir los resultados
cat("Tamaño de muestra para el Estrato 1:", round(n_h[1], 0), "\n")
## Tamaño de muestra para el Estrato 1: 459
cat("Tamaño de muestra para el Estrato 2:", round(n_h[2], 0), "\n")
## Tamaño de muestra para el Estrato 2: 154
cat("Tamaño de muestra para el Estrato 3:", round(n_h[3], 0), "\n")
## Tamaño de muestra para el Estrato 3: 119
cat("Tamaño de muestra para el Estrato 4:", round(n_h[4], 0), "\n")
## Tamaño de muestra para el Estrato 4: 17

d. Crear un dataframe para visualizar los resultados

Para visualizar los resultados, creamos un dataframe que contenga la información de los estratos y el tamaño de la muestra para cada uno.

Tabla 5. Distribución del tamaño de la muestra por estrato

# Crear un dataframe con los resultados
estratos <- data.frame(
  Estrato = 1:4,
  N_h = N_h,
  Tamaño_muestra_estrato = round(n_h, 0)
)

# Mostrar la tabla con kable
kable(estratos, col.names = c("Estrato", "N_h (Cantidad de UPMs)", "Tamaño de muestra en estrato"),
      caption = "Distribución del tamaño de la muestra por estrato") %>%
  kable_styling(bootstrap_options = "striped", full_width = F)
Distribución del tamaño de la muestra por estrato
Estrato N_h (Cantidad de UPMs) Tamaño de muestra en estrato
1 158 459
2 53 154
3 41 119
4 6 17

2.4.1. Análisis

Este proceso tiene el fin de distribuir de manera eficiente la muestra entre los estratos según el tamaño relativo de cada uno en la población, utilizando el método de afijación proporcional. es importante y prevalece sobre otras porque:

Representación proporcional de los estratos: El tamaño de la muestra para cada estrato es directamente proporcional a su tamaño en la población total, asegurando que los estratos más grandes tengan mayor representación y evitando la subrepresentación de los más pequeños.

Eficiencia en la estimación: Distribuye los recursos de muestreo de manera eficiente, asignando más muestras a los estratos con mayor variabilidad, lo que mejora la precisión de las estimaciones.

Simplicidad y facilidad de implementación: Es un método fácil de calcular y aplicar, utilizando una fórmula directa para obtener el tamaño de la muestra en cada estrato.

Minimización del error muestral: Reduce el error de muestreo al asignar muestras de manera proporcional a los estratos con mayor variabilidad o importancia, evitando el sesgo.

Equilibrio entre costo y precisión: Permite una distribución eficiente de los recursos, garantizando una muestra representativa sin malgastar recursos en estratos más pequeños, manteniendo el equilibrio entre costos y precisión.

2.4.2. CONCLUSIONES

Este método es eficiente, ya que distribuye los recursos de muestreo según la variabilidad de cada estrato, mejorando la precisión de las estimaciones. Es fácil de implementar y calcula el tamaño de la muestra para cada estrato de manera directa. Además, minimiza el error muestral al asignar muestras proporcionales a la importancia de cada estrato.

La afijación proporcional también equilibra los costos y la precisión, permitiendo una asignación eficiente de los recursos sin malgastar en los estratos más pequeños.

Tabla 6. Tamaños de muestra por estrato y por etapa

# Explicación: Se divide la cantidad de beneficiarios por UPM en estratos, utilizando los cortes definidos previamente por el algoritmo de estratificación.
cortes <- c(min(upm$n), estrato$bh, max(upm$n))
upm$estrato = cut(x = upm$n, breaks = cortes, include.lowest = T,  right = F, labels = c(1, 2, 3, 4))

nestrato <- data.frame(estrato = factor(seq(1:4)), nIh = estrato$nh)
res <- upm %>% 
       group_by(estrato) %>% 
       summarise(NIh = n(),
                 Nh = sum(n)) %>% 
       ungroup() %>% 
       left_join(nestrato, by = "estrato") %>% 
       mutate(nmh = ceiling(nTam * Nh/sum(Nh))) %>% 
       relocate(estrato, NIh, nIh)

# En la sobremuestra se le aplica el Factor de expansion a tab4

tab4 <- res %>% 
        rename(`Cantidad de UPMs` = NIh,
               `Tamaño muestral de UPMs` = nIh,
               `Cantidad de hogares` = Nh,
               `Tamaño muestral de hogares` = nmh)

knitr::kable(tab4, digits = 0) %>% kable_styling(bootstrap_options = "striped", full_width = F) 
estrato Cantidad de UPMs Tamaño muestral de UPMs Cantidad de hogares Tamaño muestral de hogares
1 153 8 5582 141
2 55 5 6295 159
3 44 8 11877 300
4 6 6 5967 151

3. DEFINICIÓN DE PARÁMETROS Y CÁLCULO DE TAMAÑO DE MUESTRA

3.1. Propósito

Estos parámetros son utilizados para realizar cálculos de tamaño muestral y márgenes de error para diferentes escenarios en una encuesta. Trata de entender cómo el tamaño de la muestra influye en la precisión de los resultados obtenidos de una encuesta, especialmente en términos del margen de error asociado con las estimaciones de un parámetro de proporción (como un porcentaje). Este análisis es importante para planificar una encuesta, ya que un tamaño de muestra adecuado ayuda a obtener estimaciones precisas y confiables.

En este escenario, se utilizan parámetros específicos como:

3.1.1. Efecto de diseño (DEFF)

El valor de 2 es un valor comúnmente usado en encuestas complejas, que ajusta la estimación para tener en cuenta el diseño del muestreo (por ejemplo, estratificado, por conglomerados).

3.1.2. P

Es la proporción esperada en la población (en este caso, se toma un rango de valores desde 0.05 hasta 0.95). P=0.5 es comúnmente usado, ya que maximiza el tamaño de la muestra necesaria.

3.1.3. Delta (margen de error)

Este es el rango de precisión que se desea alcanzar en las estimaciones. Va desde 0.03 (3%) hasta 0.1 (10%), con intervalos de 0.005.

3.1.4. Tamaño de la población (N) y Tamaño de la muestra (n)

Se obtienen de los datos del estudio (por ejemplo, el número total de unidades de muestreo o la suma total del tamaño muestral de los estratos).

3.1.5. Cálculo del tamaño de muestra necesario (ss4p)

La función ss4p de la librería samplesize4surveys se utiliza para calcular el tamaño de la muestra requerido para obtener estimaciones precisas, dado un margen de error (delta), un efecto de diseño (DEFF), y un nivel de confianza (usualmente 95%).

3.1.6. Cálculo del margen de error (me_with_sev_ns)

Una vez que se calcula el tamaño de muestra necesario, se utiliza la función e4p para obtener el margen de error para ese tamaño de muestra específico, lo cual muestra cuán preciso será el estimado del parámetro.

DEFF <- 2 # # Se define el efecto de diseño (DEFF) como 2, que es un valor común para encuestas complejas.
P <- seq(0.05, 0.95, 0.05) # # Se define un rango de proporciones (P) que varían desde 0.05 hasta 0.95 en intervalos de 0.05.
N <- nrow(datos) # # Se obtiene el tamaño de la población, en este caso el número de filas de la base de datos "datos".
n <- sum(res$nmh) # # Se calcula la suma total del tamaño muestral para los hogares en cada estrato, almacenado en "res$nmh".

delta <- seq(0.03, 0.1, 0.005) # Se define un rango para el margen de error, con valores que van de 0.03 a 0.1 en intervalos de 0.005.

# Propósito: Esta función ss4p de la librería samplesize4surveys calcula el tamaño de la muestra necesario para una encuesta, dado un parámetro de proporción (P = 0.5), el efecto de diseño (DEFF = 2), el margen de error (delta) y el nivel de confianza (conf = 0.95).
ns <- samplesize4surveys::ss4p(N = nrow(datos),
                                 P = 0.5,                  error = "me", # Especifica que el error es en función del margen de error.
       delta = delta, # Rango del margen de error.
       DEFF = 2,                 conf = 0.95) # Efecto de diseño (DEFF = 2). # Nivel de confianza del 95%.
       

me_with_sev_ns <- e4p(N, ns, P=0.5, DEFF, conf = 0.95)$Margin_of_error # Propósito: Aquí se utiliza la función e4p para calcular el margen de error para el tamaño de muestra ns bajo los parámetros definidos anteriormente. Esto da el margen de error para los diferentes tamaños de muestra calculados.

Grafica 2. Margen de Error vs Tamaño Muestral

La siguiente gráfica muestra el comportamiento del máximo margen de error (P=0.5) para un parámetro trazador de proporción con diferentes tamaños de muestra.

# Instalar y cargar plotly si aún no lo has hecho
#install.packages("plotly")
library(plotly)

# Suponiendo que ya tienes el dataframe 'me_ns' con 'ns' y 'me'
me_ns <- data.frame(ns = ns, me = me_with_sev_ns)

# Crear el gráfico con ggplot2 (como ya lo tienes)
ggplot_graph <- ggplot(me_ns, aes(x = ns, y = me, group = 1)) +
  geom_point() + 
  geom_hline(yintercept = 5, linetype = 2) + 
  geom_text(aes(label = paste0("n = ", factor(ns))), hjust = - 0.3, vjust = -0.5) + 
  labs(x = "Tamaño de muestra", y = "Margen de error (%)") + 
  theme_bw()

# Convertir el gráfico ggplot2 en un gráfico interactivo con plotly
interactive_graph <- ggplotly(ggplot_graph)

# Mostrar el gráfico interactivo
interactive_graph

3.1.7. Conclusión

La figura y el análisis presentado en el punto anterior busca ilustrar cómo cambia el margen de error al variar el tamaño de la muestra en una encuesta. El comportamiento del margen de error con diferentes tamaños de muestra es visualizado en la gráfica, permitiendo comprender que a medida que el tamaño de la muestra aumenta, el margen de error tiende a disminuir, lo que mejora la precisión de las estimaciones. Esto es crucial para diseñar encuestas con el tamaño adecuado de muestra para obtener resultados confiables dentro de los márgenes de error aceptables.

4. COEFICIENTE DE VARIACIÓN (CV) EN UN ESCENARIO PESIMISTA

Este código en R está diseñado para analizar y visualizar el comportamiento de la variabilidad (medida como el coeficiente de variación o CV) y el margen de error en un escenario de encuesta muestral, considerando distintas condiciones como el tamaño de muestra y el valor del parámetro trazador P. A continuación te explico en detalle los bloques de código:

4.1. Definición de los parámetros

mu <- 1 # # Se define el valor esperado (mu) como 1.
sigma <- mu/2;  # Se define la desviación estándar (sigma) como la mitad del valor esperado.

4.2. Cálculo del Coeficiente de Variación

Tabla 7. Coeficiente de variación (cve) para los diferentes tamaños de muestra en este escenario pesimista.

me_mu_sev_ns <- e4m(N, ns, mu, sigma, DEFF, conf = 0.95)$cve # # Se calcula el coeficiente de variación (cve) para los diferentes tamaños de muestra en este escenario pesimista.
# Propósito: La función e4m calcula el coeficiente de variación (CV) para los tamaños de muestra definidos en el escenario anterior. El coeficiente de variación es una medida de la variabilidad relativa.

tabla <- data.frame(
  "Índice" = 1:length(me_mu_sev_ns),
  "M Error" = me_mu_sev_ns
); tabla

4.2.1. Conclusión

Los valores de la tabla representan márgenes de error asociados a distintas configuraciones o tamaños de muestra dentro del diseño muestral o, y están relacionados con el cálculo de precisión de las estimaciones en función del tamaño de la muestra, el efecto de diseño y la proporción de la población.

4.3. Creación del Dataframe y Visualización

me_mu <- data.frame(ns = ns, me = me_mu_sev_ns) # Se crea un data frame con los tamaños de muestra y los coeficientes de variación.

4.3.1. Coeficiente de variación para la estimación del parámetro de la media usando diferentes tamaños de muestra

Está relacionado con el margen de error en encuestas o estudios de muestreo, específicamente cuando se está evaluando un parámetro trazador de proporción para diferentes tamaños de muestra.

Gráfica 3. Tamaño de la Muestra vs Coeficiente de Variacion (%)

# Cargar las librerías necesarias
library(ggplot2)
library(plotly)

# Supongo que ya tienes el dataframe 'me_mu' con 'ns' y 'me' calculados previamente.

# Crear el gráfico base con ggplot2
ggplot_graph <- me_mu %>% 
  ggplot(aes(x = ns, y = me, group = 1)) + # Se usa ggplot para crear el gráfico con los tamaños de muestra en el eje x y los coeficientes de variación en el eje y.
  geom_point(size = 0.5) + # Se añaden puntos para mostrar la relación entre el tamaño de muestra y el coeficiente de variación.
  ylim(0, 10) + # Se define el límite superior del eje y a 10.
  geom_hline(yintercept = 5, linetype = 2) + # Se añade una línea horizontal en y = 5 para indicar un límite.
  geom_text(aes(label = paste0("n = ", factor(ns))), hjust = -0.3, vjust = -0.5, size = 2.5) + # Se añaden etiquetas para cada punto.
  labs(x = "Tamaño de muestra", y = "Coeficiente de variación (%)") + # Se etiquetan los ejes.
  theme_bw() # Se usa un tema en blanco y negro.

# Convertir el gráfico ggplot2 en un gráfico interactivo con plotly
interactive_graph <- ggplotly(ggplot_graph)

# Mostrar el gráfico interactivo
interactive_graph

A partir de lo anterior se observa que el tamaño muestral propuesto satisface las condiciones exigidas en el pliego. Ahora sobre el escenario muestral propuesto con un mínimo de 749 encuestas, el comportamiento para diferentes valores del parámetro trazador \(P\) es el siguiente:

Gráfica 4. Proporción vs Margen de Error (%)

# Calcular el margen de error
me_with_my_n <- e4p(N, n, P, DEFF, conf = 0.95)$Margin_of_error
me_ns <- data.frame(P = P, me = me_with_my_n)

# Crear el gráfico con ggplot
p <- ggplot(me_ns, aes(x = P, y = me, group = 1)) + 
  geom_point() + 
  geom_line() + 
  geom_hline(yintercept = 5, linetype = 2) + 
  geom_vline(xintercept = 0.5, linetype = 2) + 
  ylim(0, 7.5) + 
  labs(x = "Proporción", y = "Margen de error (%)") + 
  theme_bw()

# Convertir el gráfico de ggplot a un gráfico interactivo con plotly
p_interactivo <- ggplotly(p)

# Mostrar el gráfico interactivo
p_interactivo

5. SOBREMUESTRA

Se refiere a la inclusión de una cantidad adicional de unidades o elementos en la muestra original, más allá de lo que se considera como el tamaño básico de la muestra. Esta técnica se emplea cuando se desea garantizar una mayor precisión en las estimaciones de subgrupos específicos o cuando se anticipa una tasa de no respuesta o de pérdida de datos que podría afectar la representatividad de la muestra.

Es importante usarla:

Subgrupos pequeños: Si hay subgrupos dentro de la población que son pequeños pero importantes para la evaluación (por ejemplo, una población étnica minoritaria o comunidades específicas dentro de un área mayor), se puede aumentar el número de unidades de esos subgrupos en la muestra para obtener estimaciones más precisas sobre ellos. Sin una sobre muestra, estos subgrupos pueden no estar suficientemente representados, lo que afectaría la calidad de los resultados para esos grupos específicos.

Tasa de no respuesta: Si se anticipa que una proporción significativa de los hogares seleccionados no va a responder o participar en el estudio, se puede añadir una sobre muestra para compensar la posible pérdida de datos.

Mayor precisión en estimaciones específicas: Cuando el objetivo es obtener estimaciones más precisas de determinados parámetros en subgrupos o dominios específicos, se puede añadir una sobre muestra a estos dominios para reducir el margen de error y asegurar que las estimaciones sean fiables.

5.1. Calculo del Factor de Expansión

Se aplica el factor de expansión al tamaño muestral de hogares (nmh) en el codigo tab4.

Tabla 7. Tamaño de la muestra ajustados incluyendo un 25% de sobre muestra.

tab5 <- tab4 %>% 
        mutate(`Muestra de hogares incluyendo la sobre muestra` = round(`Tamaño muestral de hogares`*1.25, 0)) # Se calcula el tamaño de la muestra incluyendo un 25% de sobre muestra. Aquí se aplica el factor de expansión

knitr::kable(tab5, digits = 0) %>% kable_styling(bootstrap_options = "striped", full_width = F) # Se muestra la tabla con los tamaños muestrales ajustados, usando un estilo de tabla "striped" para mayor claridad.
estrato Cantidad de UPMs Tamaño muestral de UPMs Cantidad de hogares Tamaño muestral de hogares Muestra de hogares incluyendo la sobre muestra
1 153 8 5582 141 176
2 55 5 6295 159 199
3 44 8 11877 300 375
4 6 6 5967 151 189
# Propósito: Este bloque ajusta los tamaños de muestra calculados para incluir una sobre muestra del 25% y muestra el resultado en una tabla de formato bonito.

5.1.1. Conclusiones

Estrato 1: La sobre muestra incrementó en 38 hogares seleccionados, lo que representa un aumento considerable (aproximadamente un 25% más que el tamaño muestral inicial).

Estrato 2: Aquí, el aumento fue de 41 hogares (aproximadamente un 25% adicional), lo que también mejora la precisión de las estimaciones para este grupo.

Estrato 3: Con un aumento de 72 hogares, este estrato recibió la mayor cantidad de sobre muestra en términos absolutos, lo cual es importante para asegurar una buena representatividad de este grupo más grande.

Estrato 4: El incremento de 38 hogares en este estrato pequeño también refleja un ajuste adecuado para garantizar que la muestra sea suficiente para hacer análisis significativos. En general, la estrategia de sobre muestra aplicada en este diseño muestral mejora la representatividad y precisión de los resultados, asegurando que las estimaciones sean lo más fiables posible, especialmente en subgrupos que de otro modo podrían haber quedado subrepresentados.