Ir al contenido principal

Introducción a los métodos de Monte Carlo

En este tutorial aprenderás la metodología Monte Carlo y sus aplicaciones en ciencia de datos, como la aproximación de integrales y la estimación de parámetros.
Actualizado 17 sept 2026  · 6 min leer

Explorar con IA

ChatGPTClaudePerplexity

Introducción

\n

En los procedimientos de análisis de datos aparecen dos grandes clases de problemas numéricos: optimización e integración. No siempre es posible calcular de forma analítica los estimadores asociados a un modelo dado, así que a menudo recurrimos a soluciones numéricas. Una forma de evitar ese problema es usar simulación. La estimación Monte Carlo consiste en simular extracciones hipotéticas de una distribución de probabilidad para calcular cantidades relevantes de dicha distribución.

\n

La idea básica de Monte Carlo consiste en expresar la integral como un valor esperado respecto a alguna distribución de probabilidad y aproximarla usando el estimador por el método de los momentos ($E[g(X)] \\approx \\overline{g(X)} = \\dfrac{1}{n}\\sum g(X_{i})$).

\n

Si tenemos una función continua $g(\\theta)$ y queremos integrarla en el intervalo (a,b), podemos reescribir la integral como un valor esperado de una distribución uniforme $U \\sim U[a,b]$:

\n
\"function\"
\n

Usando el estimador por momentos, la aproximación de la integral es:

\n
\"function\"
\n

Donde los

\n
\"values\"
\n

son valores simulados de una distribución uniforme.

\n

Ejemplo 1: aproximación de una integral exponencial

\n

1) Dada una función $f(x)= e^{x}$, la integral en el intervalo [3,5] es:

\n
\"function\"
\n

La aproximación Monte Carlo de la integral es:

\n
#       Declaración de la función deseada\nf = function(x){return(exp(x))}\n#       Declaración de la función de error absoluto\nerror = function(x,y){return(abs(x-y))}\n#       Valor real de la integral\nans = exp(5)-exp(3)\n\nset.seed(6971)\n#       número de iteraciones\nn = 10^2\n#       datos uniformes simulados\nx= runif(n,3,5)\n#       Aproximación Monte Carlo\nMCa= (5-3)*mean(f(x))\n#       Error de la aproximación\ne = error(ans,MCa)\n\nrest =  data.frame(n = n,MCapprox = MCa,error = e)\nset.seed(6971)\nfor(k in 3:6){\n  n = 10^k\n  x = runif(n,3,5)\n  mca = (5-3)*mean(f(x))\n  rest = rbind(rest,c(n,mca,error(ans,mca) ) )\n}\n\nkable(rest,digits = 5,align = 'c',caption = \"Resultados de la aproximación Monte Carlo de la integral\",\n      col.names =c(\"Número de simulaciones\",\"Aproximación Monte Carlo\",\"Error de la aproximación\"))
\n

Aproximación Monte Carlo generalizada

\n

En el caso general, la aproximación de la integral para una distribución f dada es:

\n
\"function\"
\n

Un algoritmo para construir $\\widehat{I}$ puede describirse con los siguientes pasos:

\n

1) Genera \"values\" de una distribución f

\n

2) Calcula: \"function\"

\n

3) Obtén la media muestral: $$\\overline{I} = \\dfrac{1}{n}\\sum_{k=1}^{n}\\dfrac{g(\\theta_k)}{f(\\theta_k)}$$

\n

En el siguiente bloque se presenta la función simple de aproximación Monte Carlo para mostrar cómo funciona el algoritmo, donde a y b son los parámetros de la densidad uniforme, n es el número de simulaciones deseadas y f es la función que queremos integrar.

\n
# Función simple de Monte Carlo\nMCaf = function(n,a,b,f){\nx = runif(n,a,b)\nMCa = (b-a)*mean(f(x))\nreturn(MCa)\n}
\n

Métodos de Monte Carlo en el análisis de datos bayesiano

\n

La idea principal del análisis bayesiano de datos es ajustar un modelo (como una regresión o un modelo de series temporales) usando un enfoque de inferencia bayesiana. Suponemos que nuestros parámetros de interés tienen una distribución teórica; esta distribución (posterior) se actualiza usando la distribución de los datos observados (verosimilitud) y la información previa o externa sobre nuestros parámetros (distribución previa) mediante el teorema de Bayes.

\n

$$p(\\theta / X) \\text{ } \\alpha\\text{ } p(X/\\theta)p(\\theta)$$ Donde:

\n

$p(\\theta/X)$ es la distribución posterior del parámetro.

\n

$p(X/\\theta)$ es la distribución muestral de los datos observados (verosimilitud).

\n

$p(\\theta)$ es la distribución previa del parámetro.

\n

El principal problema en el enfoque bayesiano es estimar la distribución posterior. Los métodos de Monte Carlo por cadenas de Markov (mcmc) generan una muestra de la posterior y aproximan valores esperados, probabilidades o cuantiles usando métodos de Monte Carlo.

\n

En las dos secciones siguientes, mostramos dos ejemplos para aproximar probabilidades y cuantiles de una distribución teórica. El procedimiento presentado arriba es la metodología habitual en un enfoque bayesiano.

\n

Ejemplo 2: aproximación de probabilidades de una distribución gamma

\n

Supongamos que queremos calcular la probabilidad de que una variable aleatoria $\\theta$ esté entre cero y 5, $P(0 < \\theta < 5)$, donde $\\theta$ tiene distribución gamma con parámetros a = 2 y b = 1/3 ($\\theta \\sim Gamma(a = 2,b = 1/3)$). Entonces, la probabilidad es:

