## mun cod_municipio latitude longitude
## Length:853 Min. :3100104 Min. :-22.85 Min. :-50.69
## Class :character 1st Qu.:3119500 1st Qu.:-21.09 1st Qu.:-45.46
## Mode :character Median :3137304 Median :-19.88 Median :-43.93
## Mean :3136982 Mean :-19.58 Mean :-44.10
## 3rd Qu.:3154903 3rd Qu.:-18.48 3rd Qu.:-42.62
## Max. :3172202 Max. :-14.27 Max. :-39.94
## H21 cad21 edu21 gpc21
## Min. : 0.000 Min. :0.1549 Min. :0.000 Min. : 0.000
## 1st Qu.: 0.000 1st Qu.:0.3843 1st Qu.:0.027 1st Qu.: 0.000
## Median : 1.000 Median :0.4832 Median :0.104 Median : 6.080
## Mean : 3.002 Mean :0.4981 Mean :0.118 Mean : 8.701
## 3rd Qu.: 2.000 3rd Qu.:0.6171 3rd Qu.:0.188 3rd Qu.: 11.280
## Max. :354.000 Max. :0.9689 Max. :0.536 Max. :153.920
## rend21 pmpc21 pop21 lpop
## Min. :1.345 Min. :0.0771 Min. : 771 Min. : 6.648
## 1st Qu.:1.761 1st Qu.:0.4094 1st Qu.: 4843 1st Qu.: 8.485
## Median :1.951 Median :0.5586 Median : 8288 Median : 9.023
## Mean :2.053 Mean :0.5496 Mean : 25102 Mean : 9.232
## 3rd Qu.:2.209 3rd Qu.:0.6782 3rd Qu.: 17850 3rd Qu.: 9.790
## Max. :5.419 Max. :0.9523 Max. :2530701 Max. :14.744
observed = data$H21
x1 = data$cad21
x2 = data$edu21
x3 = data$gpc21
x4 = data$rend21
x5 = data$pmpc21
x6 = data$lpop
population = data$pop21
n=length(observed)
r = sum(observed)/sum(population)
expected = population * r
# Especificações a priori
m0 <- 0
v0 <- 10
m1 <- 0
v1 <- 10
m2 <- 0
v2 <- 10
m3 <- 0
v3 <- 10
m4 <- 0
v4 <- 10
m5 <- 0
v5 <- 10
m6 <- 0
v6 <- 10
# Organizando os elementos para o Stan
data <- list(
n = n,
observed = observed,
expected = expected,
x1 = x1,
x2 = x2,
x3 = x3,
x4 = x4,
x5 = x5,
x6 = x6,
m0 = m0,
v0 = v0,
m1 = m1,
v1 = v1,
m2 = m2,
v2 = v2,
m3 = m3,
v3 = v3,
m4 = m4,
v4 = v4,
m5 = m5,
v5 = v5,
m6 = m6,
v6 = v6
)
# Nomes dos parâmetros a serem estimados
pars <- c("beta0", "beta1", "beta2", "beta3", "beta4", "beta5", "beta6", "theta")
# Chutes iniciais
initvals <- list()
initvals[[1]] <- list(
beta0 = 0,
beta1 = 0,
beta2 = 0,
beta3 = 0,
beta4 = 0,
beta5 = 0,
beta6 = 0
)
# Configurações para o MCMC
iter <- 15000 # Total de iterações (incluindo warm-up)
warmup <- 5000
chains <- 1
stanModel <- rstan::stan_model("script_mod1.stan")
output <- sampling(
stanModel,
data = data,
iter = iter,
warmup = warmup,
chains = chains,
pars = pars,
init = initvals,
verbose = FALSE
)
##
## SAMPLING FOR MODEL 'anon_model' NOW (CHAIN 1).
## Chain 1:
## Chain 1: Gradient evaluation took 0.001636 seconds
## Chain 1: 1000 transitions using 10 leapfrog steps per transition would take 16.36 seconds.
## Chain 1: Adjust your expectations accordingly!
## Chain 1:
## Chain 1:
## Chain 1: Iteration: 1 / 15000 [ 0%] (Warmup)
## Chain 1: Iteration: 1500 / 15000 [ 10%] (Warmup)
## Chain 1: Iteration: 3000 / 15000 [ 20%] (Warmup)
## Chain 1: Iteration: 4500 / 15000 [ 30%] (Warmup)
## Chain 1: Iteration: 5001 / 15000 [ 33%] (Sampling)
## Chain 1: Iteration: 6500 / 15000 [ 43%] (Sampling)
## Chain 1: Iteration: 8000 / 15000 [ 53%] (Sampling)
## Chain 1: Iteration: 9500 / 15000 [ 63%] (Sampling)
## Chain 1: Iteration: 11000 / 15000 [ 73%] (Sampling)
## Chain 1: Iteration: 12500 / 15000 [ 83%] (Sampling)
## Chain 1: Iteration: 14000 / 15000 [ 93%] (Sampling)
## Chain 1: Iteration: 15000 / 15000 [100%] (Sampling)
## Chain 1:
## Chain 1: Elapsed Time: 268.335 seconds (Warm-up)
## Chain 1: 557.759 seconds (Sampling)
## Chain 1: 826.094 seconds (Total)
## Chain 1:
samp = extract(output)
sbeta0 = samp$beta0
sbeta1 = samp$beta1
sbeta2 = samp$beta2
sbeta3 = samp$beta3
sbeta4 = samp$beta4
sbeta5 = samp$beta5
sbeta6 = samp$beta6
stheta = samp$theta
aux = cbind(sbeta0, sbeta1, sbeta2, sbeta3, sbeta4, sbeta5, sbeta6, stheta[,1])
colnames(aux) = c("beta0", "beta1", "beta2", "beta3", "beta4", "beta5", "beta6", "theta[1]")
aux = as.mcmc(aux)
#geweke.diag(aux)
posterior <- as.array(aux)
mcmc_trace(posterior, pars = c("beta0", "beta1", "beta2", "beta3",
"beta4", "beta5", "beta6", "theta[1]"))

