Hay dos situaciones típicas diferentes para este tipo de problemas:
i) se desea generar una muestra a partir de una distribución determinada cuyas características poblacionales coincidan con las especificadas (pero, debido a la variación del muestreo, las características de la muestra no coinciden exactamente).
ii) desea generar una muestra cuyas características muestrales coincidan con las especificadas (pero que, debido a las restricciones de hacer coincidir exactamente las cantidades de la muestra con un conjunto de valores preestablecidos, no procedan realmente de la distribución que desea).
Quieres el segundo caso, pero lo consigues siguiendo el mismo enfoque que en el primer caso, con un paso extra de estandarización.
Por lo tanto, para las normales multivariantes, cualquiera de las dos cosas puede hacerse de forma bastante sencilla:
En el primer caso podrías utilizar normales aleatorias sin la estructura de la población (como la normal estándar iid que tiene expectativa 0 y matriz de covarianza identidad) y luego imponerla - transformar para obtener la matriz de covarianza y la media que quieres. Si $\mu$ y $\Sigma$ son la media y la covarianza de la población que necesita y $z$ son normales estándar iid, se calcula $y=Lz+\mu$ para algunos $L$ donde $LL'=\Sigma$ (por ejemplo, un $L$ podría obtenerse mediante la descomposición de Cholesky). Entonces $y$ tiene las características poblacionales deseadas.
Con la segunda, tienes que transformar primero tus normales aleatorias para eliminar incluso la variación aleatoria lejos de la media cero y la covarianza de identidad (haciendo la media de la muestra cero y la covarianza de la muestra $I_n$ ), entonces proceda como antes. Pero ese paso inicial de eliminar la desviación muestral de la media exacta $0$ , varianza $I$ interfiere en la distribución. (En muestras pequeñas puede ser bastante grave).
Esto puede hacerse restando la media muestral de $z$ ( $z^*=z-\bar z$ ) y calculando la descomposición de Cholesky de $z^*$ . Si $L^*$ es el factor de Cholesky izquierdo, entonces $z^{(0)}=(L^*)^{-1}z^*$ debe tener media muestral 0 y covarianza muestral de identidad. Entonces se puede calcular $y=Lz^{(0)}+\mu$ y tener una muestra con los momentos de muestra deseados. (Dependiendo de cómo se definan las cantidades de la muestra, puede haber una pequeña manipulación adicional al multiplicar/dividir por factores como $\sqrt{\frac{n-1}{n}}$ pero es bastante fácil identificar esa necesidad).
0 votos
Attilio Meucci ofrece una solución escalable. Ver esto Artículo de riesgo y código matlab