1 votos

Sobre el muestreo de una distribución normal multivariante

Estoy tratando de encontrar la complejidad temporal del muestreo de una distribución normal multivariante con un $n\times n$ matriz de covarianza $C$ . He encontrado una respuesta aquí y tengo un par de preguntas.

La respuesta dice que si descomponemos $C=LL^T$ una vez (cuya complejidad es $O(n^3)$ ), entonces $Lx$ tiene la estructura de covarianza deseada. Aquí $x$ es un $n-$ vector de variables aleatorias normales independientes. No entiendo por qué $Lx$ tiene la estructura de covarianza deseada?

¿Es cierto que el muestreo de una distribución normal estándar (o cualquier distribución continua) es $O(1)$ y, por tanto, la complejidad del muestreo $x$ es $O(n)$ ? La complejidad del muestreo depende claramente del algoritmo utilizado, pero me preguntaba si, por ejemplo, el algoritmo más avanzado en Python tiene la complejidad de $O(1)$ para el muestreo de una distribución continua?

0voto

pbn990 Puntos 71

Si $X \sim \mathcal{N}(0, I)$ entonces $LX \sim \mathcal{N}(0, LL^T) = \mathcal{N}(0, C)$ porque $L$ es una transformación lineal. Una forma de demostrarlo es con funciones características, véase la página de wikipedia .

Una forma de extraer de la distribución normal estándar es calcular $\Phi^{-1}(U)$ , donde $\Phi$ es la FCD de la distribución normal y $U$ es una distribución uniforme en $[0,1]$ . Tienes que empezar con una variable aleatoria uniforme porque eso es lo que te da el generador de números pseudoaleatorios. Otra opción es el Transformación de Box-Muller . No estoy seguro de lo que hace exactamente numpy, pero puedes mirar el código fuente. Ambos enfoques serían $O(1)$ asumiendo que se puede generar una variable aleatoria uniforme en tiempo constante.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X