Caso 100 Tipos muestreo

Author

RUBEN PIZARRO GURROLA

Objetivo

Determinar y simular tipos de muestreos

Descripción

Con un conjunto de datos utilizar mecanismos de programación para determinar muestreos mediante técnicas de aleatorio simple, aleatorio sistemático, aleatorio estratificado y por conglomerados.

Sustento teórico

El propósito de la estadística inferencial consiste en determinar y conocer el comportamiento sobre una población a partir de una muestra.

Una muestra es una porción, una proporción o parte de la población de interés. En muchos casos, el muestreo resulta más accesible y sencillo que el estudio de toda la población. [@lind_estadistica_2015].

Por otra parte la importancia del muestreo como lo menciona [@anderson_estadistica_2008] es cuestión de minimizar costo de trabajo, recopilar información de una muestra es sustancialmente menor, que hacerlo de una población completa; especialmente cuando se deben realizar entrevistas personales para recopilar la información.

Finamente, los métodos de muestreo aleatorio y sin sesgos son muy importantes para realizar inferencias estadísticas válidas [@lind_estadistica_2015].

Muestreo aleatorio simple

Una muestra aleatoria simple de tamaño \(n\) de una población finita de tamaño \(N\) es una muestra seleccionada de manera que cada posible muestra de tamaño \(n\) tenga la misma probabilidad de ser seleccionada [@anderson_estadistica_2008].

De un conjunto de \(N\) elementos de una población, un muestreo aleatorio simple sería una especie de rifa o tómbola para elegir de de entre los \(N\) total de población una cantidad de \(n\) número de la muestra.

Muestreo aleatorio sistemático

Se selecciona un punto aleatorio de inicio y posteriormente se elige cada k-ésimo miembro de la población [@lind_estadistica_2015].

Suele emplearse como alternativa al muestreo aleatorio simple, en especial cuando las poblaciones son grandes se lleva mucho tiempo tomar una muestra aleatoria simple en la que primero hay que hallar un número aleatorio y después contar o buscar en el marco el elemento correspondiente [@anderson_estadistica_2008].

El primer elemento se elige aleatoriamente, lo que permite suponer que una muestra sistemática tiene las propiedades de una muestra aleatoria simple. Esta suposición suele ser correcta cuando el marco es un ordenamiento aleatorio de los elementos de la población [@anderson_estadistica_2008]

Muestreo aleatorio estratificado

Cuando una población se divide en grupos a partir de ciertas características, el muestreo aleatorio estratificado garantiza que cada grupo o estrato se encuentre representado en la muestra [@lind_estadistica_2015].

[@anderson_estadistica_2008] describe el muestreo aleatorio estratificado en donde los elementos de la población primero se dividen en grupos, a los que se les llama estratos, de manera que cada elemento pertenezca a uno y sólo un estrato. La base para la formación de los estratos, que puede ser departamento, edad, tipo de industria, entre otros, está a discreción de la persona que diseña la muestra.

Por otra parte, para asegurar que la muestra sea una representación imparcial de las \(N\) observaciones, se debe determinar la frecuencia relativa y a partir de ahí generar las cantidad de muestra de cada estrato. [@lind_estadistica_2015].

Muestreo por conglomerados

La población se divide en conglomerados a partir de los límites naturales geográficos u otra clase. A continuación, estos se seleccionan al azar y se toma una muestra de forma aleatoria con elementos de cada grupo [@lind_estadistica_2015].

Desarrollo

Cargar librerías

library(dplyr)
library(mosaic)
library(readr)
library(ggplot2)  # Para gráficos
library(knitr)    # Para formateo de datos
library(fdth)     # Para tablas de frecuencias
library(leaflet)  # Para hacer mapas

Cargar datos

Cargar datos de nombres de personas

  • Se carga un conjunto de 100 nombres de personas con sus atributo de género y la actividad deportiva o cultura que practican,
  • Cargando un datos llamando a una función que construye los datos de personas.
  • El argumento encoding significa que acepte acentos en los datos o caracteres que lo permite la codificación UTF-8.
source("https://raw.githubusercontent.com/rpizarrog/Libro-Analisis-de-datos-con-R-2022/main/funciones/f_construir_datos_y_funciones.r", encoding = "UTF-8")

kable(x = head(personas, 10), row.names = TRUE, caption = "Los primeros diez registros de nombres en el conjunto de datos")
Los primeros diez registros de nombres en el conjunto de datos
nombres generos ajedrez beisbol tiro.arco pesas futbol softbol atletismo folklorico tahitiano teatro rondalla pantomima
1 JUAN M NO NO NO SI NO SI NO NO NO NO NO SI
2 JOSÉ LUIS M NO NO NO NO NO NO NO SI NO NO NO NO
3 JOSÉ M NO SI NO SI NO NO NO NO NO NO SI SI
4 MARÍA GUADALUPE F NO SI NO NO NO NO NO NO NO NO SI SI
5 FRANCISCO M NO NO NO NO NO NO SI NO NO NO NO NO
6 GUADALUPE F NO NO NO NO NO NO NO NO NO NO NO NO
7 MARÍA F NO SI NO NO SI NO NO NO NO NO NO NO
8 JUANA F NO NO NO NO SI NO NO SI NO NO NO NO
9 ANTONIO M NO NO NO NO NO NO NO NO NO NO NO NO
10 JESÚS M NO NO SI NO NO SI NO NO SI NO NO NO
kable(x = tail(personas, 10), row.names = TRUE, caption = "Los primeros diez registros de nombres en el conjunto de datos")
Los primeros diez registros de nombres en el conjunto de datos
nombres generos ajedrez beisbol tiro.arco pesas futbol softbol atletismo folklorico tahitiano teatro rondalla pantomima
91 ANDREA F NO NO NO NO NO NO NO NO NO NO NO SI
92 ISABEL F NO NO NO NO NO NO NO NO NO NO NO NO
93 MARÍA TERESA F NO SI NO NO SI NO NO SI NO NO NO NO
94 IRMA F SI SI NO NO NO NO NO NO NO NO NO NO
95 CARMEN F NO NO NO NO NO NO NO NO NO NO NO NO
96 LUCÍA F NO SI NO SI NO NO NO SI NO NO SI SI
97 ADRIANA F NO NO NO NO NO NO SI NO NO NO NO NO
98 AGUSTÍN M NO SI NO NO NO NO NO NO SI NO NO NO
99 MARÍA DE LA LUZ F NO NO NO NO NO NO SI NO NO NO NO NO
100 GUSTAVO M NO NO NO NO NO NO NO SI NO NO NO NO

