Lo que llamamos muestreo en realidad se refiere al método de generar observaciones (observaciones) a partir de una distribución de probabilidad. Y esta distribución suele estar representada por su función de densidad de probabilidad (PDF). Además, incluso cuando se conoce el PDF, no es una tarea fácil dejar que la computadora genere observaciones automáticamente. Esencialmente, la computadora solo puede realizar el muestreo de la distribución uniforme. Entonces, ¿cómo lograr una buena muestra de datos de muestra para la computadora? Hoy echaremos un vistazo al método de implementación.
Podemos enfrentar estos problemas en cuestiones de muestreo:
- Las computadoras solo pueden muestrear distribuciones uniformes, pero aún podemos muestrear distribuciones más complejas sobre esta base.
- Es posible que algunas características numéricas de la distribución aleatoria deban resolverse en forma de integrales, pero algunas integrales pueden no tener (o son difíciles de obtener) soluciones analíticas. ¿Qué debemos hacer entonces?
- En la inferencia bayesiana, la distribución de la probabilidad posterior es más que el producto de la función anterior y de probabilidad, pero el producto de la función anterior y de probabilidad puede ser relativamente complicado. ¿Cómo debemos tratar esta distribución compleja? ?
Se derivan una serie de soluciones a estos problemas.
1. Muestreo de aceptación-rechazo
En matemáticas, el muestreo por rechazo es la técnica básica utilizada para generar observaciones a partir de una distribución. También conocido como método de aceptación-rechazo o "algoritmo de aceptación-rechazo", es un método de Monte Carlo, que también está relacionado con el algoritmo de Metropolis-Hastings.
1. Comprensión simple
La siguiente figura es la curva de función de densidad de una variable aleatoria ¿Cómo obtengo una muestra de esta variable aleatoria?
Use la forma de esta curva para dibujar muestras, envuelva la curva de densidad con un rectángulo y encuadre la curva de densidad en un rectángulo, de la siguiente manera:
Luego, eche puntos al azar en este rectángulo. Puntos emitidos aleatoriamente significa que estos puntos están distribuidos uniformemente en el área rectangular. Se emitieron alrededor de 10,000 puntos, como se muestra a continuación:
Obviamente, algunos puntos caen en el lado inferior de la curva de densidad y algunos puntos caen en el lado superior de la curva de densidad. Los puntos del lado superior se representan en verde y los puntos del lado inferior se representan en azul, como se muestra en la siguiente figura:
Solo se mantienen los puntos del lado inferior de la curva de densidad, es decir, los puntos azules :
aquí, una pregunta está aquí, debajo de la curva de densidad En el área del bloque, ¿qué distribución satisfacen estos puntos? ¡Distribuidos equitativamente! Ésta es la parte más crítica del rechazo del muestreo: hacer un rectángulo, introducir puntos en el rectángulo, etc., se hace todo para obtener una distribución uniforme del área encerrada por la curva de densidad. Siempre que podamos obtener una muestra que satisfaga una distribución uniforme bajo la curva de densidad, podemos obtener una muestra de muestreo de variables aleatorias que coincida con la curva de densidad. El método consiste en extraer solo la abscisa de cada punto azul, y la muestra formada por estas abscisas es nuestra muestra objetivo. El lado izquierdo de la siguiente figura es el histograma de una muestra obtenida de acuerdo con el método anterior y la estimación de la densidad del grano, y el lado derecho de la siguiente figura es la curva de densidad inicial.
Se puede ver que la estimación de la densidad del grano de la muestra muestreada es básicamente consistente con la curva de densidad objetivo, y es seguro que esta muestra es la muestra objetivo.
Al principio se utilizó un rectángulo, este rectángulo es una distribución recomendada que satisface la distribución uniforme, la distribución recomendada es solo una herramienta auxiliar para obtener muestras distribuidas uniformemente bajo la curva de función de densidad objetivo. Usar la distribución uniforme como la distribución recomendada a veces es muy ineficaz. ¿Por qué dices eso? Se puede ver en el ejemplo anterior que se han eliminado muchos puntos (los puntos verdes) que están distribuidos uniformemente, provocando una especie de desperdicio. Puede elegir algunas otras curvas para enmarcar la curva de densidad, y la eficiencia aumentará un poco, como se muestra en la figura siguiente: La
curva numérica es h (x), que corresponde a la línea azul en la figura siguiente. La distribución recomendada la curva de densidad es g (x), y ponemos g (x) se multiplica por un factor constante c, y luego la curva de densidad objetivo está enmarcada por la curva de cg (x).
Suponemos que las variables aleatorias que satisfacen g (x) son fáciles de muestrear, por lo que los pasos para rechazar el muestreo son los siguientes:
- Recopile datos de muestra de g (x), denótelos como x ⋆ x ^ {\ star}X⋆ , lo tomamos como sugerencia
- ¿Deberíamos aceptar esta sugerencia como una muestra de datos que satisfaga la distribución h (x)? Definimos una probabilidad de aceptación:
En otras palabras, usamos α \ alphaα probabilidad de aceptarx ⋆ x ^ {\ star}X⋆ se utiliza como datos de muestra de la distribución h (x). En la operación real, tomamos unU (0, 1) U (0, 1)U ( 0 ,1 ) número aleatorioμ \ muμ , siμ <α \ mu <\ alphaμ<α , solo aceptax ⋆ x ^ (\ star)X⋆ se usa como un dato de muestra de h (x); de lo contrario, deséchelo y regrese al paso 1 para continuar el ciclo. Finalmente, se puede obtener una muestra.
- Al comienzo del artículo, se sacaron 10,000 puntos a la vez, pero ¿cómo se convirtieron en uno tras otro? De hecho, se corresponden, y el proceso de eliminar el punto azul es equivalente al proceso de emitir un juicio sobre si se niega.
- Si hay una muestra distribuida uniformemente bajo la curva de densidad, se puede obtener una muestra de la distribución que coincida con la curva de densidad.
- Si la forma de la distribución propuesta se acerca más a la distribución objetivo, la eficiencia del muestreo será mayor.
2. Proceso de muestreo de aceptación-rechazo
3. Explicación intuitiva del muestreo de aceptación-rechazo
4. Prueba de validez de la muestra de aceptación-rechazo (por ser)
Implementación 5.python
2. El código generado es el siguiente:
import random
import math
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
%matplotlib inline
sns.set_style('darkgrid')
plt.rcParams['figure.figsize'] = (12, 8)
def AceeptReject(split_val):
global c
global power
while True:
x = random.uniform(0, 1)
y = random.uniform(0, 1)
if y*c <= math.pow(x - split_val, power):
return x
power = 4
t = 0.4
sum_ = (math.pow(1-t, power + 1) - math.pow(-t, power + 1)) / (power + 1) #求积分
x = np.linspace(0, 1, 100)
#常数值c
c = 0.6**4/sum_
cc = [c for xi in x]
plt.plot(x, cc, '--',label='c*f(x)')
#目标概率密度函数的值f(x)
y = [math.pow(xi - t, power)/sum_ for xi in x]
plt.plot(x, y,label='f(x)')
#采样10000个点
samples = []
for i in range(10000):
samples.append(AceeptReject(t))
plt.hist(samples, bins=50, normed=True,label='sampling')
plt.legend()
plt.show()
5. Resumen
Si desea utilizar el método Monte Carlo como un método de suma de simulación de muestreo general, necesita la ayuda de la cadena de Markov.
https://gaolei786.github.io/statistics/reject.html
https://zhuanlan.zhihu.com/p/75264565