traceplot(aux) # plotes um a um








diagnostics <- list(
summary = summary(aux),
hpd = HPDinterval(aux),
effective_size = effectiveSize(aux),
# gelman = gelman.diag(aux) #duas cadeias
geweke = geweke.diag(aux)
)
diagnostics
## $summary
##
## Iterations = 1:10000
## Thinning interval = 1
## Number of chains = 1
## Sample size per chain = 10000
##
## 1. Empirical mean and standard deviation for each variable,
## plus standard error of the mean:
##
## Mean SD Naive SE Time-series SE
## beta0 -0.996394 0.256726 2.567e-03 2.567e-03
## beta1 -0.004545 0.001702 1.702e-05 1.702e-05
## beta2 -0.781942 0.258026 2.580e-03 2.502e-03
## beta3 0.037228 3.116740 3.117e-02 3.066e-02
## beta4 -0.021658 0.041957 4.196e-04 4.196e-04
## beta5 0.256747 0.164292 1.643e-03 1.643e-03
## beta6 0.090625 0.020653 2.065e-04 1.997e-04
## theta[1] 0.766958 0.046821 4.682e-04 4.526e-04
##
## 2. Quantiles for each variable:
##
## 2.5% 25% 50% 75% 97.5%
## beta0 -1.499447 -1.169600 -0.992760 -0.822931 -0.492423
## beta1 -0.007988 -0.005659 -0.004524 -0.003387 -0.001247
## beta2 -1.287019 -0.955866 -0.784165 -0.605884 -0.277785
## beta3 -6.116946 -2.046722 0.033626 2.120816 6.167277
## beta4 -0.102668 -0.050191 -0.021685 0.006279 0.060420
## beta5 -0.069102 0.145740 0.256135 0.367465 0.577908
## beta6 0.050068 0.076358 0.090578 0.104668 0.131049
## theta[1] 0.679848 0.733982 0.765098 0.798025 0.862091
##
##
## $hpd
## lower upper
## beta0 -1.476518896 -0.473159320
## beta1 -0.007827059 -0.001107242
## beta2 -1.288242607 -0.279497371
## beta3 -5.942045228 6.267224087
## beta4 -0.104850306 0.057938483
## beta5 -0.065905668 0.578883843
## beta6 0.051188314 0.131792458
## theta[1] 0.681755426 0.863518455
## attr(,"Probability")
## [1] 0.95
##
## $effective_size
## beta0 beta1 beta2 beta3 beta4 beta5 beta6 theta[1]
## 10000.00 10000.00 10637.94 10337.03 10000.00 10000.00 10695.86 10700.40
##
## $geweke
##
## Fraction in 1st window = 0.1
## Fraction in 2nd window = 0.5
##
## beta0 beta1 beta2 beta3 beta4 beta5 beta6 theta[1]
## -1.1869 0.8827 0.1263 1.5733 0.3613 2.3030 0.3930 1.1656