Se presenta el resumen de los datos de personas como parte del análisis descriptivo no sin antes convertir todas las variables a tipo factor para categorizar y describir mas cómodamente la cantidad de observaciones con respecto a cada variable.

personas$nombres <- as.factor(personas$nombres)
personas$generos <- as.factor(personas$generos)
personas$ajedrez <- as.factor(personas$ajedrez)
personas$beisbol <- as.factor(personas$beisbol)
personas$tiro.arco <- as.factor(personas$tiro.arco)
personas$pesas <- as.factor(personas$pesas)
personas$futbol <- as.factor(personas$futbol)
personas$softbol <- as.factor(personas$softbol)

personas$atletismo <- as.factor(personas$folklorico)
personas$folklorico <- as.factor(personas$folklorico)
personas$tahitiano <- as.factor(personas$tahitiano)
personas$teatro <- as.factor(personas$teatro)

personas$rondalla <- as.factor(personas$rondalla)
personas$pantomima <- as.factor(personas$pantomima)





kable(summary(select(personas, generos, ajedrez, beisbol, tiro.arco, pesas, futbol, softbol, atletismo, folklorico, tahitiano, teatro, rondalla, pantomima)), caption="Descripción de las variables personas")
Descripción de las variables personas
generos ajedrez beisbol tiro.arco pesas futbol softbol atletismo folklorico tahitiano teatro rondalla pantomima
F:43 NO:87 NO:85 NO:87 NO:86 NO:89 NO:87 NO:77 NO:77 NO:90 NO:89 NO:79 NO:88
M:57 SI:13 SI:15 SI:13 SI:14 SI:11 SI:13 SI:23 SI:23 SI:10 SI:11 SI:21 SI:12

Hay 43 personas del género femenino y 57 del género masculino. Con respecto a las actividades deportivas o culturales hay por ejemplo 13 personas que practican ajedrez y 14 de las 100 realizan pesas; 23 realizan baile folklórico y 21 van a rondalla.

Cargar datos de alumnos

Se cargan los datos de alumnos inscritos en una Institución de educación superior en un semestre con los atributos o variables siguientes:

  • alumno: número (caracter) consecutivo de alumno que distingue a cada estudiante

  • semestre: valor numérico del semestre que cursa el alumno

  • aprobado: valor numérico de créditos los que ha cursado el alumno

  • carga: valor numérico de créditos lo que actualmente cursa en valor numérico

  • promedio: el valor numérico del promedio aritmético

  • carrera: la carrera profesional que cursa para la muestra estratificada

  • latitud: datos geográficos para distinguir conglomerado

  • longitud: datos geográficos para distinguir conglomerado

alumnos <- read.csv("https://raw.githubusercontent.com/rpizarrog/Libro-Analisis-de-datos-con-R-2022/main/datos/datos_alumnos_lat_long.csv", stringsAsFactors = TRUE)
kable(head(alumnos, 10), row.names = TRUE, caption = "Los primeros diez registros de alumnos")
Los primeros diez registros de alumnos
alumno semestre aprobados carga promedio carrera localidad latitud longitud
1 1 11 198 19 80.21 SISTEMAS Victoria de Durango 24.02399 -104.6702
2 2 11 235 10 84.33 SISTEMAS Los Arroyos (Las Colonias) 23.69142 -105.0328
3 3 9 235 10 95.25 SISTEMAS Victoria de Durango 24.02399 -104.6702
4 4 9 226 19 95.00 SISTEMAS Victoria de Durango 24.02399 -104.6702
5 5 10 231 14 82.32 SISTEMAS Victoria de Durango 24.02399 -104.6702
6 6 9 212 23 95.02 SISTEMAS Victoria de Durango 24.02399 -104.6702
7 7 12 221 10 79.06 SISTEMAS La Criba (Don Toño) 24.18015 -104.5482
8 8 9 226 9 92.47 SISTEMAS Victoria de Durango 24.02399 -104.6702
9 9 9 231 4 91.08 SISTEMAS Los Arroyos (Las Colonias) 23.69142 -105.0328
10 10 11 222 13 80.42 SISTEMAS Victoria de Durango 24.02399 -104.6702
kable(tail(alumnos, 10), row.names = TRUE, caption = "Las útimos diez registros de alumnos")
Las útimos diez registros de alumnos
alumno semestre aprobados carga promedio carrera localidad latitud longitud
5920 5920 7 169 23 89.14 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
5921 5921 5 109 26 87.83 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
5922 5922 3 55 29 92.83 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
5923 5923 2 23 23 88.60 ADMINISTRACION Los Arroyos (Las Colonias) 23.69142 -105.0328
5924 5924 2 27 28 92.83 ADMINISTRACION La Esperanza 23.92139 -105.2973
5925 5925 7 94 13 80.95 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
5926 5926 5 103 32 92.68 ADMINISTRACION La Esperanza 23.92139 -105.2973
5927 5927 4 79 34 86.18 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
5928 5928 5 108 32 90.48 ADMINISTRACION La Criba (Don Toño) 24.18015 -104.5482
5929 5929 7 169 32 92.33 ADMINISTRACION La Criba (Don Toño) 24.18015 -104.5482
alumnos <- as.data.frame(alumnos)
kable(summary(select(alumnos, carrera, localidad), caption="Descripción de la variable personas"))
carrera localidad
INDUSTRIAL : 707 La Criba (Don Toño) : 750
ARQUITECTURA : 675 La Esperanza : 419
CIVIL : 648 Las Curras : 303
GESTION EMPRESARIAL: 585 Los Arroyos (Las Colonias): 575
QUIMICA : 568 Los Caballos de Don Cruz : 355
ADMINISTRACION : 497 Victoria de Durango :3527
(Other) :2249 NA

