Nunca he tenido un curso de estadística, así que espero preguntar en el lugar correcto aquí.
Supongamos que tengo sólo dos datos que describen una distribución normal: la media y varianza σ 2 . Quiero usar una computadora para la muestra al azar de esta distribución tal que respeto estas dos estadísticas.
Es bastante obvio que puedo manejar la media simplemente normalizar alrededor de 0: sólo tiene que añadir a cada muestra antes de la salida de la muestra. Pero no veo cómo generar mediante programación muestras de respetar σ 2 .
Mi programa estará en un lenguaje de programación convencional; No tengo acceso a ningún paquete estadístico.
Respuestas:
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 μμ σ2 x
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.
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.
fuente
Esto es realmente un comentario sobre la respuesta de Michael Lew y el comentario de Fixee, pero se publica como respuesta porque no tengo la reputación en este sitio para comentar.
fuente
Además de la respuesta de NRH, si aún no tiene medios para generar muestras aleatorias a partir de una "distribución normal estándar" N (0,1), a continuación se muestra una manera buena y simple (ya que usted menciona que no tiene una estadística paquete, las siguientes funciones deberían estar disponibles en la mayoría de los lenguajes de programación estándar).
1. Genere u y v como dos números aleatorios distribuidos uniformemente en el rango de -1 a 1 por
u = 2 r1 - 1
yv = 2 r2 - 1
2.calcule
w = u^2 + v^2
si w> 1 vuelve a 13. devuelva u * z e y = v * z con
z= sqrt(-2ln(w)/w)
un código de ejemplo que se vería así:luego use lo que MHR ha sugerido anteriormente para obtener las desviaciones aleatorias de
N(mu, sigma^2)
.fuente
La distribución normal surge cuando se suman muchos valores aleatorios de distribución similar (es decir, similares entre sí). Si suma diez o más valores aleatorios distribuidos uniformemente, la suma se distribuye casi de manera normal. (Agregue más de diez si desea que sea aún más normal, pero diez es suficiente para casi todos los propósitos).
Supongamos que sus valores aleatorios uniformes se distribuyen uniformemente entre 0 y 1. La suma estará entre 0 y 10. Reste 5 de la suma y la media de la distribución resultante será 0. Ahora divida el resultado por la desviación estándar de la distribución normal (cercana) y multiplique el resultado por la desviación estándar deseada. Desafortunadamente, no estoy seguro de cuál es la desviación estándar de la suma de diez desviaciones aleatorias uniformes, pero si tenemos suerte, alguien nos lo dirá en un comentario.
Prefiero hablar con los estudiantes sobre la distribución normal en estos términos porque la utilidad de la suposición de una distribución normal en muchos sistemas se deriva completamente de la propiedad de que las sumas de muchas influencias aleatorias conducen a una distribución normal.
fuente