#install.packages("pacman") #con este paquete levantas todes les paquetes que querés juntes y los lee sin tener que poner library() y si no están te los busca y te los instala y después los lee. Lo +.
#devtools::install_github("DFJL/SamplingUtil", force = TRUE) #descargo SamplingUtil con devtools
pacman::p_load(devtools, tidyverse,RCurl,samplingbook, SamplingUtil, readxl)
Ejemplo de cálculo del tamaño de muestra para un MAS para estimar el promedio (x̄) sin correción por Población finita, error de muestreo (d) =10, Desvio muestral (s) =43, Nivel de confianza (1-⍺) = 0,95
sample.size.mean(e=10, S=43, level = 0.95)
##
## sample.size.mean object: Sample size for mean estimate
## Without finite population correction: N=Inf, precision e=10 and standard deviation S=43
##
## Sample size needed: 72
Cálculo del tamaño de muestra para un MAS para estimar una proporción (p) sin correción por Población finita con error de muestreo (d) =0.05, p=0.5, Nivel de confianza (1-⍺) =95%
sample.size.prop(e=0.05, P=0.5, level = 0.95)
##
## sample.size.prop object: Sample size for proportion estimate
## Without finite population correction: N=Inf, precision e=0.05 and expected proportion P=0.5
##
## Sample size needed: 385
Cálculo del tamaño de muestra (n) para un MAS para estimar una proporción (p) con correción por Población finita y error de muestreo (d) =0,05; p=0,5, Nivel de confianza (1-⍺) =95%
sample.size.prop(e=0.05, P=0.5, N=11700, level = 0.95)
##
## sample.size.prop object: Sample size for proportion estimate
## With finite population correction: N=11700, precision e=0.05 and expected proportion P=0.5
##
## Sample size needed: 372
Levanto la base de datos a utilizar:
#urlfile_1 = 'https://github.com/oblitterator/tecnicas_muestreo/raw/main/Base_de_Datos_Viviendas_x_Fraccion_y_Radio_formato_BD.xls' #revisar porque no me deja leerlo directo de github, claramente es un tema de la funcion read_excel
path = '/home/oblitterator/Escritorio/MGAIE/Muestreo/Base_de_Datos_Viviendas_x_Fraccion_y_Radio_formato_BD.xls'
df = read_excel(path, sheet = "Base viviendas")
# Vista de la cabecera de la base de datos
head(df)
## # A tibble: 6 × 9
## `Nº Orden` `Nº Fracción` `Nº Radio` `Nº Manzana` `Nº Vivienda en Manzana`
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 1 1 1 1
## 2 2 1 1 1 2
## 3 3 1 1 1 3
## 4 4 1 1 1 4
## 5 5 1 1 1 5
## 6 6 1 1 1 6
## # … with 4 more variables: Cantidad Personas <dbl>,
## # Cantidad Habitaciones <dbl>, Superficie (m2) de la Vivienda <dbl>,
## # Consumo Prom.Agua (lts.) <dbl>
Selección de la muestra con muestreo sistemático
Se debe indicar el N tamaño de la población y n tamaño de la muestra
muestreo_sistematico = sys.sample(N=nrow(df),n=300) # le paso como primer argumento del N poblacional el total de filas del Data Frame, y como segundo argumento el n con el tamaño de la muestra que quiero
Esto lo que me devuelve son los ID que tomaré para mi muestra, en base al MS. Veamos el listado
muestreo_sistematico
## [1] 10 49 88 127 166 205 244 283 322 361 400 439
## [13] 478 517 556 595 634 673 712 751 790 829 868 907
## [25] 946 985 1024 1063 1102 1141 1180 1219 1258 1297 1336 1375
## [37] 1414 1453 1492 1531 1570 1609 1648 1687 1726 1765 1804 1843
## [49] 1882 1921 1960 1999 2038 2077 2116 2155 2194 2233 2272 2311
## [61] 2350 2389 2428 2467 2506 2545 2584 2623 2662 2701 2740 2779
## [73] 2818 2857 2896 2935 2974 3013 3052 3091 3130 3169 3208 3247
## [85] 3286 3325 3364 3403 3442 3481 3520 3559 3598 3637 3676 3715
## [97] 3754 3793 3832 3871 3910 3949 3988 4027 4066 4105 4144 4183
## [109] 4222 4261 4300 4339 4378 4417 4456 4495 4534 4573 4612 4651
## [121] 4690 4729 4768 4807 4846 4885 4924 4963 5002 5041 5080 5119
## [133] 5158 5197 5236 5275 5314 5353 5392 5431 5470 5509 5548 5587
## [145] 5626 5665 5704 5743 5782 5821 5860 5899 5938 5977 6016 6055
## [157] 6094 6133 6172 6211 6250 6289 6328 6367 6406 6445 6484 6523
## [169] 6562 6601 6640 6679 6718 6757 6796 6835 6874 6913 6952 6991
## [181] 7030 7069 7108 7147 7186 7225 7264 7303 7342 7381 7420 7459
## [193] 7498 7537 7576 7615 7654 7693 7732 7771 7810 7849 7888 7927
## [205] 7966 8005 8044 8083 8122 8161 8200 8239 8278 8317 8356 8395
## [217] 8434 8473 8512 8551 8590 8629 8668 8707 8746 8785 8824 8863
## [229] 8902 8941 8980 9019 9058 9097 9136 9175 9214 9253 9292 9331
## [241] 9370 9409 9448 9487 9526 9565 9604 9643 9682 9721 9760 9799
## [253] 9838 9877 9916 9955 9994 10033 10072 10111 10150 10189 10228 10267
## [265] 10306 10345 10384 10423 10462 10501 10540 10579 10618 10657 10696 10735
## [277] 10774 10813 10852 10891 10930 10969 11008 11047 11086 11125 11164 11203
## [289] 11242 11281 11320 11359 11398 11437 11476 11515 11554 11593 11632 11671
Ahora construyo un nuevo DF en base a los ID seleccionados (muestreo_sistemático) con las variables del DF original
df_ms<- df[muestreo_sistematico, ] #revisar el sentido de esta sintaxis, entiendo que lo q hace es un indexing en base a los ID preseleccionados, pero chequear.
Vista de la cabecera de la base de datos de la muestra
head(df_ms)
## # A tibble: 6 × 9
## `Nº Orden` `Nº Fracción` `Nº Radio` `Nº Manzana` `Nº Vivienda en Manzana`
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 10 1 1 1 10
## 2 49 1 1 2 24
## 3 88 1 2 4 4
## 4 127 1 3 5 20
## 5 166 1 4 7 4
## 6 205 1 4 8 22
## # … with 4 more variables: Cantidad Personas <dbl>,
## # Cantidad Habitaciones <dbl>, Superficie (m2) de la Vivienda <dbl>,
## # Consumo Prom.Agua (lts.) <dbl>
Verifico que el nuevo DF tenga el n requerido:
dim(df_ms)
## [1] 300 9
Para hacer la estimación de promedio y total e IC usar los mismos comandos que en el ejemplo de MAS en Kaggle, pero sobre este DF.
COMPLETAR