En un artículo de investigación sobre el análisis de sensibilidad de un modelo de ecuación diferencial ordinaria de un sistema dinámico, el autor proporcionó la distribución de un parámetro del modelo como Distribución normal (media = 1e-4, std = 3e-5) truncada al rango [0.5e -4 1,5e-4]. Luego usa muestras de esta distribución truncada para simulaciones del modelo. ¿Qué significa tener una distribución truncada y una muestra de esta distribución truncada?
Podría idear dos formas de hacer esto:
- Muestra de una distribución Normal pero ignora todos los valores aleatorios que caen fuera del rango especificado antes de las simulaciones.
- De alguna manera, obtenga una distribución especial "Normal truncada" y obtenga muestras de ella.
¿Son estos enfoques válidos y equivalentes?
Creo que en el primer caso, si se trazara el cdf / pdf experimental de la muestra, no se vería como una distribución Normal porque las curvas no se extienden a .
qnorm
en un bucle R no es una buena idea.Este método es correcto, pero, como lo mencionó @ Xi'an en su respuesta, tomaría mucho tiempo cuando el rango es pequeño (más precisamente, cuando su medida es pequeña bajo la distribución normal).
Sin embargo, y esto ya lo menciona @ Xi'an en un comentario, para algunas situaciones el método de inversión requiere una evaluación muy precisa de la función cuantilsol- 1 , y agregaría que también requiere un cálculo rápido desol- 1 . Cuandosol es una distribución normal, la evaluación de sol- 1 es bastante lento y no es muy preciso para valores de un y si fuera del "rango" de sol .
Simulate a truncated distribution using importance sampling
A possibility is to use importance sampling. Consider the case of the standard Gaussian distributionN(0,1) . Forget the previous notations, now let G be the Cauchy distribution. The two above mentionned requirements are fulfilled for G : one simply has G(q)=arctan(q)π+12 and G−1(q)=tan(π(q−12)) . Therefore, the truncated Cauchy distribution is easy to sample by the inversion method and it is a good choice of the instrumental variable for importance sampling of the truncated normal distribution.
After a bit of simplifications, samplingU∼Unif(G(a),G(b)) and taking G−1(U) is equivalent to take tan(U′) with U′∼Unif(arctan(a),arctan(b)) :
Now one has to calculate the weight for each sampled valuexi , defined as the ratio ϕ(x)/g(x) of the two densities up to normalization, hence we can take
The weighted sample(xi, w ( xyo) ) permite estimar la medida de cada intervalo [ u , v ] debajo de la distribución objetivo, sumando los pesos de cada valor muestreado que cae dentro del intervalo:
Esto proporciona una estimación de la función acumulativa objetivo. Podemos obtenerlo y trazarlo rápidamente con el
spatsat
paquete:Por supuesto, la muestra( xyo) definitivamente no es una muestra de la distribución objetivo, sino de la distribución Cauchy instrumental, y uno obtiene una muestra de la distribución objetivo realizando un nuevo muestreo ponderado , por ejemplo utilizando el muestreo multinomial:
Otro método: muestreo de transformación inversa rápida
Olver y Townsend desarrollaron un método de muestreo para una amplia clase de distribución continua. Se implementa en la biblioteca chebfun2 para Matlab , así como en la biblioteca ApproxFun para Julia . Recientemente descubrí esta biblioteca y suena muy prometedora (no solo para el muestreo aleatorio). Básicamente, este es el método de inversión, pero utiliza aproximaciones potentes del cdf y el cdf inverso. La entrada es la función de densidad objetivo hasta la normalización.
La muestra se genera simplemente mediante el siguiente código:
Como se verifica a continuación, produce una medida estimada del intervalo[ 2 , 4 ] cercano al obtenido previamente por muestreo de importancia:
fuente