¿Cómo puedo generar manualmente un número aleatorio de una distribución dada, como por ejemplo, 10 realizaciones de la distribución normal estándar?
30
¿Cómo puedo generar manualmente un número aleatorio de una distribución dada, como por ejemplo, 10 realizaciones de la distribución normal estándar?
Respuestas:
Si "manualmente" incluye "mecánico", entonces tiene muchas opciones disponibles. Para simular una variable de Bernoulli con probabilidad de la mitad, podemos lanzar una moneda: para colas, 1 para caras. Para simular una distribución geométrica podemos contar cuántos lanzamientos de monedas son necesarios antes de obtener caras. Para simular una distribución binomial, podemos lanzar nuestra moneda n veces (o simplemente lanzar n monedas) y contar las caras. La "quincunx" o la "máquina de frijoles" o la "caja de Galton" es una alternativa más cinética. ¿Por qué no poner una en acción y comprobarlo usted mismo ? Parece que no hay tal cosa como una "moneda ponderada"0 1 n n pero si deseamos variar el parámetro de probabilidad de nuestra variable de Bernoulli o binomial a valores distintos de , la aguja de Georges-Louis Leclerc, Comte de Buffon nos permitirá hacerlo. Para simular la distribución uniforme discreta en { 1 , 2 , 3 , 4 , 5 , 6 } tiramos un dado de seis lados. Los fanáticos de los juegos de rol habrán encontrado dados más exóticos , por ejemplo, dados tetraédricos para muestrear uniformemente de { 1 , 2 , 3 , 4 }p=0.5 {1,2,3,4,5,6} {1,2,3,4} , mientras que con una ruleta o ruleta se puede ir aún más lejos. ( Crédito de la imagen )
¿Tendríamos que estar locos para generar números aleatorios de esta manera hoy, cuando está a solo un comando de distancia en una consola de computadora o, si tenemos una tabla adecuada de números aleatorios disponibles, una incursión en los rincones más polvorientos de la estantería? Bueno, tal vez, aunque hay algo agradablemente táctil en un experimento físico. Pero para las personas que trabajaban antes de la Era de la Computación, de hecho antes de las tablas de números aleatorios a gran escala ampliamente disponibles (de las cuales más adelante), la simulación de variables aleatorias manualmente tenía más importancia práctica. Cuando Buffon investigó la paradoja de San Petersburgo- el famoso juego de lanzamiento de monedas en el que la cantidad que el jugador gana se duplica cada vez que se lanza una cara, el jugador pierde en la primera cola y cuya recompensa esperada es infinitamente intuitiva: necesitaba simular la distribución geométrica con . Para hacerlo, parece que contrató a un niño para lanzar una moneda para simular 2048 jugadas del juego de San Petersburgo, registrando cuántos lanzamientos antes de que terminara el juego. Esta distribución geométrica simulada se reproduce en Stigler (1991) :p=0.5
En el mismo ensayo donde publicó esta investigación empírica sobre la paradoja de San Petersburgo, Buffon también presentó la famosa " aguja de Buffon ". Si un plano se divide en tiras por líneas paralelas separadas por una distancia , y una aguja de longitud l ≤ d cae sobre él, la probabilidad de que la aguja cruce una de las líneas es de 2 ld l≤d .2lπd
La aguja de Buffon puede, por lo tanto, usarse para simular una variable aleatoria oX∼Binomial(n,2lX∼Bernoulli(2lπd) , y podemos ajustar la probabilidad de éxito alterando las longitudes de nuestras agujas o (quizás más convenientemente) la distancia a la que gobernamos las líneas. Un uso alternativo de las agujas de Buffon es una forma terriblemente ineficiente de encontrar una aproximación probabilística paraπ. La imagen (crédito) muestra 17 fósforos, de los cuales 11 cruzan una línea. Cuando la distancia entre las líneas regladas se establece igual a la longitud del fósforo, como aquí, la proporción esperada de cruce de fósforos es2X∼Binomial(n,2lπd) π y por lo tanto podemos estimar π como dos veces el recíproco de la fracción observada: aquí obtenemos π =2⋅172π π^ . En 1901 Mario Lazzarini afirmó haber realizado el experimento utilizando 2,5 agujas cm con las líneas 3 cm entre sí, y después de 3408 lanzamientos obtuvieron π =355π^=2⋅1711≈3.1 . Este es un racional conocido paraπ, con precisión de seis decimales. Badger (1994) proporciona evidencia convincente de que esto fue fraudulento, y no menos importante para tener una confianza del 95% de seis cifras decimales de precisión utilizando el aparato de Lazzarini, ¡se deben arrojar 134 billones de agujas que agotan la paciencia! Ciertamente, la aguja de Buffon es más útil como generador de números aleatorios que como método para estimarπ.π^=355113 π π
Nuestros generadores hasta ahora han sido decepcionantemente discretos. ¿Qué pasa si queremos simular una distribución normal? Una opción es obtener dígitos aleatorios y usarlos para formar buenas aproximaciones discretas a una distribución uniforme en , luego realizar algunos cálculos para transformarlos en desviaciones normales aleatorias. Una rueda giratoria o de ruleta podría dar dígitos decimales de cero a nueve; un dado puede generar dígitos binarios; Si nuestras habilidades aritméticas pueden hacer frente a una base más funky, incluso un juego estándar de dados funcionaría. Otras respuestas han cubierto este tipo de enfoque basado en la transformación con más detalle; Aplazo cualquier discusión posterior hasta el final.[0,1]
A fines del siglo XIX, la utilidad de la distribución normal era bien conocida, por lo que había estadísticos interesados en simular desviaciones normales aleatorias. Huelga decir que largos cálculos manuales no habrían sido adecuados, excepto para configurar el proceso de simulación en primer lugar. Una vez que se estableció, la generación de los números aleatorios tuvo que ser relativamente rápida y fácil. Stigler (1991) enumera los métodos empleados por tres estadísticos de esta época. Todos estaban investigando técnicas de suavizado: las desviaciones normales aleatorias eran de evidente interés, por ejemplo, para simular errores de medición que debían suavizarse.
El notable estadístico estadounidense Erastus Lyman De Forest estaba interesado en suavizar las tablas de vida y encontró un problema que requería la simulación de los valores absolutos de las desviaciones normales. En lo que demostrará ser un tema recurrente, De Forest realmente estaba tomando muestras de una distribución medio normal . Además, en lugar de utilizar una desviación estándar de uno ( estamos acostumbrados a llamar "estándar"), De Forest quería un "error probable" (desviación media) de uno. Esta fue la forma dada en la tabla de "Probabilidad de errores" en los apéndices de "Un manual de astronomía esférica y práctica, Volumen II" porZ∼N(0,12) William Chauvenet . De esta tabla, De Forest interpoló los cuantiles de una distribución medio normal, de a p = 0.995 , que consideró "errores de igual frecuencia".p=0.005 p=0.995
Si desea simular la distribución normal, siguiendo a De Forest, puede imprimir esta tabla y cortarla. De Forest (1876) escribió que los errores "se han inscrito en 100 bits de cartón de igual tamaño, que se sacudieron en una caja y se extrajeron uno por uno".
El astrónomo y meteorólogo Sir George Howard Darwin (hijo del naturalista Charles) dio un giro diferente a las cosas, al desarrollar lo que llamó una "ruleta" para generar desviaciones normales al azar. Darwin (1877) describe cómo:
El "índice" debe leerse aquí como "puntero" o "indicador" (cf "dedo índice"). Stigler señala que Darwin, como De Forest, estaba usando una distribución acumulativa medio normal alrededor del disco. Posteriormente, usar una moneda para adjuntar un signo al azar hace que esta sea una distribución normal completa. Stigler señala que no está claro cuán finamente se graduó la escala, pero presume que la instrucción para detener manualmente el giro a mitad del disco fue "disminuir el sesgo potencial hacia una sección del disco y acelerar el procedimiento".
Sir Francis Galton , por cierto un primo medio de Charles Darwin, ya ha sido mencionado en relación con su quincunx. Si bien esto simula mecánicamente una distribución binomial que, según el teorema de De Moivre-Laplace, tiene una semejanza sorprendente con la distribución normal (y ocasionalmente se usa como una ayuda didáctica para ese tema), Galton realmente produjo un esquema mucho más elaborado cuando lo deseaba. muestra de una distribución normal. Incluso más extraordinario que los ejemplos no convencionales en la parte superior de esta respuesta, Galton desarrolló dados distribuidos normalmente- o más exactamente, un conjunto de dados que producen una excelente aproximación discreta a una distribución normal con una desviación media de uno. Estos dados, que datan de 1890, se conservan en la Colección Galton del University College London.
En un artículo de 1890 en Nature Galton escribió que:
El Laboratorio de experimentos estadísticos matemáticos de Raazesh Sainudiin incluye un proyecto estudiantil de la Universidad de Canterbury, Nueva Zelanda, que reproduce los dados de Galton . El proyecto incluye la investigación empírica de tirar los dados muchas veces (incluido un CDF empírico que parece tranquilizadoramente "normal") y una adaptación de los puntajes de los dados para que sigan la distribución normal estándar. Usando los puntajes originales de Galton, también hay un gráfico de la distribución normal discreta que siguen los puntajes de los dados.
A gran escala, si estás preparado para estirar lo "mecánico" a lo eléctrico, ten en cuenta que el épico A Million Random Digits de RAND con 100,000 desviaciones normales se basó en una especie de simulación electrónica de una ruleta. Del informe técnico (por George W. Brown, originalmente en junio de 1949) encontramos:
Referencias
Badger, L. (1994). " Aproximación afortunada de Lazzarini de π ". Revista de Matemáticas . Asociación Matemática de América. 67 (2): 83–91.
Darwin, GH (1877). " Sobre medidas falibles de cantidades variables y sobre el tratamiento de observaciones meteorológicas " . Philosophical Magazine , 4 (22), 1-14
De Forest, EL (1876). Interpolación y ajuste de series . Tuttle, Morehouse y Taylor, New Haven, Connecticut.
Galton, F. (1890). "Dados para experimentos estadísticos". Nature , 42 , 13-14
Stigler, SM (1991). "Simulación estocástica en el siglo XIX". Ciencia estadística , 6 (1), 89-97.
fuente
Por ejemplo, en mi sistema operativo Linux, puedo verificar
Usar el CLT para aproximar la normalidad ciertamente no es un método que recomendaría, ya que (1) todavía necesita otras variantes para alimentar el promedio, por lo que también puede usar uniformes en el algoritmo de Box-Müller, y (2) la precisión crece bastante lentamente con el número de simulaciones. Especialmente si se usa una variable aleatoria discreta como el resultado de un dado, incluso con más de seis caras . Para citar de Thomas et al. (2007), una encuesta sobre los pros y los contras de los generadores aleatorios gaussianos:
Aquí hay un experimento rápido para ilustrar el problema: generé 100 veces el promedio de 30 resultados de dado:
dies=apply(matrix(sample(1:6,30*100,rep=TRUE),ncol=30),1,mean)
luego normalizó esos promedios en media cero - la varianza uno varía
stdies=(dies-3.5)/sqrt(35/12/30)
y observó el ajuste normal [o la falta del mismo] de esta muestra:
dies
76/30
122/30
el ajuste es tan bueno como se puede esperar para una muestra Normal de tamaño 200 (simplemente trace otra para una muestra normal verdadera
norma=rnorm(100)
):como lo demuestra una prueba de Kolmogorov-Smirnov:
fuente
Esto no es exactamente al azar, pero debería estar lo suficientemente cerca, ya que parece querer un experimento aproximado.
Use su teléfono para configurar un cronómetro. Después de unos buenos 10 segundos, deténgalo (cuanto más espere, más se acercará a un resultado verdaderamente "aleatorio", pero 10 segundos están bien). Tome los últimos dígitos (por ejemplo, 10.67 segundos le dará 67). Aplicar la tabla de percentiles para la distribución normal. En este ejemplo, solo tiene que buscar 0.67 y encontrará el número. En este caso, su valor es de aproximadamente 0,45. Esto no es perfectamente preciso, pero le dará una estimación sólida.
Si obtiene menos de 50, simplemente haga 100- [Su resultado] y use la tabla. Su resultado será el mismo, con un signo menos, debido a la simetría de N (0,1).
fuente
Volteemos una moneda imparcialnorte veces. Comenzando en cero, contamos+ 1 si cabezas - 1 si colas Despuésnorte lanzamientos de monedas, dividimos el contador por norte--√ . Usando el teorema del límite central , sinorte es lo suficientemente grande, entonces deberíamos tener una "realización aproximada" del gaussiano normalizado norte( 0 , 1 ) .
¿Por qué? Dejar
ser iid Bernoulli variables aleatorias conP ( Xk= ± 1 ) = 12 . Por lo tanto,
DejarY: = X1+ X2+ ⋯ + Xnorte . Por lo tanto,
Normalizando,
obtenemos una variable aleatoria con varianza unitaria
fuente
Vale la pena señalar que una vez que puede generar un uniforme (0,1), puede generar cualquier variable aleatoria para la cual el cdf inverso es calculable simplemente conectando la variable aleatoria uniforme en el CDF inverso.
Entonces, ¿cómo podría uno calcular un uniforme (0,1) manualmente? Bueno, como mencionó @Silverfish, hay una variedad de dados utilizados por los jugadores tradicionales de rol. Uno de los cuales es un dado de diez lados. Asumiendo que este es un dado justo, ahora podemos generar un uniforme discreto (0, 9).
También podemos usar este uniforme (0,9) para representar un solo dígito de una variable aleatoria. Entonces, si usamos dos dados, obtenemos una variable aleatoria uniforme que puede tomar valores0,01 , 0,02 , . . . , 0.99 , 1.00 . Con tres dados, podemos obtener una distribución uniforme en0.001 , 0.002 , . . . , 0.999 , 1.000 .
Por lo tanto, podemos acercarnos mucho a un uniforme continuo (0,1) aproximándolo con una distribución uniforme discreta finamente cuadriculada con unos pocos dados de 10 lados. Esto se puede conectar a un CDF inverso para producir la variable aleatoria de interés.
fuente