Este documento tiene como objetivo aplicar y explicar diversas técnicas de muestreo estadístico utilizando R. Se trabajará con un conjunto de datos poblacional de acciones (acciones.csv) para extraer muestras representativas que permitan realizar inferencias. Cada técnica de muestreo se presentará con su código correspondiente y una explicación de su implementación y propósito.
Antes de realizar cualquier muestreo, es fundamental cargar las herramientas necesarias y nuestro conjunto de datos. También definiremos los parámetros clave para nuestro análisis.
Se utilizarán las siguientes librerías de R:
dplyr: Es una librería fundamental
para la manipulación de datos. Nos permitirá filtrar, agrupar y
seleccionar datos de manera intuitiva y eficiente.readr: Proporciona una forma rápida y
amigable de leer archivos rectangulares como los .csv.Antes de realizar el muestreo, es una buena práctica inspeccionar la
calidad de los datos. Específicamente, verificaremos la presencia de
valores faltantes (NA), ya que estos pueden afectar los
análisis.
El siguiente código realiza tres acciones: 1. Calcula el número total
de celdas con NA en todo el conjunto de datos. 2. Crea un
nuevo dataframe llamado datos_limpios eliminando todas las
filas que contengan al menos un valor NA. 3. Muestra un
resumen del proceso de limpieza.
## fecha precio_cierre sector
## Min. :2013-01-01 Min. :-37.07 Length:3521
## 1st Qu.:2015-06-28 1st Qu.:117.39 Class :character
## Median :2017-12-22 Median :176.90 Mode :character
## Mean :2017-12-27 Mean :178.85
## 3rd Qu.:2020-06-26 3rd Qu.:240.01
## Max. :2022-12-29 Max. :417.48
## clasificacion_crediticia region volumen_transacciones
## Length:3521 Length:3521 Min. :1002
## Class :character Class :character 1st Qu.:3298
## Mode :character Mode :character Median :5536
## Mean :5542
## 3rd Qu.:7871
## Max. :9999
## dividendos capitalizacion_bursatil volatilidad_diaria margen_operativo
## Min. :0.000 Min. : 50064935 Min. :0.500 Min. : 5.00
## 1st Qu.:1.260 1st Qu.:112407108 1st Qu.:1.610 1st Qu.: 8.63
## Median :2.490 Median :172730966 Median :2.690 Median :12.40
## Mean :2.504 Mean :173445414 Mean :2.716 Mean :12.42
## 3rd Qu.:3.760 3rd Qu.:233835495 3rd Qu.:3.820 3rd Qu.:16.12
## Max. :5.000 Max. :299884880 Max. :4.990 Max. :20.00
## deuda_total rendimiento_alto
## Min. :1000711 Min. :0.0000
## 1st Qu.:3327775 1st Qu.:0.0000
## Median :5543841 Median :0.0000
## Mean :5520976 Mean :0.4942
## 3rd Qu.:7716988 3rd Qu.:1.0000
## Max. :9999604 Max. :1.0000
Población (N): Nuestra población de estudio
(N) corresponde a la totalidad de los registros contenidos
en el archivo acciones.csv. Para determinar su tamaño,
simplemente contamos el número de filas del dataframe.
Tamaño de la Muestra (n): Para los fines de este ejercicio, se ha decidido trabajar con un tamaño de muestra (n) de 400.
La elección de este tamaño se hace con un propósito demostrativo. En un escenario real, este valor se obtendría a través de un cálculo de poder estadístico, pero para ilustrar las técnicas de muestreo, un tamaño de 400 es ideal porque es suficientemente grande (aproximadamente un 11% de la población) para generar resultados significativos y a la vez es manejable para su análisis e inspección.
## El tamaño de la población (N) es: 3521 registros.
## El tamaño de muestra deseado (n) es: 400 registros.
El Muestreo Aleatorio Simple (MAS) asegura que cada registro de la
población tenga la misma probabilidad de ser elegido. A continuación,
seleccionaremos n=400 registros únicos de forma aleatoria,
sin permitir que un mismo registro sea elegido más de una vez.
## Primeros 6 registros de la Muestra Aleatoria Simple (n=400):
## # A tibble: 6 × 12
## fecha precio_cierre sector clasificacion_crediticia region
## <date> <dbl> <chr> <chr> <chr>
## 1 2019-12-25 64.0 Salud BB Asia
## 2 2020-02-13 323. Tecnología AAA Europa
## 3 2019-04-25 170. Finanzas BB América
## 4 2014-06-26 136. Finanzas BB América
## 5 2013-07-18 196. Salud BB Asia
## 6 2021-06-24 82.2 Salud BBB América
## # ℹ 7 more variables: volumen_transacciones <dbl>, dividendos <dbl>,
## # capitalizacion_bursatil <dbl>, volatilidad_diaria <dbl>,
## # margen_operativo <dbl>, deuda_total <dbl>, rendimiento_alto <dbl>
La tabla anterior muestra los primeros 6 registros de nuestra
muestra_mas, creada a través del Muestreo Aleatorio
Simple sin Reemplazo.
Cada una de las 6 filas que vemos es un registro único de la
población original de 3651 acciones. Gracias a que usamos
replace = FALSE, podemos estar seguros de que ninguno de
estos 6 registros (ni ninguno de los otros 394 de la muestra) está
duplicado
¿Sería útil usar muestreo aleatorio simple con reemplazo en este caso?
No, para este objetivo no sería útil. El muestreo con reemplazo implicaría que un mismo registro (la misma acción en la misma fecha) podría ser seleccionado más de una vez.
Esto generaría duplicados dentro de nuestra muestra de 400 registros, lo cual tiene dos desventajas principales: 1. No aporta información nueva: Un registro repetido no nos dice nada nuevo sobre la diversidad de la población. 2. Sesga los resultados: Al calcular estadísticas como promedios o varianzas, los registros duplicados tendrían un peso indebido, distorsionando el análisis.
El muestreo sistemático es una técnica que selecciona elementos de la población a intervalos regulares. Es más sencillo que el muestreo aleatorio simple y puede ser igual de efectivo si no existen patrones ocultos en los datos.
El proceso es el siguiente: 1. Se calcula un “intervalo de salto”
(k) dividiendo el tamaño de la población N
entre el tamaño de la muestra n. 2. Se elige un punto de
partida aleatorio entre 1 y k. 3. A partir de ese inicio,
se selecciona cada k-ésimo elemento hasta completar la muestra.
## Intervalo de salto (k) calculado: 8
## Punto de inicio aleatorio: 1
## Primeros 6 registros de la Muestra Sistemática:
## # A tibble: 6 × 12
## fecha precio_cierre sector clasificacion_crediticia region
## <date> <dbl> <chr> <chr> <chr>
## 1 2013-01-01 224. Tecnología AAA Europa
## 2 2013-01-09 58.5 Salud BBB América
## 3 2013-01-17 162. Tecnología BB Europa
## 4 2013-01-25 117. Salud AAA Europa
## 5 2013-02-02 205. Tecnología AAA Asia
## 6 2013-02-10 106. Finanzas AAA Europa
## # ℹ 7 more variables: volumen_transacciones <dbl>, dividendos <dbl>,
## # capitalizacion_bursatil <dbl>, volatilidad_diaria <dbl>,
## # margen_operativo <dbl>, deuda_total <dbl>, rendimiento_alto <dbl>
El muestreo estratificado divide la población en subgrupos homogéneos (llamados estratos) para luego realizar un muestreo dentro de cada uno. Esta técnica garantiza que los diferentes subgrupos de la población estén representados adecuadamente en la muestra.
Para estos ejemplos, usaremos la columna
region como variable de
estratificación.
En este método, el tamaño de la muestra que se toma de cada estrato es proporcional a su tamaño en la población. Por ejemplo, si una región constituye el 30% de la población total, también constituirá el 30% de nuestra muestra.
## Distribución de la muestra proporcional por región:
##
## América Asia Europa
## 128 137 134
##
## Primeros 6 registros de la Muestra Estratificada Proporcional:
## # A tibble: 6 × 12
## fecha precio_cierre sector clasificacion_crediticia region
## <date> <dbl> <chr> <chr> <chr>
## 1 2014-06-15 151. Salud BB América
## 2 2017-07-16 183. Tecnología BBB América
## 3 2021-02-21 117. Salud AAA América
## 4 2014-10-01 242. Tecnología BB América
## 5 2016-03-05 48.8 Finanzas BBB América
## 6 2018-08-15 239. Tecnología BBB América
## # ℹ 7 more variables: volumen_transacciones <dbl>, dividendos <dbl>,
## # capitalizacion_bursatil <dbl>, volatilidad_diaria <dbl>,
## # margen_operativo <dbl>, deuda_total <dbl>, rendimiento_alto <dbl>
A diferencia del proporcional, en el muestreo uniforme se extrae el mismo número de elementos de cada estrato, sin importar su peso en la población.
## Número de muestras a tomar por cada región: 133
## Distribución de la muestra uniforme por región:
##
## América Asia Europa
## 133 133 133
##
## Primeros 6 registros de la Muestra Estratificada Uniforme:
## # A tibble: 6 × 12
## fecha precio_cierre sector clasificacion_crediticia region
## <date> <dbl> <chr> <chr> <chr>
## 1 2015-04-09 235. Salud BB América
## 2 2019-04-06 238. Finanzas BBB América
## 3 2018-11-04 236. Salud AAA América
## 4 2016-02-28 196. Salud BB América
## 5 2017-06-24 104. Salud AAA América
## 6 2022-07-31 64.2 Finanzas AAA América
## # ℹ 7 more variables: volumen_transacciones <dbl>, dividendos <dbl>,
## # capitalizacion_bursatil <dbl>, volatilidad_diaria <dbl>,
## # margen_operativo <dbl>, deuda_total <dbl>, rendimiento_alto <dbl>
El muestreo por conglomerados implica dividir la población en grupos (o “conglomerados”). A diferencia del estratificado, aquí se selecciona una muestra aleatoria de conglomerados enteros, y todos los individuos dentro de los conglomerados seleccionados forman parte de la muestra.
Esta técnica es útil cuando es más fácil obtener una lista de grupos
que de individuos. En nuestro caso, usaremos la columna
sector para definir los conglomerados.
# Se carga la librería dplyr para asegurar que el operador %>% esté disponible.
library(dplyr)
# 1. Se crea una lista con todos los conglomerados (sectores) únicos disponibles.
lista_conglomerados <- unique(datos_limpios$sector)
# 2. Se seleccionan aleatoriamente 2 conglomerados de la lista.
conglomerados_seleccionados <- sample(lista_conglomerados, size = 2)
# 3. Se utiliza filter() para seleccionar TODAS las filas cuyo sector esté en la
# lista de conglomerados seleccionados. El operador %in% es ideal para esto.
muestra_conglomerados <- datos_limpios %>%
filter(sector %in% conglomerados_seleccionados)
# Se muestran los resultados para verificar el proceso.
cat("Conglomerados (Sectores) seleccionados aleatoriamente:",
paste(conglomerados_seleccionados, collapse=", "), "\n\n")
## Conglomerados (Sectores) seleccionados aleatoriamente: Finanzas, Salud
cat("El tamaño final de la muestra por conglomerados es de:",
nrow(muestra_conglomerados), "registros.\n\n")
## El tamaño final de la muestra por conglomerados es de: 2348 registros.
cat("Primeros 6 registros de la Muestra por Conglomerados:\n")
## Primeros 6 registros de la Muestra por Conglomerados:
head(muestra_conglomerados)
## # A tibble: 6 × 12
## fecha precio_cierre sector clasificacion_crediticia region
## <date> <dbl> <chr> <chr> <chr>
## 1 2013-01-02 151. Salud BBB América
## 2 2013-01-06 238. Finanzas BBB América
## 3 2013-01-08 192. Finanzas BBB Asia
## 4 2013-01-09 58.5 Salud BBB América
## 5 2013-01-12 125. Finanzas BBB América
## 6 2013-01-13 250. Salud AAA Asia
## # ℹ 7 more variables: volumen_transacciones <dbl>, dividendos <dbl>,
## # capitalizacion_bursatil <dbl>, volatilidad_diaria <dbl>,
## # margen_operativo <dbl>, deuda_total <dbl>, rendimiento_alto <dbl>
La elección entre conglomerados y estratificado depende de los objetivos y recursos del estudio.
El Muestreo por Conglomerados es particularmente útil cuando:
La principal diferencia con el Muestreo Estratificado es:
| Característica | Muestreo Estratificado | Muestreo por Conglomerados |
|---|---|---|
| Objetivo | Precisión estadística. | Eficiencia y reducción de costos. |
| Selección | Se muestrean algunos individuos DE TODOS los estratos. | Se muestrean TODOS los individuos DE ALGUNOS conglomerados. |
En resumen: se elige el estratificado por precisión y el de conglomerados por eficiencia.
En cumplimiento con la integridad académica, se declara el uso de Gemini (la IA de Google) como herramienta de apoyo en este trabajo.
La asistencia se centró en mejorar la redacción, estructurar el documento y en la generación, explicación y depuración del código R.