La carrera de ARQUITECTURA es la que mas alumnos tiene y las carrera que menos tiene es TIC; con respecto a las localidades hay 3527 alumnos que viven en Victoria de Durango y 303 que viven en la localidad de las Curras,

Sembrar una semilla

set.seed(2023)

Simular muestreos

Muestreo aleatorio simple

Se simula realizar una encuesta a diez personas de las 100 que existen, la pregunta es: ¿a que personas encuestar?

Con el conjunto de datos seleccionar 10 personas aleatoriamente con la función sample(). Con el argumento replace=FALSE significa que no se repita el elemento seleccionado en la muestra.

N <- nrow(personas)
n <- 10
muestra <- sample(x = personas, size = n, replace = FALSE)
kable(muestra, row.names = TRUE, caption = "La muestra de personas")
La muestra de personas
nombres generos ajedrez beisbol tiro.arco pesas futbol softbol atletismo folklorico tahitiano teatro rondalla pantomima orig.id
80 MARÍA LUISA F SI NO NO NO NO NO NO NO NO NO NO NO 80
47 ALICIA F NO SI NO NO NO SI NO NO NO SI NO NO 47
72 ÓSCAR M SI NO NO NO NO NO NO NO NO NO NO NO 72
26 JAVIER F NO NO NO NO NO SI NO NO NO NO SI NO 26
44 FRANCISCA F NO NO SI NO NO NO NO NO NO NO NO NO 44
65 SALVADOR M SI NO NO NO NO NO NO NO NO NO SI NO 65
29 RAÚL M NO SI NO SI NO NO SI SI NO NO SI NO 29
49 SERGIO M SI NO NO NO NO NO NO NO NO NO NO NO 49
81 LUIS ÁNGEL M NO NO NO NO NO NO NO NO SI NO NO NO 81
5 FRANCISCO M NO NO NO NO NO NO NO NO NO NO NO NO 5

Con el conjunto de datos alumnos, se extrae una muestra por decir de 100 alumnos de los 5929 que hay en la población, ¿a cuáles alumnos seleccionar?. Por el muestreo aleatorio simple nuevamente se utiliza la función sample(). Se presenta solo los primeros 10 y últimos 10 registros de los 100 registros de la muestra extraida con las funcions head() y tail() respetivamente.

N <- nrow(alumnos)
n <- 100
registros <- sample(x = 1:N, size = n, replace = FALSE) # Genera los números
muestra <- alumnos[registros, ]
kable(head(muestra, 10), row.names = TRUE, caption = "La muestra de alumnos")
La muestra de alumnos
alumno semestre aprobados carga promedio carrera localidad latitud longitud
959 959 4 80 30 84.17 ARQUITECTURA Los Caballos de Don Cruz 23.95737 -104.5519
4578 4578 5 90 34 84.11 QUIMICA La Criba (Don Toño) 24.18015 -104.5482
5507 5507 9 262 10 93.96 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
207 207 6 137 28 87.30 SISTEMAS Victoria de Durango 24.02399 -104.6702
4141 4141 4 70 28 79.73 QUIMICA Victoria de Durango 24.02399 -104.6702
5892 5892 5 113 27 93.38 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
3808 3808 4 76 24 89.29 MECATRONICA Victoria de Durango 24.02399 -104.6702
5765 5765 3 55 29 92.58 ADMINISTRACION Los Caballos de Don Cruz 23.95737 -104.5519
384 384 3 50 33 86.91 SISTEMAS La Criba (Don Toño) 24.18015 -104.5482
1527 1527 8 189 24 82.90 BIOQUIMICA La Esperanza 23.92139 -105.2973
kable(tail(muestra, 10), row.names = TRUE, caption = "La muestra de alumnos")
La muestra de alumnos
alumno semestre aprobados carga promedio carrera localidad latitud longitud
5335 5335 13 230 5 79.74 INFORMATICA Victoria de Durango 24.02399 -104.6702
4464 4464 7 123 28 84.42 QUIMICA Las Curras 24.01172 -104.4686
1975 1975 4 57 28 80.50 CIVIL Victoria de Durango 24.02399 -104.6702
12 12 10 179 23 82.69 SISTEMAS La Esperanza 23.92139 -105.2973
4305 4305 2 11 25 91.67 QUIMICA Los Arroyos (Las Colonias) 23.69142 -105.0328
4917 4917 3 49 33 89.36 GESTION EMPRESARIAL Victoria de Durango 24.02399 -104.6702
2956 2956 6 145 33 85.18 INDUSTRIAL Los Caballos de Don Cruz 23.95737 -104.5519
3430 3430 5 50 24 79.50 MECANICA Victoria de Durango 24.02399 -104.6702
440 440 3 13 29 84.00 SISTEMAS Los Arroyos (Las Colonias) 23.69142 -105.0328
5455 5455 7 187 29 90.00 ADMINISTRACION Victoria de Durango 24.02399 -104.6702

Muestreo aleatorio sistemático

