I Definición del problema.

1 Una primera y única carga:

CASEN_2015 <- read_sav("Casen 2015.sav")
saveRDS(CASEN_2015, "CASEN_2015_fexpc.rds") 

2 Lectura de la data:

CASEN_2015_ds <- readRDS("CASEN_2015_fexpc.rds")
# CASEN_2015_ds

3 Determinación de las comunas que no tienen factor de expansión y sus frecuencias en la Casen 2015:

new_DF <- subset(CASEN_2015_ds, is.na(CASEN_2015_ds$expc))
newdata <- new_DF[c("comuna", "expc")]
frecuencias_fexp <- table(newdata$comuna)
newdata <- distinct(newdata, comuna, .keep_all = TRUE)
nrow(newdata)
## [1] 185
unidos <- cbind(newdata, frecuencias_fexp)
head(unidos, 4)
##   comuna expc Var1 Freq
## 1   1402   NA 1402  132
## 2   1404   NA 1404  268
## 3   1405   NA 1405  327
## 4   2102   NA 2102  337
# para observar la relacion codigo-comuna.
valor <-  newdata$comuna %>% attr('labels')
# valor

4 Actualicemos los códigos de la base de datos:

Vamos a hacerlo en forma global en la base de datos del 2015:

Debemos modificar 21 comunas.

CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8401] <- 16101
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8402] <- 16102
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8403] <- 16202

CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8404] <- 16203
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8405] <- 16302
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8406] <- 16103

CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8407] <- 16104
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8408] <- 16204
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8409] <- 16303

CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8410] <- 16105
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8411] <- 16106
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8412] <- 16205

CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8413] <- 16107
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8414] <- 16201
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8415] <- 16206

CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8416] <- 16301
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8417] <- 16304
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8418] <- 16108

CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8419] <- 16305
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8420] <- 16207
CASEN_2015_ds$comuna[CASEN_2015_ds$comuna == 8421] <- 16109

5 Determinemos de las comunas que no tienen factor de expansión y sus frecuencias en la Casen 2015 con códigos actualizados:

new_DF <- subset(CASEN_2015_ds, is.na(CASEN_2015_ds$expc))
newdata <- new_DF[c("comuna", "expc")]
frecuencias_fexp <- table(newdata$comuna)
newdata <- distinct(newdata, comuna, .keep_all = TRUE)
nrow(newdata)
## [1] 185
unidos <- cbind(newdata, frecuencias_fexp)
head(unidos, 5)
##   comuna expc Var1 Freq
## 1   1402   NA 1402  132
## 2   1404   NA 1404  268
## 3   1405   NA 1405  327
## 4   2102   NA 2102  337
## 5   2103   NA 2103   98

II El método.

i Hay que crear una tabla factores_propios con la población proyectada del 2015 al 2020 y los códigos las 185 comunas.

ii hay que anadir una columna a factores_propios con un factor de expansión: para cada comuna hay un número muestral n. El fdeexp sera = poblacion comunal / n. 

iii Hay que adjuntar el factor de expansión al dataset original:

1 Obtenemos las poblaciones por comuna:

pob_chilena  <- readRDS("poblacion_chilena.rds")
pob_por_comuna_ine_2015 <- aggregate(pob_chilena$Poblacion.2015, by=list(Comuna=pob_chilena$Comuna), FUN=sum)
head(pob_por_comuna_ine_2015, 5)
##   Comuna sum.pob_chilena$Poblacion.2015
## 1   1101                         196728
## 2   1107                         106694
## 3   1401                          14451
## 4   1402                           1273
## 5   1403                           1499

2 Hacemos un merge entre unidos y pob_por_comuna_ine_2015 por código de comuna:

names(pob_por_comuna_ine_2015)[1] <- "comuna"
df = merge( x = unidos, y = pob_por_comuna_ine_2015, by = "comuna", all.x = TRUE)
head(df,5)
##   comuna expc Var1 Freq sum.pob_chilena$Poblacion.2015
## 1   1402   NA 1402  132                           1273
## 2   1404   NA 1404  268                           2685
## 3   1405   NA 1405  327                           5087
## 4   2102   NA 2102  337                          12267
## 5   2103   NA 2103   98                           1539
names(df)[5] <- "pobla"
nrow(df)
## [1] 185
head(df,5)
##   comuna expc Var1 Freq pobla
## 1   1402   NA 1402  132  1273
## 2   1404   NA 1404  268  2685
## 3   1405   NA 1405  327  5087
## 4   2102   NA 2102  337 12267
## 5   2103   NA 2103   98  1539

3 Obtenemos nuestra tabla final:

df_final <- mutate(df, fexpc = trunc(pobla/Freq))
head(df_final,5)
##   comuna expc Var1 Freq pobla fexpc
## 1   1402   NA 1402  132  1273     9
## 2   1404   NA 1404  268  2685    10
## 3   1405   NA 1405  327  5087    15
## 4   2102   NA 2102  337 12267    36
## 5   2103   NA 2103   98  1539    15

4 Extraigamos el fexpc para la comuna 2102, con la que haremos un contraste al final:

gg <- df_final[df_final$comuna == 2102,] 
gg
##   comuna expc Var1 Freq pobla fexpc
## 4   2102   NA 2102  337 12267    36

5 Reemplacemos los factores de expansión faltantes por los que hemos calculado.

CASEN_2015_ds_final <- CASEN_2015_ds
for(id in 1:nrow(df_final)){
  CASEN_2015_ds_final$expc[CASEN_2015_ds_final$comuna %in% df_final$comuna[id]] <- df_final$fexpc[id]
}
# nrow(CASEN_2015_ds_final)
# CASEN_2015_ds_final

CASEN_2015_ds_final es nuestra base de datos Casen 2015 finalmente corregida.

III Pruebas.

Prueba I: ¿Hay observaciones sin factor de expansión?

new_DF <- subset(CASEN_2015_ds_final, is.na(CASEN_2015_ds_final$expc))
CASEN_2015_ds_final_f <- new_DF[c("comuna", "expc")]
# newdata <- distinct(CASEN_2015_ds_final_f, comuna, .keep_all = TRUE)
# newdata
nrow(CASEN_2015_ds_final_f)
## [1] 0

Prueba II: ¿Están correctamente asignados los factores de expansión?

g <- CASEN_2015_ds_final[CASEN_2015_ds_final$comuna == 2102, c(735:737)] 
head(g,5)
## # A tibble: 5 x 3
##    expr  expc expr_div
##   <dbl> <dbl>    <dbl>
## 1    54    36      105
## 2    54    36       94
## 3    54    36      105
## 4    54    36       73
## 5    54    36      211

Vemos que la comuna 2102 tiene como factor de expansión el número 36, que es justamente el que hemos calculado y asignado para ésta comuna en el punto: 4 Extraigamos el fexpc para la comuna 2102, con la que haremos un contraste al final.

QED.