Installing Packages

#install.packages("survey")
#install.packages("sampling")

Loading Packages

library(survey)
## Warning: package 'survey' was built under R version 4.5.3
## Loading required package: grid
## Loading required package: Matrix
## Loading required package: survival
## 
## Attaching package: 'survey'
## The following object is masked from 'package:graphics':
## 
##     dotchart
library(sampling)
## Warning: package 'sampling' was built under R version 4.5.3
## 
## Attaching package: 'sampling'
## The following objects are masked from 'package:survival':
## 
##     cluster, strata

Reading Data

base <- readRDS("C:/Users/Mayo Luz/Documents/Cursos_2024/Muestreo_estadistico/PracticaR_2024/Marco.rds")

Data Structure and Visualization Commands

#str(base)
View(head(base,n=50))

Creating the Bogotá Dataset

base_bogota=subset(base,base$COLE_COD_MCPIO_UBICACION==11001)

str() Command for the Bogotá Dataset

#str(base_bogota)

Creating the Academic School Variable

base_bogota$academico=ifelse(base_bogota$COLE_CARACTER=="ACADÉMICO",1,0)

names() and attach() Commands

#str(base_bogota)
#names(base_bogota)
attach(base_bogota)

n.mas() Function

n.mas=function(tipo,N,s,e,p,alpha){
  if(tipo=="t"){n=round((qnorm(1-alpha/2)^2*N^2*s^2)/(e^2+qnorm(1-alpha/2)^2*N*s^2),0)}
  if(tipo=="t"){return(n)}
  if(tipo=="m"){n=round((qnorm(1-alpha/2)^2*s^2)/(e^2+(qnorm(1-alpha/2)^2*s^2/N)),0)}
  if(tipo=="m"){return(n)}
  if(tipo=="p"){n=round((qnorm(1-alpha/2)^2*(N/(N-1))*p*(1-p))/(e^2+(qnorm(1-alpha/2)^2*(N/(N-1))*p*(1-p)*(1/N))),0)
  if(tipo=="p"){return(n)}
  }
}

Example 1: Sample Size Calculation

tipo="p"
N=nrow(base_bogota)
p=0.5
e=0.04
alpha=0.05
n.mas(tipo,N,s,e,p,alpha)
## [1] 596

Negative Coordinated Algorithm for Sample Selection in R

s.mas=function(base,n,seed){
  N=nrow(base)
  set.seed(seed)
  base$u=runif(nrow(base))
  base=base[with(base,order(base$u)),]
  base=base[1:n,]
  base$pik=n/N
  return(base)
}

Example 2: Sample Selection via Negative Coordinated

n=596
seed=123
muestra=s.mas(base_bogota,n,seed)
#str(muestra)
View(head(muestra,n=4))
#names(muestra)

Fan-Muller-Rezucha Method for Sample Selection

Fan_Muller=function(base,n,seed){
  N=nrow(base)
  j = 0
  m = numeric(N)
  set.seed(seed)
  for (k in 1:N) if (runif(1) < (n - j)/(N - k + 1)) {
    j = j + 1
    m[k] = 1}
  return(m)
}

Example 3: Fan-Muller-Rezucha Method

n=596
seed=123
m=Fan_Muller(base_bogota,n,seed)
muestra2=base[which(m==1),]
#str(muestra2)
#head(muestra2)

Enhanced Output Function for the Pi-Estimator

  salida=function(est,alpha){
  est=as.data.frame(est)
  names(est)[2]="se"
  est$cv=100*(est$se/est[,1])
  est$ic_low=est[,1]-qnorm(1-alpha/2)*est$se 
  est$ic_upp=est[,1]+qnorm(1-alpha/2)*est$se
  return(round(est,2))
}

Defining some objects