Con el conjunto de datos de las 100 personas, iniciar en un valor aleatorio e identificar los siguientes registros de 10 en 10 hasta tener diez personas.

N <- nrow(personas)
n = 10
saltos <- round(N / n, 0)
inicio <- round(sample(N, 1) / n, 0)
paste("Se inicia en el registro", inicio, " se recorre de ", saltos, "en", saltos)
[1] "Se inicia en el registro 7  se recorre de  10 en 10"
#inicio
cuales <- seq(from = inicio, to =N, by= saltos)
kable(personas[cuales, ], row.names = TRUE, caption = "La muestra sistematizada de personas")
La muestra sistematizada de personas
nombres generos ajedrez beisbol tiro.arco pesas futbol softbol atletismo folklorico tahitiano teatro rondalla pantomima
7 MARÍA F NO SI NO NO SI NO NO NO NO NO NO NO
17 JUAN CARLOS M SI NO NO NO NO NO NO NO SI NO NO NO
27 RAFAEL M NO NO NO NO NO NO SI SI NO NO NO NO
37 ENRIQUE F NO NO NO NO NO NO NO NO SI NO SI NO
47 ALICIA F NO SI NO NO NO SI NO NO NO SI NO NO
57 PATRICIA F NO NO NO NO NO NO NO NO NO NO NO NO
67 SILVIA F NO NO NO NO NO NO NO NO NO SI NO NO
77 PABLO M NO NO SI NO NO NO SI SI NO NO NO NO
87 JULIO CESAR M SI NO NO NO NO NO SI SI NO NO NO NO
97 ADRIANA F NO NO NO NO NO NO NO NO NO NO NO NO

Con el conjunto de datos alumnos, hay que encontrar a 100 alumnos, ¿a cuáles alumnos?, bajo el muestreo sistematizado. Se presentan solo los primeros 10 y últimos 10 registros de la muestra.

N <- nrow(alumnos)
n = 100
saltos <- round(N / n, 0)
inicio <- round(sample(N, 1) / n, 0)
paste("Se inicia en el registro", inicio, " se recorre de ", saltos, "en", saltos)
[1] "Se inicia en el registro 57  se recorre de  59 en 59"
cuales <- seq(from = inicio, to =N, by= saltos)
kable(alumnos[head(cuales, 10), ], row.names = TRUE, caption = "La muestra de alumnos")
La muestra de alumnos
alumno semestre aprobados carga promedio carrera localidad latitud longitud
57 57 9 226 4 89.10 SISTEMAS Victoria de Durango 24.02399 -104.6702
116 116 7 165 34 93.67 SISTEMAS Victoria de Durango 24.02399 -104.6702
175 175 3 50 33 90.91 SISTEMAS La Criba (Don Toño) 24.18015 -104.5482
234 234 7 105 22 84.00 SISTEMAS La Criba (Don Toño) 24.18015 -104.5482
293 293 4 83 33 86.28 SISTEMAS Victoria de Durango 24.02399 -104.6702
352 352 8 176 32 80.47 SISTEMAS Victoria de Durango 24.02399 -104.6702
411 411 7 165 34 82.78 SISTEMAS Victoria de Durango 24.02399 -104.6702
470 470 9 198 29 83.33 ARQUITECTURA La Criba (Don Toño) 24.18015 -104.5482
529 529 10 172 12 79.97 ARQUITECTURA Victoria de Durango 24.02399 -104.6702
588 588 4 80 30 90.28 ARQUITECTURA Victoria de Durango 24.02399 -104.6702
kable(alumnos[tail(cuales, 10), ], row.names = TRUE, caption = "La muestra de alumnos")
La muestra de alumnos
alumno semestre aprobados carga promedio carrera localidad latitud longitud
5367 5367 7 85 18 82.58 INFORMATICA Victoria de Durango 24.02399 -104.6702
5426 5426 7 156 33 90.29 INFORMATICA Victoria de Durango 24.02399 -104.6702
5485 5485 9 262 10 92.09 ADMINISTRACION La Criba (Don Toño) 24.18015 -104.5482
5544 5544 5 89 28 85.63 ADMINISTRACION La Esperanza 23.92139 -105.2973
5603 5603 1 NA 27 0.00 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
5662 5662 1 NA 27 0.00 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
5721 5721 8 180 34 85.00 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
5780 5780 4 84 33 89.94 ADMINISTRACION Victoria de Durango 24.02399 -104.6702
5839 5839 6 140 28 91.93 ADMINISTRACION Los Caballos de Don Cruz 23.95737 -104.5519
5898 5898 2 23 28 87.80 ADMINISTRACION La Esperanza 23.92139 -105.2973

Muestreo aleatorio estratificado

Con el conjunto de datos de personas se trata de simular una muestra de 10 registros, que sea representativa de acuerdo y conforme al género femenino y masculino.

¿Cuál es la frecuencia relativa del género femenino? ¿Cuál es la frecuencia relativa del género masculino? ¿Cuál es la proporción de muestra por cada género?

El tamaño de la población es \(N = 100\) y el tamaño de la muestra es \(n=10\).

Se extrae la proporción de la muestra por cada género dividiendo la frecuencia de cada género entre el tamaño de la población.

Luego de esa proporción utilizar un muestreo simple para seleccionar los elementos de cada estrato, con ello se garantiza la imparcialidad y proporcionalidad en la muestra.

N <- nrow(personas) # Tamaño población
n <- 10 # Tamaño muestra
femeninos  <- filter(personas, generos=='F')
masculinos <- filter(personas, generos=='M')

frfem <- nrow(femeninos) / N
frmas <- nrow(masculinos) / N

