Los métodos de Monte Carlo son algoritmos que emplean muestreo aleatorio para obtener aproximaciones numéricas a problemas complejos.
El principio fundamental es aprovechar la aleatoriedad para abordar problemas tanto estocásticos (generación de muestras de una distribución de probabilidad), como determinísticos (optimización e integración numérica).
El término “Monte Carlo” fue acuñado por Stanislaw Ulam y Nicholas Metropolis en referencia al famoso casino de Monte Carlo en Mónaco, debido a la asociación con la aleatoriedad característica de los juegos de azar.
Cualquier distribución de probabilidad, y por extensión cualquier propiedad asociada a ella, puede ser aproximada con precisión arbitraria mediante un número suficientemente grande de muestras aleatorias, ajustado según el nivel de exactitud requerido.
Sea \(\theta\) un parámetro de interés y \(\boldsymbol{y} = (y_1, \dots, y_n)\) un conjunto de observaciones.
Suponga que se puede obtener una muestra aleatoria de tamaño \(B\) a partir de la distribución posterior de \(\theta\): \[ \theta^{(1)}, \dots, \theta^{(B)} \overset{\text{iid}}{\sim} p(\theta \mid \boldsymbol{y})\,. \]
La distribución empírica de los valores muestrales \(\theta^{(1)}, \dots, \theta^{(B)}\) proporciona una aproximación a la distribución posterior de \(\theta\), cuya precisión mejora a medida que aumenta el valor de \(B\).
(Ley débil de los grandes números.) Sea \(X_1,\ldots,X_n\) una secuencia de variables aleatorias independientes e idénticamente distribuidas con media \(\mu\) y varianza finita \(\sigma^2\). Entonces, el promedio muestral \(\bar{X}_n = \frac{1}{n}\sum_{i=1}^n X_i\) converge en probabilidad a \(\mu\) cuando \(n\rightarrow\infty\), i.e., para todo \(\epsilon > 0\) se tiene que \[ \lim\limits_{n\to\infty}\textsf{Pr}(|\bar{X}_n - \mu| < \epsilon) = 1\,. \]
La ley débil de los grandes números garantiza que: \[ \frac{1}{B}\sum_{b=1}^{B} g(\theta^{(b)})\longrightarrow \textsf{E}(g(\theta)\mid \boldsymbol{y}) = \int_\Theta g(\theta)\,p(\theta\mid \boldsymbol{y})\,\text{d}\theta\,, \] cuando \(B\rightarrow\infty\), con \(g(\theta)\) una función arbitraria de \(\theta\).
Aproximación de la distribución Gamma con parámetros \(\alpha=3\) y \(\beta=2\).
# Parámetros de la distribución Gamma
a <- 3
b <- 2
# Tamaños de muestra
m <- c(10, 30, 1000)
# Simulación
set.seed(123)
for (j in seq_along(m)) {
assign(paste0("theta_mc_", j), rgamma(m[j], shape = a, rate = b))
}
A partir de la muestra \(\theta^{(1)},\ldots,\theta^{(1000)}\stackrel{\text{iid}}{\sim} \textsf{Gamma}(3,2)\) se obtiene que:
Media | Varianza | P(θ < 1) | Q50% | |
---|---|---|---|---|
Exacto | 1.500 | 0.750 | 0.323 | 1.337 |
Monte Carlo | 1.458 | 0.647 | 0.317 | 1.355 |
Sea \(\theta^{(1)},\dots,\theta^{(B)}\) una muestra aleatoria de la distribución posterior \(\theta\mid\boldsymbol{y}\). Se define la media muestral y la desviación estándar muestral como \[ \bar{\theta} = \frac{1}{B} \sum_{b=1}^{B} \theta^{(b)}, \qquad s_\theta = \sqrt{\frac{1}{B-1} \sum_{b=1}^{B} (\theta^{(b)} - \bar{\theta})^2}. \]
El error estándar de Monte Carlo de \(\bar{\theta}\) es una aproximación de la
desviación estándar de \(\bar{\theta}\)
y se calcula como
\[
\frac{s_\theta}{\sqrt{B}}.
\]
El coeficiente de variación de Monte Carlo, que mide
la variabilidad relativa de la estimación, se define como
\[
\frac{s_\theta / \sqrt{B}}{|\bar{\theta}|}.
\]
Por el Teorema del Límite Central, el margen de error de
Monte Carlo al \(95\%\) de
confianza para \(\textsf{E}(\theta\mid\boldsymbol{y})\)
es
\[
1.96\, \frac{s_\theta}{\sqrt{B}}.
\]
Para determinar qué tan grande debe ser el número de muestras de Monte Carlo, se elige \(B\) lo suficientemente grande para que el error estándar de Monte Carlo sea menor que un margen de error especificado, asegurando una estimación precisa de \(\textsf{E}(\theta\mid\boldsymbol{y})\).
Los métodos de Monte Carlo facilitan la inferencia posterior sobre cualquier función arbitraria de \(\theta\), denotada como \(\gamma = g(\theta)\). El procedimiento consiste en:
La secuencia \(\gamma^{(1)},\dots,\gamma^{(B)}\) forma una muestra aleatoria de la distribución posterior \(p(\gamma\mid \boldsymbol{y})\), permitiendo realizar inferencia sobre \(\gamma\) de la misma manera que sobre \(\theta\).
Los métodos de Monte Carlo permiten analizar la distribución predictiva posterior \(p(y^*\mid\boldsymbol{y})\), lo que facilita la evaluación de la bondad de ajuste interna del modelo mediante estadísticos de prueba calculados a partir de esta distribución.
El procedimiento es el siguiente:
1. Simular \(\theta^{(1)},\dots,\theta^{(B)}
\overset{\text{iid}}{\sim} p(\theta\mid \boldsymbol{y})\).
2. Para cada \(b = 1,\dots,B\), generar
datos predictivos
\[
(y^*_1)^{(b)},\dots,(y^*_n)^{(b)} \overset{\text{iid}}{\sim}
p(y\mid\theta^{(b)}).
\]
3. Calcular el estadístico de prueba \(t^{(b)}
= t((y^*_1)^{(b)},\dots,(y^*_n)^{(b)})\), donde \(t(\cdot)\) mide la característica de
interés en los datos simulados.
4. Comparar la distribución de \(t^{(1)},\dots,t^{(B)}\) con el
valor observado \(t_0 =
t(y_1,\dots,y_n)\).
Si \(t_0\) es un valor típico dentro de la distribución de \(t^{(1)},\dots,t^{(B)}\), se concluye que el modelo captura adecuadamente la característica de interés reflejada en el estadístico de prueba.
Un modelo adecuado debe generar datos predictivos que reflejen las características clave del conjunto observado. Si no es así, puede requerirse un modelo más complejo.
El valor \(p\) predictivo posterior es una medida utilizada para evaluar la bondad de ajuste interna de un modelo estadístico.
Se basa en la comparación entre un estadístico de prueba calculado a partir de los datos observados y su distribución bajo la distribución predictiva posterior del modelo.
Formalmente, se define como: \[ p_{\text{post}} = \textsf{Pr}(t(\boldsymbol{y}^*) \leq t(\boldsymbol{y}) \mid \boldsymbol{y}), \] donde la probabilidad se toma respecto a la distribución predictiva posterior de los datos replicados \(\boldsymbol{y}^*\).
Censo Nacional de Población y Vivienda - CNPV - 2018 está disponible en este enlace.
Diccionario de datos (ddi-documentation-spanish-643.pdf
)
está disponible en este enlace.
La base de datos contiene la información de una muestra aleatoria simple de personas que residen en hogares particulares o personas que residen en lugares especiales de alojamiento con las características correspondientes al censo.
Modelar el número de hijos de personas con las siguientes características: mujer, jefa de hogar, entre 40 y 44 años, alfabetizada, nacida en Colombia, residente en Colombia hace cinco años, sin pertenencia a ningún grupo étnico y que reporta si tiene hijos o no.
¿Existen diferencias significativas en el número de hijos entre dos mujeres seleccionadas al azar, de entre 40 y 44 años, una con educación superior y otra sin educación superior?
Se consideran personas identificadas como: mujer, jefe de hogar, 40 a 44 años, alfabeta, lugar de nacimiento en Colombia, lugar de residencia hace 5 años en Colombia, ningún grupo étnico, informa si tiene hijos o no.
## [1] 71814 48
# Recodificación del nivel educativo
# 0: Sin educación superior (preescolar a técnico)
# 1: Con educación superior (universitario o posgrado)
df$P_NIVEL_ANOSR <- as.numeric(ifelse(df$P_NIVEL_ANOSR %in% c(8, 9), 1, 0))
# Frecuencias: indicadora de educación superior
# PA1_THNV: Hijos(as) nacidos vivos
table(df$P_NIVEL_ANOSR)
##
## 0 1
## 55569 16245
# Recodificación: sin hijos (NA → 0)
df$PA1_THNV <- as.numeric(replace(df$PA1_THNV, is.na(df$PA1_THNV), 0))
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12
## 51390 6091 7009 3984 1719 709 363 200 128 82 45 18 24
## 13 14 15 18 99
## 16 5 8 1 22
# Remover datos faltantes codificados como 99
df <- subset(df, P_NIVEL_ANOSR != 99 & PA1_THNV != 99)
# Definir filtro de selección
filtro <- with(df,
(P_PARENTESCOR == 1) &
(P_SEXO == 2) &
(P_EDADR == 9) &
(PA1_GRP_ETNIC == 6) &
(PA_LUG_NAC %in% c(2,3)) &
(PA_VIVIA_5ANOS %in% c(2,3)) &
(PA_HNV %in% c(1,2)) &
(P_ALFABETA == 1)
)
# Filtrar datos y extraer número de hijos según nivel educativo
y1 <- as.numeric(df[filtro & (df$P_NIVEL_ANOSR == 0), "PA1_THNV"]) # Sin educación superior
y2 <- as.numeric(df[filtro & (df$P_NIVEL_ANOSR == 1), "PA1_THNV"]) # Con educación superior
## [1] 360
## [1] 110
## [1] 762
## [1] 127
## [1] 2
## [1] 0.707
## [1] 764
## [1] 361
## [1] 129
## [1] 111
# Número de muestras
B <- 10000
# Muestras de la distribución posterior de theta
set.seed(123)
th1_mc <- rgamma(B, shape = ap1, rate = bp1)
th2_mc <- rgamma(B, shape = ap2, rate = bp2)
# Muestras de la distribución predictiva posterior
set.seed(123)
y1_mc <- rpois(B, lambda = th1_mc)
y2_mc <- rpois(B, lambda = th2_mc)
# Probabilidades de la distribución predictiva para mujeres sin pregrado
prob_exacta_sin_pregrado <- dnbinom(0:6, size = a + s1, mu = (a + s1) / (b + n1))
prob_aprox_sin_pregrado <- prop.table(table(factor(y1_mc, levels = 0:6)))
tab_sin_pregrado <- rbind(prob_exacta_sin_pregrado, prob_aprox_sin_pregrado)
colnames(tab_sin_pregrado) <- 0:6
rownames(tab_sin_pregrado) <- c("Exacta", "Aproximada")
knitr::kable(
t(tab_sin_pregrado), digits = 3, align = "c",
caption = "Distribución predictiva para mujeres sin pregrado."
)
Exacta | Aproximada | |
---|---|---|
0 | 0.121 | 0.119 |
1 | 0.255 | 0.256 |
2 | 0.269 | 0.278 |
3 | 0.190 | 0.193 |
4 | 0.101 | 0.099 |
5 | 0.043 | 0.041 |
6 | 0.015 | 0.014 |
# Probabilidades de la distribución predictiva para mujeres con pregrado
prob_exacta_con_pregrado <- dnbinom(0:6, size = a + s2, mu = (a + s2) / (b + n2))
prob_aprox_con_pregrado <- prop.table(table(factor(y2_mc, levels = 0:6)))
tab_con_pregrado <- rbind(prob_exacta_con_pregrado, prob_aprox_con_pregrado)
colnames(tab_con_pregrado) <- 0:6
rownames(tab_con_pregrado) <- c("Exacta", "Aproximada")
knitr::kable(
t(tab_con_pregrado), digits = 3, align = "c",
caption = "Distribución predictiva para mujeres con pregrado."
)
Exacta | Aproximada | |
---|---|---|
0 | 0.314 | 0.316 |
1 | 0.362 | 0.365 |
2 | 0.210 | 0.212 |
3 | 0.082 | 0.076 |
4 | 0.024 | 0.026 |
5 | 0.006 | 0.005 |
6 | 0.001 | 0.001 |
# Intervalo de credibilidad al 95% para y*_1 - y*_2
round(quantile(y1_mc - y2_mc, probs = c(0.025, 0.975)), 3)
## 2.5% 97.5%
## -2 5
## [1] 0.593
La diferencia entre hacer inferencia sobre \(\theta_1 - \theta_2\) y \(y_1^* - y_2^*\) radica en el nivel de incertidumbre considerado y en la cantidad de información utilizada en cada caso:
La inferencia sobre \(\theta_1 - \theta_2\) se basa en la distribución posterior de los parámetros, reflejando únicamente la incertidumbre en su estimación a partir de los datos observados y la estructura del modelo.
La inferencia sobre \(y_1^* - y_2^*\) incorpora tanto la incertidumbre en \(\theta_1\) y \(\theta_2\) como la variabilidad inherente a los datos generados a partir de estas distribuciones, proporcionando una caracterización sobre posibles diferencias en observaciones futuras.
## [1] 2.117 1.266
## [1] 1.155 0.979
# Número de muestras
B <- 10000
# Muestras de la distribución posterior de theta
set.seed(123)
th1_mc <- rgamma(B, shape = ap1, rate = bp1)
th2_mc <- rgamma(B, shape = ap2, rate = bp2)
# Inicializar matrices para almacenar estadísticas de prueba
t_mc_1 <- matrix(NA, nrow = B, ncol = 2)
t_mc_2 <- matrix(NA, nrow = B, ncol = 2)
# Distribución predictiva posterior
set.seed(123)
for (i in 1:B) {
# Datos simulados
y1_rep <- rpois(n = n1, lambda = th1_mc[i])
y2_rep <- rpois(n = n2, lambda = th2_mc[i])
# Estadísticos de prueba
t_mc_1[i, ] <- c(mean(y1_rep), sd(y1_rep))
t_mc_2[i, ] <- c(mean(y2_rep), sd(y2_rep))
}
Suponga que, en un problema de respuesta binaria, se desea utilizar una distribución previa uniforme para la proporción de la población \(\theta\), con el objetivo de no favorecer ningún valor particular de \(\theta\) a priori. Sin embargo, algunos investigadores prefieren analizar las proporciones en la escala logit, es decir, consideran el parámetro transformado \(\gamma = \log \frac{\theta}{1-\theta}\). Mediante simulación de Monte Carlo, determine la distribución previa de \(\gamma\) inducida por la distribución uniforme de \(\theta\). ¿La distribución resultante es uniforme en \(\gamma\)?
Un laboratorio de investigación en cáncer estudia la tasa de tumorogénesis en dos cepas de ratones, A y B. Se han registrado los recuentos de tumores en 10 ratones de la cepa A y 13 de la cepa B. Los ratones de tipo A han sido ampliamente investigados, y estudios previos indican que sus recuentos de tumores siguen aproximadamente una distribución de Poisson con media 12. En contraste, la tasa de tumorogénesis en los ratones de tipo B es desconocida, aunque esta cepa está relacionada con la cepa A. Los recuentos de tumores observados en cada grupo son: \[ \boldsymbol{y}_A = (12, 9, 12, 14, 13, 13, 15, 8, 15, 6),\quad \boldsymbol{y}_B = (11, 11, 10, 9, 9, 8, 7, 10, 6, 8, 8, 9, 7). \]
Suponga que \(y_1,\dots,y_5\)
son observaciones condicionalmente independientes de una distribución
Cauchy con parámetro de localización \(\theta\) y parámetro de escala 1, es
decir,
\[
p(y_i\mid\theta) = \frac{1}{\pi(1+(y_i-\theta)^2)}, \qquad
-\infty<y_i<\infty, \qquad -\infty<\theta<\infty,
\]
para \(i=1,\dots,5\). Además, suponga
que la distribución previa de \(\theta\) es Uniforme en el intervalo \((0,100)\), es decir, \(\theta\sim\textsf{U}(0,100)\). Dado el
vector de observaciones \(\boldsymbol{y}=(43.0, 44.0, 45.0, 46.5,
47.5)\), realice lo siguiente:
Hoff, P. D. (2009). A First Course in Bayesian Statistical Methods. Springer New York.
Gelman, A., Carlin, J. B., Stern, H. S., Dunson, D. B., Vehtari, A., & Rubin, D. B. (2013). Bayesian Data Analysis (3rd ed.). Chapman & Hall/CRC.