N=nrow(base_bogota)
muestra$ind=rep(1,nrow(muestra))
muestra$Fexp=1/muestra$pik
attach(muestra)
## The following objects are masked from base_bogota:
## 
##     academico, COLE_AREA_UBICACION, COLE_BILINGUE, COLE_CALENDARIO,
##     COLE_CARACTER, COLE_COD_DANE_ESTABLECIMIENTO, COLE_COD_DANE_SEDE,
##     COLE_COD_DEPTO_UBICACION, COLE_COD_MCPIO_UBICACION,
##     COLE_CODIGO_ICFES, COLE_DEPTO_UBICACION, COLE_GENERO, COLE_JORNADA,
##     COLE_MCPIO_UBICACION, COLE_NATURALEZA, COLE_NOMBRE_ESTABLECIMIENTO,
##     COLE_NOMBRE_SEDE, COLE_SEDE_PRINCIPAL, DESEMP_C_NATURALES,
##     DESEMP_INGLES, DESEMP_LECTURA_CRITICA, DESEMP_MATEMATICAS,
##     DESEMP_SOCIALES_CIUDADANAS, ESTU_COD_DEPTO_PRESENTACION,
##     ESTU_COD_MCPIO_PRESENTACION, ESTU_COD_RESIDE_DEPTO,
##     ESTU_COD_RESIDE_MCPIO, ESTU_CONSECUTIVO, ESTU_DEDICACIONINTERNET,
##     ESTU_DEDICACIONLECTURADIARIA, ESTU_DEPTO_PRESENTACION,
##     ESTU_DEPTO_RESIDE, ESTU_ESTADOINVESTIGACION, ESTU_ESTUDIANTE,
##     ESTU_ETNIA, ESTU_FECHANACIMIENTO, ESTU_GENERACION.E, ESTU_GENERO,
##     ESTU_HORASSEMANATRABAJA, ESTU_INSE_INDIVIDUAL,
##     ESTU_MCPIO_PRESENTACION, ESTU_MCPIO_RESIDE, ESTU_NACIONALIDAD,
##     ESTU_NSE_ESTABLECIMIENTO, ESTU_NSE_INDIVIDUAL, ESTU_PAIS_RESIDE,
##     ESTU_PRIVADO_LIBERTAD, ESTU_TIENEETNIA, ESTU_TIPODOCUMENTO,
##     ESTU_TIPOREMUNERACION, FAMI_COMECARNEPESCADOHUEVO,
##     FAMI_COMECEREALFRUTOSLEGUMBRE, FAMI_COMELECHEDERIVADOS,
##     FAMI_CUARTOSHOGAR, FAMI_EDUCACIONMADRE, FAMI_EDUCACIONPADRE,
##     FAMI_ESTRATOVIVIENDA, FAMI_NUMLIBROS, FAMI_PERSONASHOGAR,
##     FAMI_SITUACIONECONOMICA, FAMI_TIENEAUTOMOVIL, FAMI_TIENECOMPUTADOR,
##     FAMI_TIENECONSOLAVIDEOJUEGOS, FAMI_TIENEHORNOMICROOGAS,
##     FAMI_TIENEINTERNET, FAMI_TIENELAVADORA, FAMI_TIENEMOTOCICLETA,
##     FAMI_TIENESERVICIOTV, FAMI_TRABAJOLABORMADRE,
##     FAMI_TRABAJOLABORPADRE, PERCENTIL_C_NATURALES, PERCENTIL_GLOBAL,
##     PERCENTIL_INGLES, PERCENTIL_LECTURA_CRITICA, PERCENTIL_MATEMATICAS,
##     PERCENTIL_SOCIALES_CIUDADANAS, PERIODO, PUNT_C_NATURALES,
##     PUNT_GLOBAL, PUNT_INGLES, PUNT_LECTURA_CRITICA, PUNT_MATEMATICAS,
##     PUNT_SOCIALES_CIUDADANAS

Creating the “dsgn” Objec

dsgn=svydesign(id=~1,fpc=~rep(N,n),data=muestra,weights=~Fexp)