paste("La propoción de personas del género femenino es: ", round(frfem * N), "%") 
[1] "La propoción de personas del género femenino es:  43 %"
paste("La propoción de personas del género masculino es: ", round(frmas * N), "%") 
[1] "La propoción de personas del género masculino es:  57 %"

Aquí las muestras estratificadas de acuerdo al género, son \(4\) del género femenino. Redondeando la proporción multiplicado por el tamaño de la muestra.

muestraFem <- sample(x = femeninos, size = round(frfem * n), replace = FALSE)
kable(muestraFem, caption = "La muestra de personas del género [F] femenino")
La muestra de personas del género [F] femenino
nombres generos ajedrez beisbol tiro.arco pesas futbol softbol atletismo folklorico tahitiano teatro rondalla pantomima orig.id
24 ROSA MARÍA F NO NO NO NO NO SI SI SI NO NO NO NO 24
42 ADRIANA F NO NO NO NO NO NO NO NO NO NO NO NO 42
18 MARÍA FERNANDA F NO SI SI NO NO NO SI SI NO SI NO NO 18
4 JUANA F NO NO NO NO SI NO SI SI NO NO NO NO 4

Son \(6\) registros el género masculino. De igual manera, redondeando la proporción multiplicado por el tamaño de la muestra.

muestraMas <- sample(x = masculinos, size = round(frmas * n), replace = FALSE)
kable(muestraMas, row.names=TRUE, caption = "La muestra de personas del género [M] masculino")
La muestra de personas del género [M] masculino
nombres generos ajedrez beisbol tiro.arco pesas futbol softbol atletismo folklorico tahitiano teatro rondalla pantomima orig.id
40 GABRIEL M SI NO SI NO NO SI NO NO NO NO NO NO 40
36 JUAN MANUEL M NO NO NO NO NO NO SI SI NO SI SI NO 36
7 MIGUEL ÁNGEL M NO NO NO NO NO NO NO NO SI NO NO NO 7
17 RICARDO M NO NO NO NO SI NO NO NO NO SI NO NO 17
5 ANTONIO M NO NO NO NO NO NO NO NO NO NO NO NO 5
12 ROBERTO M NO SI NO NO NO NO NO NO NO NO SI NO 12

Simular muestreo estratificado por carreras de alumnos determinando las frecuencias relativas por medio de la función fdt_cat()

La columna muestra de la tabla construida indica la cantidad de alumnos de acuerdo a la frecuencia de estudiantes que existen por carrera.

Se garantiza con ello proporcionalidad y proporcionalidad en el muestreo, con ello simula la técnica del muestreo estratificado.

Se observa que existen más alumnos de la carrera de INDUSTRIAL con el 11.92%, seguido de alumnos de ARQUITECTURA con el 11.38%, se tiene un porcentaje del 1.36% de alumnos de la carrera de TIC.

N <- nrow(alumnos)
n <- 100

tabla_frec <- data.frame(fdt_cat(alumnos$carrera))
tabla_frec$muestra <-  round(tabla_frec$rf * n, 0)
kable(tabla_frec, row.names = TRUE, caption = "Tabla de frecuencia de alumnos")
Tabla de frecuencia de alumnos
Category f rf rf… cf cf… muestra
1 INDUSTRIAL 707 0.1192444 11.924439 707 11.92444 12
2 ARQUITECTURA 675 0.1138472 11.384719 1382 23.30916 11
3 CIVIL 648 0.1092933 10.929330 2030 34.23849 11
4 GESTION EMPRESARIAL 585 0.0986676 9.866757 2615 44.10525 10
5 QUIMICA 568 0.0958003 9.580030 3183 53.68528 10
6 ADMINISTRACION 497 0.0838253 8.382527 3680 62.06780 8
7 SISTEMAS 452 0.0762355 7.623545 4132 69.69135 8
8 BIOQUIMICA 441 0.0743802 7.438016 4573 77.12936 7
9 MECATRONICA 432 0.0728622 7.286220 5005 84.41558 7
10 MECANICA 301 0.0507674 5.076741 5306 89.49233 5
11 ELECTRICA 280 0.0472255 4.722550 5586 94.21488 5
12 ELECTRONICA 161 0.0271547 2.715466 5747 96.93034 3
13 INFORMATICA 101 0.0170349 1.703491 5848 98.63383 2
14 TIC 81 0.0136617 1.366166 5929 100.00000 1

La pregunta es ¿cuáles alumnos seleccionar de cada carrera?, la respuesta es dependiendo de la carrera y de su proporcionalidad.

Aquí se simula extraer alumnos de las carreras SISTEMAS Y CIVIL de acuerdo con la cantidad cada carrera de manera proporcional $frecuencia * n $, luego de manera aleatoria simple se extraen los elementos de cada estrato.

N <- nrow(alumnos) # Población
n <- 100 # Muestra

sistemas  <- filter(alumnos, carrera =='SISTEMAS')
civil <- filter(alumnos, carrera == 'CIVIL')

frsistemas <- nrow(sistemas) / N
frcivil <- nrow(civil) / N

frsistemas
[1] 0.07623545
frcivil 
[1] 0.1092933

Se describen en las muestras que contienen los registros de cada estrato. Ver TABLA y TABLA

De sistemas:

muestrasistemas <- sample(sistemas, round(frsistemas * n, 0))

