5.3 Modelos uniparamétricos
Los modelos que están definidos en términos de un solo parámetro que pertenece al conjunto de los números reales se definen como modelos uniparamétricos.
5.3.1 Modelo de unidad: Bernoulli
Suponga que \(Y\) es una variable aleatoria con distribución Bernoulli dada por:
\[ p(Y \mid \theta)=\theta^y(1-\theta)^{1-y}I_{\{0,1\}}(y) \]
Como el parámetro \(\theta\) está restringido al espacio \(\Theta=[0,1]\), entonces es posible formular varias opciones para la distribución previa del parámetro. En particular, la distribución uniforme restringida al intervalo \([0,1]\) o la distribución Beta parecen ser buenas opciones. Puesto que la distribución uniforme es un caso particular de la distribución Beta. Por lo tanto la distribución previa del parámetro \(\theta\) estará dada por
\[ \begin{equation} p(\theta \mid \alpha,\beta)= \frac{1}{Beta(\alpha,\beta)}\theta^{\alpha-1}(1-\theta)^{\beta-1}I_{[0,1]}(\theta). \end{equation} \]
y la distribución posterior del parámetro \(\theta\) sigue una distribución
\[ \begin{equation*} \theta \mid Y \sim Beta(y+\alpha,\beta-y+1) \end{equation*} \]
Cuando se tiene una muestra aleatoria \(Y_1,\ldots,Y_n\) de variables con distribución Bernoulli de parámetro \(\theta\), entonces la distribución posterior del parámetro de interés es
\[ \begin{equation*} \theta \mid Y_1,\ldots,Y_n \sim Beta\left(\sum_{i=1}^ny_i+\alpha,\beta-\sum_{i=1}^ny_i+n\right) \end{equation*} \]
Obejtivo
Estimar la proporción de personas que están por debajo de la linea pobreza. Es decir, \[ P = \frac{\sum_{U}y_i}{N} \] donde \(y_i\) toma el valor de 1 cuando el ingreso de la persona es menor a la linea de pobreza 0 en caso contrario
El estimador de \(P\) esta dado por:
\[ \hat{P} = \frac{\sum_{s}w_{i}y_{i}}{\sum_{s}{w_{i} }} \]
con \(w_i\) el factor de expansión para la \(i-ésima\) observación. Además, y obtener \(\widehat{Var}\left(\hat{P}\right)\).
5.3.1.1 Práctica en R
library(tidyverse)
encuesta <- readRDS("Recursos/Día2/Sesion1/Data/encuestaDOM21N1.rds") Sea \(Y\) la variable aleatoria
\[ Y_{i}=\begin{cases} 1 & ingreso<lp\\ 0 & ingreso\geq lp \end{cases} \]
El tamaño de la muestra es de 6796 en la dam 1
datay <- encuesta %>% filter(dam_ee == 1) %>%
transmute(y = ifelse(ingcorte < lp, 1,0))
addmargins(table(datay$y))| 0 | 1 | Sum |
|---|---|---|
| 5063 | 1733 | 6796 |
Un grupo de estadístico experto decide utilizar una distribución previa Beta, definiendo los parámetros de la distribución previa como \(Beta(\alpha=1, \beta=1)\). La distribución posterior del parámetro de interés, que representa la probabilidad de estar por debajo de la linea de pobreza, es \(Beta(1733 + 1, 1 - 1733 + 6796)=Beta(1734, 5064)\)
Figura 5.1: Distribución previa (línea roja) y distribución posterior (línea negra)
La estimación del parámetro estaría dado por:
\[ E(X) = \frac{\alpha}{\alpha + \beta} = \frac{1734}{1734+ 5064} = 0.255075 \]
luego, el intervalo de credibilidad para la distribución posterior es.
n = length(datay$y)
n1 = sum(datay$y)
qbeta(c(0.025, 0.975),
shape1 = 1 + n1,
shape2 = 1 - n1 + n)## [1] 0.2447824 0.2655041
5.3.1.2 Práctica en STAN
En STAN es posible obtener el mismo tipo de inferencia creando cuatro cadenas cuya distribución de probabilidad coincide con la distribución posterior del ejemplo.
data { // Entrada el modelo
int<lower=0> n; // Numero de observaciones
int y[n]; // Vector de longitud n
real a;
real b;
}
parameters { // Definir parámetro
real<lower=0, upper=1> theta;
}
model { // Definir modelo
y ~ bernoulli(theta);
theta ~ beta(a, b); // Distribución previa
}
generated quantities {
real ypred[n]; // vector de longitud n
for (ii in 1:n){
ypred[ii] = bernoulli_rng(theta);
}
}Para compilar STAN debemos definir los parámetros de entrada
sample_data <- list(n = nrow(datay),
y = datay$y,
a = 1,
b = 1)Para ejecutar STAN en R tenemos la librería rstan
library(rstan)
Bernoulli <- "Recursos/Día2/Sesion1/Data/modelosStan/1Bernoulli.stan"options(mc.cores = parallel::detectCores())
rstan::rstan_options(auto_write = TRUE) # speed up running time
model_Bernoulli <- stan(
file = Bernoulli, # Stan program
data = sample_data, # named list of data
verbose = FALSE,
warmup = 500, # number of warmup iterations per chain
iter = 1000, # total number of iterations per chain
cores = 4, # number of cores (could use one per chain)
)
saveRDS(model_Bernoulli,
file = "Recursos/Día2/Sesion1/0Recursos/Bernoulli/model_Bernoulli.rds")
model_Bernoulli <- readRDS("Recursos/Día2/Sesion1/0Recursos/Bernoulli/model_Bernoulli.rds")La estimación del parámetro \(\theta\) es:
tabla_Ber1 <- summary(model_Bernoulli, pars = "theta")$summary
tabla_Ber1 %>% tba()| mean | se_mean | sd | 2.5% | 25% | 50% | 75% | 97.5% | n_eff | Rhat | |
|---|---|---|---|---|---|---|---|---|---|---|
| theta | 0.255 | 2e-04 | 0.0053 | 0.2445 | 0.2515 | 0.255 | 0.2584 | 0.2657 | 703.8891 | 1.0011 |
Para observar las cadenas compilamos las lineas de código
library(posterior)
library(ggplot2)
temp <- as_draws_df(as.array(model_Bernoulli,pars = "theta"))
p1 <- ggplot(data = temp, aes(x = theta))+
geom_density(color = "blue", size = 2) +
stat_function(fun = posterior1,
args = list(y = datay$y),
size = 2) +
theme_bw(base_size = 20) +
labs(x = latex2exp::TeX("\\theta"),
y = latex2exp::TeX("f(\\theta)"))
#ggsave(filename = "Recursos/Día2/Sesion1/0Recursos/Bernoulli/Bernoulli2.png",plot = p1)
p1
Figura 5.2: Resultado con STAN (línea azul) y posterior teórica (línea negra)
Para validar las cadenas
library(bayesplot)
library(patchwork)
posterior_theta <- as.array(model_Bernoulli, pars = "theta")
(mcmc_dens_chains(posterior_theta) +
mcmc_areas(posterior_theta) ) /
traceplot(model_Bernoulli, pars = "theta", inc_warmup = T)
Predicción de \(Y\) en cada una de las iteraciones de las cadenas.
y_pred_B <- as.array(model_Bernoulli, pars = "ypred") %>%
as_draws_matrix()
rowsrandom <- sample(nrow(y_pred_B), 100)
y_pred2 <- y_pred_B[rowsrandom, 1:n]
ppc_dens_overlay(y = datay$y, y_pred2)
5.3.2 Modelo de área: Binomial
Cuando se dispone de una muestra aleatoria de variables con distribución Bernoulli \(Y_1,\ldots,Y_n\), la inferencia Bayesiana se puede llevar a cabo usando la distribución Binomial, puesto que es bien sabido que la suma de variables aleatorias Bernoulli
\[ \begin{equation*} S=\sum_{i=1}^nY_i \end{equation*} \]
sigue una distribución Binomial. Es decir:
\[ \begin{equation} p(S \mid \theta)=\binom{n}{s}\theta^s(1-\theta)^{n-s}I_{\{0,1,\ldots,n\}}(s), \end{equation} \]
Nótese que la distribución Binomial es un caso general para la distribución Bernoulli, cuando \(n=1\). Por lo tanto es natural suponer que distribución previa del parámetro \(\theta\) estará dada por
\[ \begin{equation} p(\theta \mid \alpha,\beta)= \frac{1}{Beta(\alpha,\beta)}\theta^{\alpha-1}(1-\theta)^{\beta-1}I_{[0,1]}(\theta). \end{equation} \]
La distribución posterior del parámetro \(\theta\) sigue una distribución
\[ \begin{equation*} \theta \mid S \sim Beta(s+\alpha,\beta-s+n) \end{equation*} \]
Ahora, cuando se tiene una sucesión de variables aleatorias \(S_1,\ldots,S_d, \ldots,S_D\) independientes y con distribución \(Binomial(n_d,\theta_d)\) para \(d=1,\ldots,K\), entonces la distribución posterior del parámetro de interés \(\theta_d\) es
\[ \begin{equation*} \theta_d \mid s_d \sim Beta\left(s_d+\alpha,\ \beta+ n_d- s_d\right) \end{equation*} \]
Obejtivo
Estimar la proporción de personas que están por debajo de la linea pobreza en el \(d-ésimo\) dominio. Es decir,
\[ P_d = \frac{\sum_{U_d}y_{di}}{N_d} \] donde \(y_i\) toma el valor de 1 cuando el ingreso de la persona es menor a la linea de pobreza 0 en caso contrario.
El estimador de \(P\) esta dado por:
\[ \hat{P_d} = \frac{\sum_{s_d}w_{di}y_{di}}{\sum_{s_d}{w_{di} }} \]
con \(w_{di}\) el factor de expansión para la \(i-ésima\) observación en el \(d-ésimo\) dominio.
5.3.2.1 Práctica en STAN
Sea \(S_k\) el conteo de personas en condición de pobreza en el \(k-ésimo\) departamento en la muestra.
dataS <- encuesta %>%
transmute(
dam = dam_ee,
y = ifelse(ingcorte < lp, 1,0)
) %>% group_by(dam) %>%
summarise(nd = n(), #Número de ensayos
Sd = sum(y) #Número de éxito
)
tba(dataS)| dam | nd | Sd |
|---|---|---|
| 1 | 6796 | 1733 |
| 2 | 1556 | 397 |
| 3 | 2013 | 979 |
| 4 | 2912 | 1093 |
| 5 | 466 | 125 |
| 6 | 1649 | 295 |
| 7 | 821 | 365 |
| 8 | 1199 | 268 |
| 9 | 2012 | 235 |
| 10 | 1200 | 561 |
| 11 | 2678 | 432 |
| 12 | 2543 | 744 |
| 13 | 2534 | 416 |
| 14 | 780 | 195 |
| 15 | 773 | 96 |
| 16 | 466 | 203 |
| 17 | 1059 | 214 |
| 18 | 2907 | 381 |
| 19 | 460 | 9 |
| 20 | 669 | 162 |
| 21 | 3381 | 1012 |
| 22 | 2318 | 625 |
| 23 | 2260 | 368 |
| 24 | 909 | 138 |
| 25 | 9011 | 1840 |
| 26 | 401 | 55 |
| 27 | 963 | 171 |
| 28 | 923 | 157 |
| 29 | 1619 | 675 |
| 30 | 478 | 84 |
| 31 | 346 | 80 |
| 32 | 17969 | 4554 |
Creando código de STAN
data {
int<lower=0> K; // Número de provincia
int<lower=0> n[K]; // Número de ensayos
int<lower=0> s[K]; // Número de éxitos
real a;
real b;
}
parameters {
real<lower=0, upper=1> theta[K]; // theta_d|s_d
}
model {
for(kk in 1:K) {
s[kk] ~ binomial(n[kk], theta[kk]);
}
to_vector(theta) ~ beta(a, b);
}
generated quantities {
real spred[K]; // vector de longitud K
for(kk in 1:K){
spred[kk] = binomial_rng(n[kk],theta[kk]);
}
}Preparando el código de STAN
Binomial2 <- "Recursos/Día2/Sesion1/Data/modelosStan/3Binomial.stan"Organizando datos para STAN
sample_data <- list(K = nrow(dataS),
s = dataS$Sd,
n = dataS$nd,
a = 1,
b = 1)Para ejecutar STAN en R tenemos la librería rstan
options(mc.cores = parallel::detectCores())
model_Binomial2 <- stan(
file = Binomial2, # Stan program
data = sample_data, # named list of data
verbose = FALSE,
warmup = 500, # number of warmup iterations per chain
iter = 1000, # total number of iterations per chain
cores = 4, # number of cores (could use one per chain)
)
saveRDS(model_Binomial2, "Recursos/Día2/Sesion1/0Recursos/Binomial/model_Binomial2.rds")
model_Binomial2 <- readRDS("Recursos/Día2/Sesion1/0Recursos/Binomial/model_Binomial2.rds")La estimación del parámetro \(\theta\) es:
tabla_Bin1 <-summary(model_Binomial2, pars = "theta")$summary
tabla_Bin1 %>% tba()| mean | se_mean | sd | 2.5% | 25% | 50% | 75% | 97.5% | n_eff | Rhat | |
|---|---|---|---|---|---|---|---|---|---|---|
| theta[1] | 0.2550 | 1e-04 | 0.0054 | 0.2443 | 0.2514 | 0.2549 | 0.2586 | 0.2663 | 5541.426 | 0.9984 |
| theta[2] | 0.2557 | 2e-04 | 0.0111 | 0.2346 | 0.2480 | 0.2555 | 0.2633 | 0.2775 | 4685.553 | 0.9988 |
| theta[3] | 0.4863 | 2e-04 | 0.0112 | 0.4639 | 0.4790 | 0.4863 | 0.4937 | 0.5081 | 4275.709 | 0.9995 |
| theta[4] | 0.3754 | 1e-04 | 0.0090 | 0.3578 | 0.3692 | 0.3756 | 0.3815 | 0.3930 | 4356.266 | 0.9993 |
| theta[5] | 0.2688 | 3e-04 | 0.0210 | 0.2310 | 0.2543 | 0.2682 | 0.2831 | 0.3099 | 5505.855 | 0.9987 |
| theta[6] | 0.1792 | 1e-04 | 0.0095 | 0.1612 | 0.1729 | 0.1790 | 0.1858 | 0.1983 | 5539.281 | 0.9985 |
| theta[7] | 0.4447 | 3e-04 | 0.0172 | 0.4108 | 0.4336 | 0.4445 | 0.4562 | 0.4795 | 4289.643 | 0.9989 |
| theta[8] | 0.2240 | 2e-04 | 0.0115 | 0.2019 | 0.2161 | 0.2238 | 0.2315 | 0.2470 | 4261.208 | 0.9993 |
| theta[9] | 0.1172 | 1e-04 | 0.0077 | 0.1023 | 0.1121 | 0.1170 | 0.1222 | 0.1328 | 3835.345 | 0.9994 |
| theta[10] | 0.4673 | 2e-04 | 0.0142 | 0.4402 | 0.4577 | 0.4671 | 0.4769 | 0.4949 | 5121.700 | 0.9992 |
| theta[11] | 0.1617 | 1e-04 | 0.0071 | 0.1483 | 0.1568 | 0.1614 | 0.1667 | 0.1760 | 5501.146 | 0.9983 |
| theta[12] | 0.2930 | 1e-04 | 0.0089 | 0.2759 | 0.2870 | 0.2928 | 0.2988 | 0.3105 | 4834.824 | 0.9987 |
| theta[13] | 0.1644 | 1e-04 | 0.0073 | 0.1503 | 0.1595 | 0.1643 | 0.1691 | 0.1788 | 5452.961 | 0.9981 |
| theta[14] | 0.2505 | 2e-04 | 0.0148 | 0.2216 | 0.2404 | 0.2505 | 0.2598 | 0.2813 | 3949.950 | 0.9985 |
| theta[15] | 0.1253 | 2e-04 | 0.0120 | 0.1024 | 0.1170 | 0.1250 | 0.1334 | 0.1484 | 3561.371 | 0.9985 |
| theta[16] | 0.4359 | 3e-04 | 0.0228 | 0.3920 | 0.4206 | 0.4356 | 0.4507 | 0.4811 | 4413.229 | 0.9989 |
| theta[17] | 0.2030 | 2e-04 | 0.0122 | 0.1803 | 0.1949 | 0.2024 | 0.2106 | 0.2285 | 3553.277 | 0.9984 |
| theta[18] | 0.1313 | 1e-04 | 0.0061 | 0.1193 | 0.1272 | 0.1313 | 0.1355 | 0.1428 | 3265.019 | 0.9987 |
| theta[19] | 0.0217 | 1e-04 | 0.0068 | 0.0105 | 0.0168 | 0.0211 | 0.0258 | 0.0367 | 4589.526 | 0.9989 |
| theta[20] | 0.2427 | 3e-04 | 0.0163 | 0.2119 | 0.2310 | 0.2426 | 0.2539 | 0.2754 | 3692.533 | 0.9985 |
| theta[21] | 0.2995 | 1e-04 | 0.0081 | 0.2833 | 0.2941 | 0.2995 | 0.3047 | 0.3152 | 4654.262 | 0.9994 |
| theta[22] | 0.2701 | 1e-04 | 0.0091 | 0.2520 | 0.2642 | 0.2701 | 0.2759 | 0.2884 | 4987.638 | 0.9986 |
| theta[23] | 0.1630 | 1e-04 | 0.0080 | 0.1477 | 0.1573 | 0.1628 | 0.1684 | 0.1788 | 3848.725 | 0.9985 |
| theta[24] | 0.1524 | 2e-04 | 0.0114 | 0.1310 | 0.1442 | 0.1522 | 0.1603 | 0.1752 | 3602.961 | 0.9989 |
| theta[25] | 0.2042 | 1e-04 | 0.0041 | 0.1964 | 0.2014 | 0.2041 | 0.2070 | 0.2122 | 4184.041 | 0.9995 |
| theta[26] | 0.1388 | 3e-04 | 0.0177 | 0.1069 | 0.1265 | 0.1381 | 0.1505 | 0.1760 | 4957.831 | 0.9985 |
| theta[27] | 0.1783 | 2e-04 | 0.0118 | 0.1560 | 0.1700 | 0.1783 | 0.1863 | 0.2028 | 4550.942 | 0.9987 |
| theta[28] | 0.1706 | 2e-04 | 0.0125 | 0.1467 | 0.1618 | 0.1705 | 0.1796 | 0.1950 | 4629.408 | 0.9993 |
| theta[29] | 0.4171 | 2e-04 | 0.0126 | 0.3926 | 0.4084 | 0.4168 | 0.4257 | 0.4418 | 5023.648 | 0.9989 |
| theta[30] | 0.1772 | 3e-04 | 0.0176 | 0.1442 | 0.1651 | 0.1764 | 0.1884 | 0.2137 | 4571.020 | 0.9988 |
| theta[31] | 0.2328 | 4e-04 | 0.0227 | 0.1895 | 0.2177 | 0.2324 | 0.2477 | 0.2811 | 4051.155 | 0.9993 |
| theta[32] | 0.2535 | 1e-04 | 0.0032 | 0.2473 | 0.2514 | 0.2535 | 0.2557 | 0.2597 | 3530.149 | 0.9992 |
Para validar las cadenas
(s1 <- mcmc_areas(as.array(model_Binomial2, pars = "theta")))
# ggsave(filename = "Recursos/Día2/Sesion1/0Recursos/Binomial/Binomial1.png",plot = s1)
(s2 <- mcmc_trace(as.array(model_Binomial2, pars = "theta")))
# ggsave(filename = "Recursos/Día2/Sesion1/0Recursos/Binomial/Binomial2.png",
# plot = s2,width = 20, height = 20, units = "cm")
y_pred_B <- as.array(model_Binomial2, pars = "spred") %>%
as_draws_matrix()
rowsrandom <- sample(nrow(y_pred_B), 200)
y_pred2 <- y_pred_B[rowsrandom, ]
g1 <- ggplot(data = dataS, aes(x = Sd))+
geom_histogram(aes(y = ..density..)) +
geom_density(size = 2, color = "blue") +
labs(y = "")+
theme_bw(10) +
yaxis_title(FALSE) + xaxis_title(FALSE) + yaxis_text(FALSE) +
yaxis_ticks(FALSE)
g2 <- ppc_dens_overlay(y = dataS$Sd, y_pred2)
g1/g2
5.3.3 Modelo de unidad: Normal con media desconocida
Suponga que \(Y_1,\cdots,Y_n\) son variables independientes e idénticamente distribuidos con distribución \(Normal(\theta,\sigma^2)\) con \(\theta\) desconocido pero \(\sigma^2\) conocido. De esta forma, la función de verosimilitud de los datos está dada por
\[ \begin{align*} p(\mathbf{Y} \mid \theta) &=\prod_{i=1}^n\frac{1}{\sqrt{2\pi\sigma^2}}\exp\left\{-\frac{1}{2\sigma^2}(y_i-\theta)^2\right\}I_\mathbb{R}(y) \\ &=(2\pi\sigma^2)^{-n/2}\exp\left\{-\frac{1}{2\sigma^2}\sum_{i=1}^n(y_i-\theta)^2\right\} \end{align*} \]
Como el parámetro \(\theta\) puede tomar cualquier valor en los reales, es posible asignarle una distribución previa \(\theta \sim Normal(\mu,\tau^2)\). Bajo este marco de referencia se tienen los siguientes resultados
La distribución posterior del parámetro de interés \(\theta\) sigue una distribución
\[ \begin{equation*} \theta|\mathbf{Y} \sim Normal(\mu_n,\tau^2_n) \end{equation*} \]
En donde
\[ \begin{equation} \mu_n=\frac{\frac{n}{\sigma^2}\bar{Y}+\frac{1}{\tau^2}\mu}{\frac{n}{\sigma^2}+\frac{1}{\tau^2}} \ \ \ \ \ \ \ \text{y} \ \ \ \ \ \ \ \tau_n^2=\left(\frac{n}{\sigma^2}+\frac{1}{\tau^2}\right)^{-1} \end{equation} \]
Obejtivo
Estimar el ingreso medio de la población, es decir,
\[ \bar{Y} = \frac{\sum_Uy_i}{N} \] donde, \(y_i\) es el ingreso de las personas. El estimador de \(\bar{Y}\) esta dado por \[ \hat{\bar{Y}} = \frac{\sum_{s}w_{i}y_{i}}{\sum_s{w_i}} \] y obtener \(\widehat{Var}\left(\hat{\bar{Y}}\right)\).
5.3.3.1 Práctica en STAN
Sea \(Y\) el logaritmo del ingreso
dataNormal <- encuesta %>%
transmute(
dam_ee ,
logIngreso = log(ingcorte +1)) %>%
filter(dam_ee == 1)
#3
media <- mean(dataNormal$logIngreso)
Sd <- sd(dataNormal$logIngreso)
g1 <- ggplot(dataNormal,aes(x = logIngreso))+
geom_density(size = 2, color = "blue") +
stat_function(fun =dnorm,
args = list(mean = media, sd = Sd),
size =2) +
theme_bw(base_size = 20) +
labs(y = "", x = ("Log(Ingreso)"))
g2 <- ggplot(dataNormal, aes(sample = logIngreso)) +
stat_qq() + stat_qq_line() +
theme_bw(base_size = 20)
g1|g2
Creando código de STAN
data {
int<lower=0> n; // Número de observaciones
real y[n]; // LogIngreso
real <lower=0> Sigma; // Desviación estándar
}
parameters {
real theta;
}
model {
y ~ normal(theta, Sigma);
theta ~ normal(0, 1000); // Distribución previa
}
generated quantities {
real ypred[n]; // Vector de longitud n
for(kk in 1:n){
ypred[kk] = normal_rng(theta,Sigma);
}
}Preparando el código de STAN
NormalMedia <- "Recursos/Día2/Sesion1/Data/modelosStan/4NormalMedia.stan" Organizando datos para STAN
sample_data <- list(n = nrow(dataNormal),
Sigma = sd(dataNormal$logIngreso),
y = dataNormal$logIngreso)Para ejecutar STAN en R tenemos la librería rstan
options(mc.cores = parallel::detectCores())
model_NormalMedia <- stan(
file = NormalMedia,
data = sample_data,
verbose = FALSE,
warmup = 500,
iter = 1000,
cores = 4
)
saveRDS(model_NormalMedia, "Recursos/Día2/Sesion1/0Recursos/Normal/model_NormalMedia.rds")
model_NormalMedia <-
readRDS("Recursos/Día2/Sesion1/0Recursos/Normal/model_NormalMedia.rds")La estimación del parámetro \(\theta\) es:
tabla_Nor1 <- summary(model_NormalMedia, pars = "theta")$summary
tabla_Nor1 %>% tba() | mean | se_mean | sd | 2.5% | 25% | 50% | 75% | 97.5% | n_eff | Rhat | |
|---|---|---|---|---|---|---|---|---|---|---|
| theta | 9.0982 | 4e-04 | 0.0095 | 9.0786 | 9.0917 | 9.0985 | 9.1046 | 9.1167 | 654.8346 | 1.0008 |
posterior_theta <- as.array(model_NormalMedia, pars = "theta")
(mcmc_dens_chains(posterior_theta) +
mcmc_areas(posterior_theta) ) /
mcmc_trace(posterior_theta)
y_pred_B <- as.array(model_NormalMedia, pars = "ypred") %>%
as_draws_matrix()
rowsrandom <- sample(nrow(y_pred_B), 100)
y_pred2 <- y_pred_B[rowsrandom, ]
ppc_dens_overlay(y = as.numeric(dataNormal$logIngreso), y_pred2)/
ppc_dens_overlay(y = exp(as.numeric(dataNormal$logIngreso))-1, exp(y_pred2)-1) + xlim(0,240000)