Si puede muestrear a partir de una distribución dada con media 0 y varianza 1, entonces puede muestrear fácilmente desde una transformación de ubicación de escala de esa distribución, que tiene media y varianza σ 2 . Si x es una muestra de una distribución media 0 y varianza 1, entonces
σ x + μ
es una muestra con media μμσ2x
σx+μ
μ y varianza
. Entonces, todo lo que tiene que hacer es escalar la variable por la desviación estándar
σ (raíz cuadrada de la varianza)
antes de agregar la media
μ .
σ2σμ
Cómo se obtiene realmente una simulación de una distribución normal con media 0 y varianza 1 es una historia diferente. Es divertido e interesante saber cómo implementar tales cosas, pero ya sea que use un paquete estadístico o un lenguaje de programación o no, le recomendaré que obtenga y use una función o biblioteca adecuada para la generación de números aleatorios. Si desea asesoramiento sobre qué biblioteca utilizar, puede agregar información específica sobre qué lenguaje (s) de programación está utilizando.
Editar: A la luz de los comentarios, algunas otras respuestas y el hecho de que Fixee aceptó esta respuesta, daré más detalles sobre cómo se pueden usar transformaciones de variables uniformes para producir variables normales.
- Un método, ya mencionado en un comentario de VitalStatistix , es el método Box-Muller que toma dos variables aleatorias uniformes independientes y produce dos variables aleatorias normales independientes. Francogrex publicó como respuesta un método similar que evita el cálculo de dos funciones trascendentales sin y cos a expensas de algunas simulaciones más .
- Un método completamente general es la transformación de una variable aleatoria uniforme mediante la función de distribución inversa. Si se distribuye uniformemente en [ 0 , 1 ], entonces
Φ - 1 ( U )
tiene una distribución normal estándar. Aunque no existe una fórmula analítica explícita para Φ - 1 , puede calcularse mediante aproximaciones numéricas precisas. La implementación actual en R (la última vez que revisé) usa esta idea. El método es conceptualmente muy simple, pero requiere una implementación precisa de Φ - 1 , que probablemente no esté tan extendido como las (otras) funciones trascendentales.U[0,1]
Φ−1(U)
Φ−1Φ−1registro , pecado y cos .
- Varias respuestas mencionan la posibilidad de utilizar el teorema del límite central para aproximar la distribución normal como un promedio de variables aleatorias uniformes. Esto no es generalmente recomendado. Los argumentos presentados, como igualar la media 0 y la varianza 1, y las consideraciones de apoyo de la distribución no son convincentes. En el ejercicio 2.3 en "Introducción a los métodos de Monte Carlo con R" de Christian P. Robert y George Casella, este generador se llama anticuado y la aproximación se llama muy pobre .
- Hay una cantidad desconcertante de otras ideas. Capítulo 3 y, en particular, la Sección 3.4, en "El arte de la programación de computadoras" vol. 2 por Donald E. Knuth es una referencia clásica sobre la generación de números aleatorios. Brian Ripley escribió Computer Generation of Random Variables: A Tutorial , que puede ser útil. También se recomienda el libro mencionado por Robert y Casella, o quizás el Capítulo 2 en su otro libro, "Métodos estadísticos de Monte Carlo".
Al final del día, un método implementado correctamente no es mejor que el generador de números pseudoaleatorios uniforme utilizado. Personalmente, prefiero confiar en bibliotecas de propósito especial que creo que son confiables. Casi siempre confío en los métodos implementados en R, ya sea directamente en R o mediante la API en C / C ++. Obviamente, esta no es una solución para todos, pero no estoy lo suficientemente familiarizado con otras bibliotecas para recomendar alternativas.