kable(muestrasistemas, row.names = TRUE, caption = "La muestra de alumnos de SISTEMAS")
La muestra de alumnos de SISTEMAS
alumno semestre aprobados carga promedio carrera localidad latitud longitud orig.id
356 356 3 55 28 91.67 SISTEMAS La Esperanza 23.92139 -105.2973 356
336 336 3 45 33 82.80 SISTEMAS Victoria de Durango 24.02399 -104.6702 336
438 438 5 83 30 85.06 SISTEMAS Los Arroyos (Las Colonias) 23.69142 -105.0328 438
31 31 11 226 9 86.88 SISTEMAS Los Arroyos (Las Colonias) 23.69142 -105.0328 31
249 249 5 112 25 92.00 SISTEMAS Victoria de Durango 24.02399 -104.6702 249
138 138 8 199 27 87.93 SISTEMAS La Criba (Don Toño) 24.18015 -104.5482 138
280 280 1 NA 27 0.00 SISTEMAS Victoria de Durango 24.02399 -104.6702 280
70 70 11 212 14 83.59 SISTEMAS Los Arroyos (Las Colonias) 23.69142 -105.0328 70

De civil:

muestracivil <- sample(civil, round(frcivil * n, 0))

kable(muestracivil, row.names = TRUE, caption = "La muestra de alumnos de CIVIL, primeros 10")
La muestra de alumnos de CIVIL, primeros 10
alumno semestre aprobados carga promedio carrera localidad latitud longitud orig.id
634 2202 1 NA 27 0.00 CIVIL Los Caballos de Don Cruz 23.95737 -104.5519 634
621 2189 2 23 25 78.80 CIVIL La Esperanza 23.92139 -105.2973 621
638 2206 7 165 35 87.00 CIVIL Los Caballos de Don Cruz 23.95737 -104.5519 638
284 1852 5 98 35 82.10 CIVIL Victoria de Durango 24.02399 -104.6702 284
322 1890 6 94 28 80.70 CIVIL Victoria de Durango 24.02399 -104.6702 322
485 2053 5 108 29 86.61 CIVIL Los Arroyos (Las Colonias) 23.69142 -105.0328 485
135 1703 4 71 28 86.47 CIVIL Las Curras 24.01172 -104.4686 135
38 1606 12 196 9 78.76 CIVIL Victoria de Durango 24.02399 -104.6702 38
325 1893 8 188 28 86.08 CIVIL Victoria de Durango 24.02399 -104.6702 325
142 1710 2 27 30 88.50 CIVIL La Criba (Don Toño) 24.18015 -104.5482 142
163 1731 8 187 25 86.03 CIVIL Los Caballos de Don Cruz 23.95737 -104.5519 163

Muestreo por conglomerados

Para mejor comprensión de los datos, se muestran los primeros 10 los primeros diez y últimos diez alumnos únicamente con las tres columnas de alumno, localidad, latitud y longitud.

kable(head(alumnos[, c('alumno', 'localidad', 'latitud', 'longitud')], 10), row.names = TRUE, caption = "Los primeros diez registros de alumnos")
Los primeros diez registros de alumnos
alumno localidad latitud longitud
1 1 Victoria de Durango 24.02399 -104.6702
2 2 Los Arroyos (Las Colonias) 23.69142 -105.0328
3 3 Victoria de Durango 24.02399 -104.6702
4 4 Victoria de Durango 24.02399 -104.6702
5 5 Victoria de Durango 24.02399 -104.6702
6 6 Victoria de Durango 24.02399 -104.6702
7 7 La Criba (Don Toño) 24.18015 -104.5482
8 8 Victoria de Durango 24.02399 -104.6702
9 9 Los Arroyos (Las Colonias) 23.69142 -105.0328
10 10 Victoria de Durango 24.02399 -104.6702
kable(tail(alumnos[, c('alumno', 'localidad', 'latitud', 'longitud')], 10), row.names = TRUE, caption = "Las útimos diez registros de alumnos")
Las útimos diez registros de alumnos
alumno localidad latitud longitud
5920 5920 Victoria de Durango 24.02399 -104.6702
5921 5921 Victoria de Durango 24.02399 -104.6702
5922 5922 Victoria de Durango 24.02399 -104.6702
5923 5923 Los Arroyos (Las Colonias) 23.69142 -105.0328
5924 5924 La Esperanza 23.92139 -105.2973
5925 5925 Victoria de Durango 24.02399 -104.6702
5926 5926 La Esperanza 23.92139 -105.2973
5927 5927 Victoria de Durango 24.02399 -104.6702
5928 5928 La Criba (Don Toño) 24.18015 -104.5482
5929 5929 La Criba (Don Toño) 24.18015 -104.5482

Ahora bien, se muestra la cantidad de alumnos por localidad usando nuevamente la función fdt_cat() que determina la tabla de frecuencias.

Del total de la población la tabla muestra el estimado de la muestra utilizando el parámetro de localidad haciendo hincapié en la técnica de muestreo por conglomerado.

El 59% representa la localidad de Victoria de Durango seguido del 12% la localidad de la Criba (Don Toño), al final la localidad de Las Curras con el 5.11%.

En la tabla construida tabla_frec, se agrega la columna muestra que indica la cantidad de alumnos que hay de cada localidad por lo que sería en este caso utiliZar este valor para encontrar la proporción tanto de la pobLación como del total de la muestra.

tabla_frec <- data.frame(fdt_cat(alumnos$localidad))
tabla_frec$muestra <-  round(tabla_frec$rf * n, 0)
kable(tabla_frec, row.names = TRUE, caption = "Tabla de frecuencia de alumnos por localidad")
Tabla de frecuencia de alumnos por localidad
Category f rf rf… cf cf… muestra
1 Victoria de Durango 3527 0.5948727 59.487266 3527 59.48727 59
2 La Criba (Don Toño) 750 0.1264969 12.649688 4277 72.13695 13
3 Los Arroyos (Las Colonias) 575 0.0969809 9.698094 4852 81.83505 10
4 La Esperanza 419 0.0706696 7.066959 5271 88.90201 7
5 Los Caballos de Don Cruz 355 0.0598752 5.987519 5626 94.88953 6
6 Las Curras 303 0.0511047 5.110474 5929 100.00000 5

