Como posso gerar manualmente um número aleatório a partir de uma determinada distribuição, como por exemplo, 10 realizações da distribuição normal padrão?
30
Como posso gerar manualmente um número aleatório a partir de uma determinada distribuição, como por exemplo, 10 realizações da distribuição normal padrão?
Respostas:
Se "manualmente" incluir "mecânico", você terá muitas opções disponíveis. Para simular uma variável de Bernoulli com probabilidade metade, podemos jogar uma moeda: para coroa, 1 para cara. Para simular uma distribuição geométrica, podemos contar quantas jogadas de moeda são necessárias antes de obtermos as cabeças. Para simular uma distribuição binomial, podemos jogar nossa moeda n vezes (ou simplesmente jogar n moedas) e contar as cabeças. O "quincunx" ou "bean machine" ou "Galton box" é uma alternativa mais cinética - por que não colocar uma em ação e ver por si mesmo ? Parece,0 0 1 1 n n não existe uma "moeda ponderada"mas se quisermos variar o parâmetro de probabilidade de nossa variável Bernoulli ou binomial para valores diferentes de , a agulha de Georges-Louis Leclerc, conde de Buffon , nos permitirá fazê-lo. Para simular a distribuição uniforme e discreta em { 1 , 2 , 3 , 4 , 5 , 6 } , rolamos um dado de seis lados. Os fãs de role-playing games terão encontrado dados mais exóticos , por exemplo, dados tetraédricos para amostrar uniformemente de { 1 , 2 , 3 , 4 }p = 0,5 { 1 , 2 , 3 , 4 , 5 , 6 } {1,2,3,4} , enquanto com uma roda giratória ou roleta, é possível ir ainda mais longe. ( Crédito de imagem )
Teríamos que ficar loucos para gerar números aleatórios dessa maneira hoje, quando há apenas um comando em um console de computador - ou, se tivermos uma tabela adequada de números aleatórios disponível, uma incursão nos cantos mais empoeirados da estante? Bem, talvez, embora exista algo agradavelmente tátil em um experimento físico. Porém, para as pessoas que trabalhavam antes da Era do Computador, de fato antes das tabelas de números aleatórios em larga escala amplamente disponíveis (das quais mais tarde), a simulação manual de variáveis aleatórias tinha mais importância prática. Quando Buffon investigou o paradoxo de São Petersburgo- o famoso jogo de arremesso de moedas em que o valor que o jogador ganha dobra toda vez que uma cabeça é lançada, o jogador perde nas primeiras caudas e cuja recompensa esperada é contra-intuitivamente infinita - ele precisava simular a distribuição geométrica com . Para fazer isso, parece que ele contratou uma criança para jogar uma moeda para simular 2048 peças do jogo de São Petersburgo, registrando quantos lançamentos antes do jogo terminar. Essa distribuição geométrica simulada é reproduzida em Stigler (1991) :p = 0,5
No mesmo ensaio em que ele publicou essa investigação empírica sobre o paradoxo de São Petersburgo, Buffon também introduziu a famosa " agulha de Buffon ". Se um plano é dividido em tiras por linhas paralelas distantes e uma agulha de comprimento l ≤ d é jogada sobre ele, a probabilidade de a agulha cruzar uma das linhas é de 2 ld l ≤ d .2 lπd
A agulha de Buffon pode, portanto, ser usada para simular uma variável aleatória ouX∼Binomial(n,2lX∼ Bernoulli ( 2 lπd) , e podemos ajustar a probabilidade de sucesso alterando o comprimento de nossas agulhas ou (talvez mais convenientemente) a distância em que governamos as linhas. Um uso alternativo das agulhas de Buffon é uma maneira terrivelmente ineficiente de encontrar uma aproximação probabilística paraπ. A imagem (crédito) mostra 17 palitos de fósforo, dos quais 11 cruzam uma linha. Quando a distância entre as linhas regidas é definida igual ao comprimento do palito, como aqui, a proporção esperada de palitos cruzados é2X∼ Binomial ( n , 2 lπd) π e, portanto, pode-se estimar π como duas vezes o inverso da fracção observado: aqui obtemos π =2⋅172π π^ . Em 1901 Mario Lazzarini reivindicou ter realizado a experiência usando agulhas de 2,5 cm com linhas 3 cm entre si, e depois 3408 jogadas obtido π =355π^= 2 ⋅ 1711≈ 3.1 . Este é um racional bem conhecido paraπ, com precisão de seis casas decimais. Badger (1994) fornece evidências convincentes de que isso era fraudulento, não menos importante: para ter 95% de confiança em seis casas decimais de precisão usando o aparelho de Lazzarini, devem ser lançadas 134 trilhões de agulhas que desgastam a paciência! Certamente a agulha de Buffon é mais útil como gerador de números aleatórios do que como método para estimarπ.π^= 355113 π π
Até agora, nossos geradores têm sido decepcionantemente discretos. E se quisermos simular uma distribuição normal? Uma opção é obter dígitos aleatórios e usá-los para formar boas aproximações discretas de uma distribuição uniforme em e depois executar alguns cálculos para transformá-los em desvios normais aleatórios. Uma roda giratória ou roleta pode fornecer dígitos decimais de zero a nove; um dado pode gerar dígitos binários; se nossas habilidades aritméticas puderem lidar com uma base mais divertida, mesmo um conjunto padrão de dados serviria. Outras respostas abordaram esse tipo de abordagem baseada em transformação em mais detalhes; Adio qualquer discussão sobre o assunto até o fim.[ 0 , 1 ]
No final do século XIX, a utilidade da distribuição normal era bem conhecida e, portanto, havia estatísticos interessados em simular desvios normais aleatórios. Escusado será dizer que cálculos manuais longos não seriam adequados, exceto para configurar o processo de simulação em primeiro lugar. Uma vez estabelecido, a geração dos números aleatórios tinha que ser relativamente rápida e fácil. Stigler (1991) lista os métodos empregados por três estatísticos desta época. Todos estavam pesquisando técnicas de suavização: desvios normais aleatórios eram de interesse óbvio, por exemplo, para simular erros de medição que precisavam ser suavizados.
O notável estatístico americano Erastus Lyman De Forest estava interessado em suavizar as tabelas de vida e encontrou um problema que exigia a simulação dos valores absolutos dos desvios normais. No que provará ser um tema corrente, De Forest estava realmente amostrando uma distribuição meio normal . Além disso, em vez de usar um desvio padrão de um (o que estamos acostumados a chamar de "padrão"), De Forest queria um "erro provável" (desvio médio) de um. Este foi o formulário fornecido na tabela "Probabilidade de erros"Z∼ N( 0 , 12) nos apêndices de "Um manual de astronomia esférica e prática, volume II" deWilliam Chauvenet . A partir dessa tabela, De Forest interpolou os quantis de uma distribuição semi-normal, de a p = 0,995 , que ele considerou "erros de igual frequência".p = 0,005 p = 0,995
Se desejar simular a distribuição normal, seguindo De Forest, você pode imprimir esta tabela e cortá-la. De Forest (1876) escreveu que os erros "foram inscritos em 100 bits de cartão de tamanho igual, que foram sacudidos em uma caixa e todos desenhados um a um".
O astrônomo e meteorologista Sir George Howard Darwin (filho do naturalista Charles) deu uma guinada diferente, desenvolvendo o que chamou de "roleta" por gerar desvios normais aleatórios. Darwin (1877) descreve como:
O "índice" deve ser lido aqui como "ponteiro" ou "indicador" (consulte "dedo indicador"). Stigler ressalta que Darwin, como De Forest, estava usando uma distribuição cumulativa semi-normal em torno do disco. Posteriormente, o uso de uma moeda para anexar um sinal aleatoriamente torna essa distribuição normal completa. Stigler observa que não está claro o quão finamente a escala foi graduada, mas presume que a instrução para interromper manualmente a rotação intermediária do disco foi "diminuir o viés potencial em direção a uma seção do disco e acelerar o procedimento".
Sir Francis Galton , aliás, meio-primo de Charles Darwin, já foi mencionado em relação ao seu quincunce. Enquanto isso simula mecanicamente uma distribuição binomial que, pelo teorema de De Moivre – Laplace, tem uma semelhança impressionante com a distribuição normal (e é ocasionalmente usada como uma ajuda didática para esse tópico), Galton realmente produziu um esquema muito mais elaborado quando desejava amostra de uma distribuição normal. Ainda mais extraordinário do que os exemplos não convencionais no topo desta resposta, Galton desenvolveu dados normalmente distribuídos- ou mais precisamente, um conjunto de dados que produz uma excelente aproximação discreta a uma distribuição normal com desvio médio. Esses dados, datados de 1890, são preservados na Galton Collection na University College London.
Em um artigo de 1890 na Nature, Galton escreveu que:
O Laboratório de Experimentos Estatísticos Matemáticos de Raazesh Sainudiin inclui um projeto estudantil da Universidade de Canterbury, na Nova Zelândia, reproduzindo os dados de Galton . O projeto inclui investigação empírica ao lançar os dados várias vezes (incluindo um CDF empírico que parece tranquilizadoramente "normal") e uma adaptação das pontuações dos dados para que eles sigam a distribuição normal padrão. Usando as pontuações originais de Galton, há também um gráfico da distribuição normal discretizada que as pontuações dos dados realmente seguem.
Em grande escala, se você estiver preparado para esticar o "mecânico" ao elétrico, observe que o épico A Million Random Digits da RAND com 100.000 desvios normais foi baseado em um tipo de simulação eletrônica de uma roleta. A partir do relatório técnico (de George W. Brown, originalmente em junho de 1949), encontramos:
Referências
Badger, L. (1994). " Aproximação afortunada de Lazzarini de π ". Revista de Matemática . Associação Matemática da América. 67 (2): 83-91.
Darwin, GH (1877). " Sobre medidas falíveis de quantidades variáveis e sobre o tratamento de observações meteorológicas. " Philosophical Magazine , 4 (22), 1–14
De Forest, EL (1876). Interpolação e ajuste de séries . Tuttle, Morehouse e Taylor, New Haven, Conn.
Galton, F. (1890). "Dados para experimentos estatísticos". Natureza , 42 , 13-14
Stigler, SM (1991). "Simulação estocástica no século XIX". Statistical Science , 6 (1), 89-97.
fonte
Por exemplo, no meu sistema operacional Linux, posso verificar
Usar o CLT para aproximar a normalidade certamente não é um método que eu recomendaria, já que (1) você ainda precisa de outras variáveis para alimentar a média, portanto, pode usar uniformes no algoritmo de Box-Müller e (2) a precisão aumenta bastante lentamente com o número de simulações. Especialmente se estiver usando uma variável aleatória discreta como o resultado de um dado, mesmo com mais de seis faces . Para citar Thomas et al. (2007), uma pesquisa sobre os prós e contras dos geradores aleatórios gaussianos:
Aqui está um experimento rápido para ilustrar o problema: gerei 100 vezes a média de 30 resultados dos dados:
dies=apply(matrix(sample(1:6,30*100,rep=TRUE),ncol=30),1,mean)
normalizou essas médias em zero médio - variância uma varia
stdies=(dies-3.5)/sqrt(35/12/30)
e analisou o ajuste normal [ou a falta dele] desta amostra:
dies
76/30
122/30
o ajuste é tão bom quanto o esperado para uma amostra normal do tamanho 200 (basta plotar outro para uma amostra normal verdadeira
norma=rnorm(100)
):como demonstrado em mais detalhes por um teste de Kolmogorov-Smirnov:
fonte
Isso não é exatamente aleatório, mas deve estar próximo o suficiente, pois você parece querer uma experiência difícil.
Use seu telefone para configurar um cronômetro. Após 10 segundos, pare (quanto mais você espera, mais se aproxima de um resultado verdadeiramente "aleatório", mas 10 segundos são bons). Pegue os últimos dígitos (por exemplo, 10,67 segundos fornecerão 67). Aplique a tabela de percentis para a distribuição normal. Neste exemplo, basta procurar 0,67 e você encontrará o número. Nesse caso, seu valor é de cerca de 0,45. Isso não é perfeitamente preciso, mas fornecerá uma estimativa sólida.
Se você rolar abaixo de 50, faça 100- [Your Result] e use a tabela. Seu resultado será o mesmo, com um sinal de menos, devido à simetria de N (0,1).
fonte
Vamos jogar uma moeda imparcialn vezes. Começando em zero, contamos+ 1 se cabeças, - 1 se caudas. Depois den moedas, dividimos o contador por n--√ . Usando o teorema do limite central , sen for suficientemente grande, deveríamos ter uma "realização aproximada" do padrão gaussiano normalizado N( 0 , 1 ) .
Por quê? Deixei
iid Bernoulli variáveis aleatórias comP ( Xk= ± 1 ) = 12 . Conseqüentemente,
DeixeiY: = X1 1+ X2+ ⋯ + Xn . Conseqüentemente,
Normalizando,
obtemos uma variável aleatória com variância unitária
fonte
Vale a pena notar que, uma vez que você pode gerar um uniforme (0,1), pode gerar qualquer variável aleatória para a qual o cdf inverso é calculável, simplesmente conectando a variável aleatória uniforme ao CDF inverso.
Então, como alguém pode calcular um uniforme (0,1) manualmente? Bem, como mencionado pelo @Silverfish, há uma variedade de dados usados pelos jogadores tradicionais de RPG. Um deles é um dado de dez lados. Assumindo que este é um dado justo, agora podemos gerar um uniforme discreto (0, 9).
Também podemos usar esse uniforme (0,9) para representar um único dígito de uma variável aleatória. Portanto, se usarmos dois dados, obtemos uma variável aleatória uniforme que pode assumir valores0,01 , 0,02 , . . . , 0,99 , 1,00 . Com três dados, podemos obter uma distribuição uniforme em0,001 , 0,002 , . . . , 0,999 , 1.000 .
Assim, podemos chegar muito perto de um uniforme contínuo (0,1) aproximando-o com uma distribuição uniforme discreta com finas grades, com alguns dados de 10 lados. Isso pode ser conectado a um CDF inverso para produzir a variável aleatória de interesse.
fonte