| PERIODO | ESTU_CONSECUTIVO | ESTU_ESTUDIANTE | ESTU_MCPIO_RESIDE | COLE_CARACTER |
|---|---|---|---|---|
| 20194 | SB11201940031558 | ESTUDIANTE | SANTA ANA | TÉCNICO/ACADÉMICO |
| 20194 | SB11201940303339 | ESTUDIANTE | BOGOTÁ D.C. | ACADÉMICO |
| 20194 | SB11201940255017 | ESTUDIANTE | CARTAGENA DE INDIAS | TÉCNICO/ACADÉMICO |
| 20194 | SB11201940154799 | ESTUDIANTE | BOGOTÁ D.C. | ACADÉMICO |
| 20194 | SB11201940280831 | ESTUDIANTE | BOGOTÁ D.C. | TÉCNICO/ACADÉMICO |
| 20194 | SB11201940212273 | ESTUDIANTE | SOLEDAD |
# Se filtra la base para la ciudad de Pasto
base_pasto <- subset(estudiantes, ESTU_MCPIO_RESIDE == "PASTO")
# Se seleccionan únicamente las variables de interés
base_pasto <- base_pasto[, c("PUNT_MATEMATICAS", "PUNT_INGLES")]
# Se eliminan valores faltantes
base_pasto <- na.omit(base_pasto)
# Se verifica la estructura
str(base_pasto)
## 'data.frame': 4551 obs. of 2 variables:
## $ PUNT_MATEMATICAS: int 54 63 37 72 24 77 53 49 52 55 ...
## $ PUNT_INGLES : int 49 65 36 56 43 69 44 62 61 43 ...
head(base_pasto)
## PUNT_MATEMATICAS PUNT_INGLES
## 621 54 49
## 623 63 65
## 638 37 36
## 650 72 56
## 768 24 43
## 1204 77 69
\[ n = \frac{Z_{\alpha/2}^2 \cdot N^2 \cdot S^2}{e^2 + Z_{\alpha/2}^2 \cdot N \cdot S^2} \]
\[ n = \frac{Z_{\alpha/2}^2 \cdot S^2}{e^2 + \frac{Z_{\alpha/2}^2 \cdot S^2}{N}} \]
# Se define la función de tamaño de muestra
n.mas <- function(tipo, N, s, e, 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)
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)
return(n)
}
}
# Tamaño poblacional
N <- nrow(base_pasto)
# Desviaciones estándar
s_mat <- sd(base_pasto$PUNT_MATEMATICAS)
s_ing <- sd(base_pasto$PUNT_INGLES)
# Parámetros
e <- 5
alpha <- 0.05
n_mat <- n.mas("m", N, s_mat, e, alpha)
n_ing <- n.mas("m", N, s_ing, e, alpha)
n <- max(n_mat, n_ing)
s.mas <- function(base, n, seed){
N <- nrow(base)
set.seed(seed)
base$u <- runif(N)
base <- base[order(base$u),]
base <- base[1:n,]
base$pik <- n/N
return(base)
}
muestra <- s.mas(base_pasto, n, 123)
muestra
## PUNT_MATEMATICAS PUNT_INGLES u pik
## 449513 66 55 0.0000653367 0.00461437
## 46981 49 48 0.0004653491 0.00461437
## 10162 53 45 0.0006247733 0.00461437
## 471029 69 61 0.0008289637 0.00461437
## 381036 47 44 0.0011523850 0.00461437
## 125668 72 72 0.0011558197 0.00461437
## 81231 45 39 0.0011916284 0.00461437
## 120768 33 25 0.0024788103 0.00461437
## 302842 40 39 0.0035159516 0.00461437
## 206345 54 53 0.0035354947 0.00461437
## 78073 55 59 0.0036842276 0.00461437
## 99108 60 61 0.0038963431 0.00461437
## 442561 59 64 0.0039615233 0.00461437
## 89020 61 55 0.0041069405 0.00461437
## 421290 70 68 0.0042777238 0.00461437
## 426156 51 55 0.0043652093 0.00461437
## 433639 20 28 0.0046066262 0.00461437
## 189254 41 39 0.0046089741 0.00461437
## 124723 52 62 0.0046381508 0.00461437
## 363650 48 47 0.0048108224 0.00461437
## 135043 52 55 0.0048417395 0.00461437
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)
}
m <- Fan_Muller(base_pasto, n, 123)
muestra2 <- base_pasto[which(m == 1),]
muestra2
## PUNT_MATEMATICAS PUNT_INGLES
## 10162 53 45
## 46981 49 48
## 78073 55 59
## 81231 45 39
## 89020 61 55
## 99108 60 61
## 120768 33 25
## 125668 72 72
## 189254 41 39
## 206345 54 53
## 302842 40 39
## 357837 44 47
## 363650 48 47
## 381036 47 44
## 421290 70 68
## 426156 51 55
## 433639 20 28
## 442561 59 64
## 449513 66 55
## 471029 69 61
## 532384 70 55
\[ CV = 100 \times \frac{SE(\hat{\theta})}{\hat{\theta}} \]
\[ IC = \hat{\theta} \pm Z_{\alpha/2} \cdot SE(\hat{\theta}) \]
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))
}
muestra$ind <- 1
muestra$Fexp <- 1 / muestra$pik
dsgn <- svydesign(
id = ~1,
fpc = ~rep(N, nrow(muestra)),
data = muestra,
weights = ~Fexp
)
# Totales
est_total_mat <- svytotal(~PUNT_MATEMATICAS, dsgn)
salida(est_total_mat, 0.05)
## total se cv ic_low ic_upp
## PUNT_MATEMATICAS 237735.6 12465.8 5.24 213303 262168.1
est_total_ing <- svytotal(~PUNT_INGLES, dsgn)
salida(est_total_ing, 0.05)
## total se cv ic_low ic_upp
## PUNT_INGLES 232751.1 12332.71 5.3 208579.5 256922.8
# Medias
est_media_mat <- svymean(~PUNT_MATEMATICAS, dsgn)
salida(est_media_mat, 0.05)
## mean se cv ic_low ic_upp
## PUNT_MATEMATICAS 52.24 2.74 5.24 46.87 57.61
est_media_ing <- svymean(~PUNT_INGLES, dsgn)
salida(est_media_ing, 0.05)
## mean se cv ic_low ic_upp
## PUNT_INGLES 51.14 2.71 5.3 45.83 56.45
| Objeto | Valor | Descripcion |
|---|---|---|
| N | 4551.00 | Tamaño total de la población de estudiantes en Pasto |
| s_mat | 11.60 | Desviación estándar del puntaje en matemáticas |
| s_ing | 11.70 | Desviación estándar del puntaje en inglés |
| e | 5.00 | Error máximo permitido en la estimación |
| alpha | 0.05 | Nivel de significancia utilizado |
| n_mat | 21.00 | Tamaño de muestra requerido para estimar la media en matemáticas |
| n_ing | 21.00 | Tamaño de muestra requerido para estimar la media en inglés |
| n_final | 21.00 | Tamaño de muestra final seleccionado (máximo entre ambas variables) |
| Variable | Total | Media | |
|---|---|---|---|
| PUNT_MATEMATICAS | Matemáticas | 237735.6 | 52.23810 |
| PUNT_INGLES | Inglés | 232751.1 | 51.14286 |
\[ \hat{T} = \sum_{i=1}^{n} w_i y_i \]
\[ \bar{y} = \frac{\sum w_i y_i}{\sum w_i} \]