Usando funciones de dplyr() que muestran las variables de interés del conjunto de datos alumnos, destacando la cantidad de registros de cada localidad los valores de latitud y longitud. Se usa min() ya que para efectos de la función de agregado es funcional, ya que es la misma latitud y longitud por cada localidad diferente.

alumnos %>%
  group_by(localidad) %>%
  summarise(n(), min(latitud), min(longitud))
# A tibble: 6 × 4
  localidad                  `n()` `min(latitud)` `min(longitud)`
  <fct>                      <int>          <dbl>           <dbl>
1 La Criba (Don Toño)          750           24.2           -105.
2 La Esperanza                 419           23.9           -105.
3 Las Curras                   303           24.0           -104.
4 Los Arroyos (Las Colonias)   575           23.7           -105.
5 Los Caballos de Don Cruz     355           24.0           -105.
6 Victoria de Durango         3527           24.0           -105.

Determinar el porcentaje que le corresponde a cada conglomerado (lugar en donde vive) conforme a la frecuencia relativa.

¿cuáles alumnos?, de acuerdo al conglomerado o la localidad

Simular por las seis localidades

localidades <- tabla_frec$Category
localidades
[1] "Victoria de Durango"        "La Criba (Don Toño)"       
[3] "Los Arroyos (Las Colonias)" "La Esperanza"              
[5] "Los Caballos de Don Cruz"   "Las Curras"                

Se calcula la frecuencia por cada localidad, y se dejan en variables diferentes nombradas frloc1, frloc2, frloc3, frloc4, frloc5 y frloc; deben ser los mismos valores que la tabla de distribución.

N <- nrow(alumnos)
n <- 100
# Determinar cada conglomerado
loc1 <- filter(alumnos, localidad == tabla_frec$Category[1])
loc2 <- filter(alumnos, localidad == tabla_frec$Category[2])
loc3 <- filter(alumnos, localidad == tabla_frec$Category[3])
loc4 <- filter(alumnos, localidad == tabla_frec$Category[4])
loc5 <- filter(alumnos, localidad == tabla_frec$Category[5])
loc6 <- filter(alumnos, localidad == tabla_frec$Category[6])

# Determinar frecuencias de cada conglomerado similar a la tabla tabla_frec
frloc1 <- nrow(loc1) / N
frloc2 <- nrow(loc2) / N
frloc3 <- nrow(loc3) / N
frloc4 <- nrow(loc4) / N
frloc5 <- nrow(loc5) / N
frloc6 <- nrow(loc6) / N

Se crean las muestras de cada localidad y se presentan a manera de tablas con solo las variables de interés alumno, localidad, latitud y longitud. De la localidad de “Victoria de Durango” por ser bastantes, sólo se presentan los primero y últimos 10 registros, de las demás localidades si se distinguen todos sus registros.

