15.3 Preparando insumos para STAN
- Lectura y adecuación de covariables
<-
statelevel_predictors_df readRDS('Recursos/Día5/Sesion2/Data/statelevel_predictors_df_dam2.rds')
## Estandarizando las variables para controlar el efecto de la escala.
%<>%
statelevel_predictors_df mutate_at(vars("luces_nocturnas",
"cubrimiento_cultivo",
"cubrimiento_urbano",
"modificacion_humana",
"accesibilidad_hospitales",
"accesibilidad_hosp_caminado"),
function(x)as.numeric(scale(x)))
- Seleccionar las variables del modelo y crear matriz de covariables.
<-
names_cov c(
"dam2",
"tasa_desocupacion",
"hacinamiento",
"piso_tierra",
"luces_nocturnas",
"cubrimiento_cultivo",
"modificacion_humana"
)<-
X_pred anti_join(statelevel_predictors_df %>% select(all_of(names_cov)),
%>% select(dam2)) indicador_dam1
En el bloque de código se identifican que dominios serán los predichos.
%>% select(dam2) %>%
X_pred saveRDS(file = "Recursos/Día5/Sesion2/Data/dam_pred.rds")
Creando la matriz de covariables para los dominios no observados (X_pred
) y los observados (X_obs
)
## Obteniendo la matrix
%<>%
X_pred data.frame() %>%
select(-dam2) %>% as.matrix()
## Identificando los dominios para realizar estimación del modelo
<- inner_join(indicador_dam1 %>% select(dam2, id_orden),
X_obs %>% select(all_of(names_cov))) %>%
statelevel_predictors_df arrange(id_orden) %>%
data.frame() %>%
select(-dam2, -id_orden) %>% as.matrix()
- Calculando el n_efectivo y el \(\tilde{y}\)
<- nrow(indicador_dam1)
D <- 3 # Ocupado, desocupado, inactivo.
P <- matrix(NA, D, P)
Y_tilde <- matrix(NA, D, P)
n_tilde <- matrix(NA, D, P)
Y_hat
# n efectivos ocupado
1] <- (indicador_dam1$Ocupado*(1 - indicador_dam1$Ocupado))/indicador_dam1$Ocupado_var
n_tilde[,1] <- n_tilde[,1]* indicador_dam1$Ocupado
Y_tilde[,
# n efectivos desocupado
2] <- (indicador_dam1$Desocupado*(1 - indicador_dam1$Desocupado))/indicador_dam1$Desocupado_var
n_tilde[,2] <- n_tilde[,2]* indicador_dam1$Desocupado
Y_tilde[,
# n efectivos Inactivo
3] <- (indicador_dam1$Inactivo*(1 - indicador_dam1$Inactivo))/indicador_dam1$Inactivo_var
n_tilde[,3] <- n_tilde[,3]* indicador_dam1$Inactivo Y_tilde[,
- Compilando el modelo
= rowSums(Y_tilde)
ni_hat 1] <- ni_hat* indicador_dam1$Ocupado
Y_hat[,2] <- ni_hat* indicador_dam1$Desocupado
Y_hat[,3] <- ni_hat* indicador_dam1$Inactivo
Y_hat[,<- ceiling(Y_hat)
Y_hat
<- cbind(matrix(1,nrow = D,ncol = 1),X_obs)
X1_obs = ncol(X1_obs)
K <- nrow(X_pred)
D1 <- cbind(matrix(1,nrow = D1,ncol = 1),X_pred)
X1_pred
<- list(D = D,
sample_data P = P,
K = K,
hat_y = Y_hat,
X_obs = X1_obs,
X_pred = X1_pred,
D1 = D1)
library(rstan)
<- stan(
fit_mcmc2 file = "Recursos/Día5/Sesion2/Data/modelosStan/01 Multinomial_simple_pred.stan", # Stan program
data = sample_data, # named list of data
verbose = TRUE,
warmup = 1000, # number of warmup iterations per chain
iter = 2000, # total number of iterations per chain
cores = 4, # number of cores (could use one per chain)
)
saveRDS(fit_mcmc2,
"Recursos/Día5/Sesion2/Data/fit_multinomial_cor.Rds")