Estimation of the Population Total

(est=svytotal(~academico,dsgn,deff=TRUE))
##             total      SE DEff
## academico 69628.9  1238.5    1
alpha=0.05
(tabla=salida(est,alpha))
##              total      se deff   cv   ic_low   ic_upp
## academico 69628.91 1238.53    1 1.78 67201.44 72056.38

Estimation of the Population Mean

 (est1=svymean(~PUNT_MATEMATICAS,dsgn,deff=TRUE))
##                      mean       SE DEff
## PUNT_MATEMATICAS 54.73993  0.45126    1
  alpha=0.05
  (tabla1=salida(est1,alpha))
##                   mean   se deff   cv ic_low ic_upp
## PUNT_MATEMATICAS 54.74 0.45    1 0.82  53.86  55.62

Estimation of the Population Proportion

(est2=svymean(~DESEMP_INGLES,dsgn,deff=TRUE))
##                      mean        SE DEff
## DESEMP_INGLESA- 0.2818792 0.0183782    1
## DESEMP_INGLESA1 0.3271812 0.0191653    1
## DESEMP_INGLESA2 0.2651007 0.0180299    1
## DESEMP_INGLESB+ 0.0251678 0.0063982    1
## DESEMP_INGLESB1 0.1006711 0.0122909    1
alpha=0.05
(tabla2=salida(est2,alpha))
##                 mean   se deff    cv ic_low ic_upp
## DESEMP_INGLESA- 0.28 0.02    1  6.52   0.25   0.32
## DESEMP_INGLESA1 0.33 0.02    1  5.86   0.29   0.36
## DESEMP_INGLESA2 0.27 0.02    1  6.80   0.23   0.30
## DESEMP_INGLESB+ 0.03 0.01    1 25.42   0.01   0.04
## DESEMP_INGLESB1 0.10 0.01    1 12.21   0.08   0.12

Estimation of the Population Mean for Multiple Variables

(est3=svymean(~PUNT_GLOBAL+PUNT_LECTURA_CRITICA+PUNT_MATEMATICAS+PUNT_C_NATURALES+
               PUNT_SOCIALES_CIUDADANAS+PUNT_INGLES
             ,dsgn))
##                             mean     SE
## PUNT_GLOBAL              265.985 1.9232
## PUNT_LECTURA_CRITICA      55.676 0.3823
## PUNT_MATEMATICAS          54.740 0.4513
## PUNT_C_NATURALES          51.743 0.4040
## PUNT_SOCIALES_CIUDADANAS  50.287 0.4755
## PUNT_INGLES               54.196 0.4852
alpha=0.05
(tabla3=salida(est3,alpha))
##                            mean   se   cv ic_low ic_upp
## PUNT_GLOBAL              265.98 1.92 0.72 262.22 269.75
## PUNT_LECTURA_CRITICA      55.68 0.38 0.69  54.93  56.43
## PUNT_MATEMATICAS          54.74 0.45 0.82  53.86  55.62
## PUNT_C_NATURALES          51.74 0.40 0.78  50.95  52.54
## PUNT_SOCIALES_CIUDADANAS  50.29 0.48 0.95  49.36  51.22
## PUNT_INGLES               54.20 0.49 0.90  53.25  55.15

Estimación del tamaño absoluto de un dominio

(est4=svyby(~ind,~ESTU_GENERACION.E,dsgn,svytotal))
##                                                     ESTU_GENERACION.E
## GENERACION E - EXCELENCIA NACIONAL GENERACION E - EXCELENCIA NACIONAL
## GENERACION E - GRATUIDAD                     GENERACION E - GRATUIDAD
## NO                                                                 NO
##                                           ind       se
## GENERACION E - EXCELENCIA NACIONAL   138.9799  138.479
## GENERACION E - GRATUIDAD           16816.5638 1361.021
## NO                                 65876.4564 1365.194
est4=as.data.frame(est4)