# Crear muestras
muestraloc1 <- sample(x = loc1, size = round(n * frloc1, 0), replace = FALSE)
kable(head(muestraloc1[,c('alumno', 'localidad', 'latitud', 'longitud')], 10), caption = paste("Los primeros 10 registros de la muestra de alumnos de Localidad ",tabla_frec$Category[1] ))
Los primeros 10 registros de la muestra de alumnos de Localidad Victoria de Durango
alumno localidad latitud longitud
1129 1916 Victoria de Durango 24.02399 -104.6702
2996 5100 Victoria de Durango 24.02399 -104.6702
1981 3366 Victoria de Durango 24.02399 -104.6702
793 1344 Victoria de Durango 24.02399 -104.6702
2064 3508 Victoria de Durango 24.02399 -104.6702
1908 3236 Victoria de Durango 24.02399 -104.6702
1246 2121 Victoria de Durango 24.02399 -104.6702
2005 3410 Victoria de Durango 24.02399 -104.6702
322 568 Victoria de Durango 24.02399 -104.6702
2053 3495 Victoria de Durango 24.02399 -104.6702
kable(tail(muestraloc1[,c('alumno', 'localidad', 'latitud', 'longitud')], 10), caption = paste("Los últimos 10 registros de la muestra de alumnos de Localidad ",tabla_frec$Category[1] ))
Los últimos 10 registros de la muestra de alumnos de Localidad Victoria de Durango
alumno localidad latitud longitud
61 100 Victoria de Durango 24.02399 -104.6702
2897 4913 Victoria de Durango 24.02399 -104.6702
800 1354 Victoria de Durango 24.02399 -104.6702
1277 2175 Victoria de Durango 24.02399 -104.6702
948 1610 Victoria de Durango 24.02399 -104.6702
2217 3742 Victoria de Durango 24.02399 -104.6702
851 1432 Victoria de Durango 24.02399 -104.6702
792 1342 Victoria de Durango 24.02399 -104.6702
1105 1872 Victoria de Durango 24.02399 -104.6702
72 119 Victoria de Durango 24.02399 -104.6702
muestraloc2 <- sample(loc2, round(n * frloc2, 0))
kable(muestraloc2[,c('alumno', 'localidad', 'latitud', 'longitud')], caption = paste("La muestra de alumnos de Localidad ",tabla_frec$Category[2] ))
La muestra de alumnos de Localidad La Criba (Don Toño)
alumno localidad latitud longitud
119 844 La Criba (Don Toño) 24.18015 -104.5482
113 807 La Criba (Don Toño) 24.18015 -104.5482
433 3240 La Criba (Don Toño) 24.18015 -104.5482
189 1256 La Criba (Don Toño) 24.18015 -104.5482
427 3176 La Criba (Don Toño) 24.18015 -104.5482
205 1359 La Criba (Don Toño) 24.18015 -104.5482
499 3756 La Criba (Don Toño) 24.18015 -104.5482
180 1216 La Criba (Don Toño) 24.18015 -104.5482
358 2602 La Criba (Don Toño) 24.18015 -104.5482
125 881 La Criba (Don Toño) 24.18015 -104.5482
400 2936 La Criba (Don Toño) 24.18015 -104.5482
228 1533 La Criba (Don Toño) 24.18015 -104.5482
644 5086 La Criba (Don Toño) 24.18015 -104.5482
muestraloc3 <- sample(loc3, round(n * frloc3, 0))
kable(muestraloc3[,c('alumno', 'localidad', 'latitud', 'longitud')], caption = paste("La muestra de alumnos de Localidad ",tabla_frec$Category[3] ))
La muestra de alumnos de Localidad Los Arroyos (Las Colonias)
alumno localidad latitud longitud
2 9 Los Arroyos (Las Colonias) 23.69142 -105.0328
149 1615 Los Arroyos (Las Colonias) 23.69142 -105.0328
370 3802 Los Arroyos (Las Colonias) 23.69142 -105.0328
390 3980 Los Arroyos (Las Colonias) 23.69142 -105.0328
116 1358 Los Arroyos (Las Colonias) 23.69142 -105.0328
543 5533 Los Arroyos (Las Colonias) 23.69142 -105.0328
446 4507 Los Arroyos (Las Colonias) 23.69142 -105.0328
304 3043 Los Arroyos (Las Colonias) 23.69142 -105.0328
288 2866 Los Arroyos (Las Colonias) 23.69142 -105.0328
545 5555 Los Arroyos (Las Colonias) 23.69142 -105.0328
muestraloc4 <- sample(loc4, round(n * frloc4, 0))
kable(muestraloc4[,c('alumno', 'localidad', 'latitud', 'longitud')], caption = paste("La muestra de alumnos de Localidad ",tabla_frec$Category[4] ))
La muestra de alumnos de Localidad La Esperanza
alumno localidad latitud longitud
244 3470 La Esperanza 23.92139 -105.2973
36 367 La Esperanza 23.92139 -105.2973
138 1897 La Esperanza 23.92139 -105.2973
104 1421 La Esperanza 23.92139 -105.2973
14 112 La Esperanza 23.92139 -105.2973
179 2529 La Esperanza 23.92139 -105.2973
294 4181 La Esperanza 23.92139 -105.2973
muestraloc5 <- sample(loc5, round(n * frloc5, 0))
kable(muestraloc5[,c('alumno', 'localidad', 'latitud', 'longitud')], caption = paste("La muestra de alumnos de Localidad ",tabla_frec$Category[5] ))
La muestra de alumnos de Localidad Los Caballos de Don Cruz
alumno localidad latitud longitud
46 721 Los Caballos de Don Cruz 23.95737 -104.5519
147 2429 Los Caballos de Don Cruz 23.95737 -104.5519
44 665 Los Caballos de Don Cruz 23.95737 -104.5519
39 615 Los Caballos de Don Cruz 23.95737 -104.5519
128 2145 Los Caballos de Don Cruz 23.95737 -104.5519
304 5009 Los Caballos de Don Cruz 23.95737 -104.5519
muestraloc6 <- sample(loc6, round(n * frloc6, 0))
kable(muestraloc6[,c('alumno', 'localidad', 'latitud', 'longitud')], caption = paste("La muestra de alumnos de Localidad ",tabla_frec$Category[6] ))
La muestra de alumnos de Localidad Las Curras
alumno localidad latitud longitud
292 5614 Las Curras 24.01172 -104.4686
194 3933 Las Curras 24.01172 -104.4686
171 3475 Las Curras 24.01172 -104.4686
91 1958 Las Curras 24.01172 -104.4686
234 4627 Las Curras 24.01172 -104.4686
Visualizar con mapas

Con la función leatflet() de la librería leaflet se presenta el mapa que ubica visualmente las seis localidades simuladas de toda la población, en cada leyenda se muestra la cantidad de elementos que hay de cada muestra.

El mapa por cuestión técnica solo se muestra en formato web de manera dinámica, verificar el enlace https://rpubs.com/rpizarro/1051225 para manipuar el mapa, aquí en la figura siguiente ¿CUAL? se visualiza el mapa de manera estática.

map<-leaflet() %>%
  addTiles() %>%
  addMarkers(lat = unique(muestraloc1$latitud ), lng = unique(muestraloc1$longitud), popup = paste(unique(muestraloc1$localidad), "Muestra de:", nrow(muestraloc1), "alumnos"))  %>%
  addMarkers(lat = unique(muestraloc2$latitud ), lng = unique(muestraloc2$longitud), popup = paste(unique(muestraloc2$localidad), "Muestra de:", nrow(muestraloc2), "alumnos")) %>%
addMarkers(lat = unique(muestraloc3$latitud ), lng = unique(muestraloc3$longitud), popup = paste(unique(muestraloc3$localidad), "Muestra de:", nrow(muestraloc3), "alumnos")) %>% 
    addMarkers(lat = unique(muestraloc4$latitud ), lng = unique(muestraloc4$longitud), popup = paste(unique(muestraloc4$localidad), "Muestra de:", nrow(muestraloc4), "alumnos")) %>%
addMarkers(lat = unique(muestraloc5$latitud ), lng = unique(muestraloc5$longitud), popup = paste(unique(muestraloc5$localidad), "Muestra de:", nrow(muestraloc5), "alumnos")) %>%
  addMarkers(lat = unique(muestraloc6$latitud ), lng = unique(muestraloc6$longitud), popup = paste(unique(muestraloc6$localidad), "Muestra de:", nrow(muestraloc6), "alumnos"))

Se muetra el mapa únicamente llamando a la variable previamente creada que contiene el mapa map

# Mostrar el mapa 
map

Interpretación del caso

Pendiente

Referencias Bibliográficas