\n
\"function\"
\n

Donde $I_{[0,5]}(\\theta) = 1$ si $\\theta$ pertenece al intervalo [0,5]. La idea de la aproximación Monte Carlo es contar cuántas observaciones pertenecen al intervalo [0,5] y dividirlo entre el total de datos simulados.

\n
set.seed(6972)\n#       número de iteraciones\nn = 10^2\n#       datos simulados de gamma\nx= rgamma(n,shape = 2,1/3)\n#       Aproximación Monte Carlo\nMCa= mean(x <= 5)\n#       Error de la aproximación\ne = error(pgamma(5,2,1/3),MCa)\n\nrest =  data.frame(n = n,MCapprox = MCa,error = e)\n\nfor(k in 3:6){\n  n = 10^k\n  x= rgamma(n,shape = 2,1/3)\n  mca= mean(x <= 5)\n rest = rbind(rest,c(n,mca,error(pgamma(5,2,1/3),mca) ) )\n}\n\nkable(rest,digits = 5,align = 'c',caption = \"Resultados de la aproximación Monte Carlo de la probabilidad\",\n      col.names =c(\"Número de simulaciones\",\"Aproximación Monte Carlo\",\"Error de la aproximación\"))
\n

Ejemplo 3: aproximación de un cuantil de una distribución normal

\n

Supongamos que queremos calcular el cuantil 0,95 de una variable aleatoria $\\theta$ con distribución normal con parámetros $\\mu = 20$ y $\\sigma = 3$ ($\\theta \\sim normal(\\mu = 20,\\sigma^{2} = 9)$). Entonces, el cuantil 0,95 es:

\n
\"function\"
\n

La idea es encontrar el mayor valor muestral cuya probabilidad sea igual o menor que 0,95. La aproximación Monte Carlo del cuantil se estima con la función quantile() aplicada a los datos simulados.

\n
set.seed(6973)\n#       número de iteraciones\nn = 10^2\n#       datos simulados normales\n  x= rnorm(n,20,3)\n#       Aproximación Monte Carlo\nMCa= quantile(x,0.95)\n#       Error de la aproximación\ne = error(qnorm(0.95,20,3),MCa)\n\nrest =  data.frame(n = n,MCapprox = MCa,error = e)\n\nfor(k in 3:6){\n  n = 10^k\n  x= rnorm(n,20,3)\n  mca= quantile(x,0.95)\n rest = rbind(rest,c(n,mca,error(qnorm(0.95,20,3),mca) ) )\n}\n\nkable(rest,digits = 5,align = 'c',caption = \"Resultados de la aproximación Monte Carlo del cuantil\",\n      col.names =c(\"Número de simulaciones\",\"Aproximación Monte Carlo\",\"Error de la aproximación\"),row.names = FALSE)
\n

Debate y conclusiones

\n

Los métodos de aproximación de Monte Carlo ofrecen una herramienta alternativa para aproximar integrales y son fundamentales en el enfoque de inferencia bayesiana, especialmente cuando trabajamos con modelos sofisticados y complejos. Como se aprecia en los tres ejemplos, los métodos de Monte Carlo proporcionan una excelente aproximación, pero requieren un número muy elevado de simulaciones para lograr un error cercano a cero.

\n

Referencias

\n

1) Introducing Monte Carlo methods with R, Springer 2004, Christian P. Robert and George Casella.

\n

2) Handbook of Markov Chain Monte Carlo, Chapman and Hall, Steve Brooks, Andrew Gelman, Galin L. Jones, and Xiao-Li Meng.

\n

3) Introduction to mathematical Statistics, Pearson, Robert V. Hogg, Joseph W. Mckean, and Allen T. Craig.

\n

4) Statistical Inference An Integrated Approach, Chapman and Hall, Helio S. Migon, Dani Gamerman, Francisco Louzada.

Temas
R
Ciencia de datos
Relacionado

blog

Clasificación en machine learning: Introducción

Aprende sobre la clasificación en machine learning viendo qué es, cómo se utiliza y algunos ejemplos de algoritmos de clasificación.
Zoumana Keita 's photo

Zoumana Keita

14 min

Tutorial

Simulación de Monte Carlo en Excel: Una guía completa

Un tutorial completo y fácil de seguir para principiantes sobre cómo realizar simulaciones de Monte Carlo en Microsoft Excel, con ejemplos, prácticas recomendadas y técnicas avanzadas.
Arunn Thevapalan's photo

Arunn Thevapalan

9 min

Tutorial

Prueba Chi-cuadrado en hojas de cálculo

En este tutorial, aprenderás a realizar la prueba chi-cuadrado en hojas de cálculo.
Avinash Navlani's photo

Avinash Navlani

10 min

Clustering k-means

Tutorial

Introducción a k-Means Clustering con scikit-learn en Python

En este tutorial, aprenda a aplicar k-Means Clustering con scikit-learn en Python

Kevin Babitz

8 min

Tutorial

Tutorial de regresión lineal en R

En este tutorial aprenderás los fundamentos de un modelo estadístico muy popular: la regresión lineal.

Eladio Montero Porras

15 min

Tutorial

Tutorial de pruebas T en R: Aprende a realizar pruebas T

Determina si existe una diferencia significativa entre las medias de los dos grupos utilizando t.test() en R.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Ver MásVer Más