table(ESTU_GENERACION.E)
## ESTU_GENERACION.E
## GENERACION E - EXCELENCIA NACIONAL           GENERACION E - GRATUIDAD 
##                                  1                                121 
##                                 NO 
##                                474
(est4=est4[,-1])
##                                           ind       se
## GENERACION E - EXCELENCIA NACIONAL   138.9799  138.479
## GENERACION E - GRATUIDAD           16816.5638 1361.021
## NO                                 65876.4564 1365.194
alpha=0.05
(tabla4=salida(est4,alpha))
##                                         ind      se    cv   ic_low   ic_upp
## GENERACION E - EXCELENCIA NACIONAL   138.98  138.48 99.64  -132.43   410.39
## GENERACION E - GRATUIDAD           16816.56 1361.02  8.09 14149.01 19484.12
## NO                                 65876.46 1365.19  2.07 63200.73 68552.19

Estimation of the Total of a Variable Within a Domain

(est5=svyby(~academico,~ESTU_GENERACION.E,dsgn,deff=T,svytotal))
##                                                     ESTU_GENERACION.E
## GENERACION E - EXCELENCIA NACIONAL GENERACION E - EXCELENCIA NACIONAL
## GENERACION E - GRATUIDAD                     GENERACION E - GRATUIDAD
## NO                                                                 NO
##                                     academico       se DEff.academico
## GENERACION E - EXCELENCIA NACIONAL   138.9799  138.479             NA
## GENERACION E - GRATUIDAD           13342.0671 1243.787       4.033613
## NO                                 56147.8658 1581.126       2.180456
est5=as.data.frame(est5)
est5=est5[,-1]
alpha=0.05
(tabla5=salida(est5,alpha))
##                                    academico      se DEff.academico    cv
## GENERACION E - EXCELENCIA NACIONAL    138.98  138.48             NA 99.64
## GENERACION E - GRATUIDAD            13342.07 1243.79           4.03  9.32
## NO                                  56147.87 1581.13           2.18  2.82
##                                      ic_low   ic_upp
## GENERACION E - EXCELENCIA NACIONAL  -132.43   410.39
## GENERACION E - GRATUIDAD           10904.29 15779.84
## NO                                 53048.91 59246.82

Estimation of the Population Mean Within a Domain

(est6=svyby(~PUNT_MATEMATICAS,~ESTU_GENERACION.E,dsgn,deff=T,svymean))
##                                                     ESTU_GENERACION.E
## GENERACION E - EXCELENCIA NACIONAL GENERACION E - EXCELENCIA NACIONAL
## GENERACION E - GRATUIDAD                     GENERACION E - GRATUIDAD
## NO                                                                 NO
##                                    PUNT_MATEMATICAS        se
## GENERACION E - EXCELENCIA NACIONAL         70.00000 0.0000000
## GENERACION E - GRATUIDAD                   50.42975 0.9572196
## NO                                         55.80802 0.4988673
##                                    DEff.PUNT_MATEMATICAS
## GENERACION E - EXCELENCIA NACIONAL                    NA
## GENERACION E - GRATUIDAD                       0.9934023
## NO                                             0.9995674
est6=as.data.frame(est6)
est6=est6[,-1]
alpha=0.05
(tabla6=salida(est6,alpha))
##                                    PUNT_MATEMATICAS   se DEff.PUNT_MATEMATICAS
## GENERACION E - EXCELENCIA NACIONAL            70.00 0.00                    NA
## GENERACION E - GRATUIDAD                      50.43 0.96                  0.99
## NO                                            55.81 0.50                  1.00
##                                      cv ic_low ic_upp
## GENERACION E - EXCELENCIA NACIONAL 0.00  70.00  70.00
## GENERACION E - GRATUIDAD           1.90  48.55  52.31
## NO                                 0.89  54.83  56.79