Se você pode amostrar de uma determinada distribuição com média 0 e variação 1, poderá facilmente amostrar a partir de uma transformação de escala-local dessa distribuição, que possui e variância . Se é uma amostra de uma distribuição média de 0 e variância 1, então
é uma amostra com médiaμσ2x
σx+μ
e variância
σ 2 . Portanto, tudo o que você precisa fazer é dimensionar a variável pelo desvio padrão
σ (raiz quadrada da variância)
antes deadicionar a média
μ .
μσ2σμ
Como você realmente obtém uma simulação de uma distribuição normal com média 0 e variação 1 é uma história diferente. É divertido e interessante saber como implementar essas coisas, mas se você usa um pacote estatístico ou uma linguagem de programação, recomendo que você obtenha e use uma função ou biblioteca adequada para a geração de números aleatórios. Se desejar orientação sobre qual biblioteca usar, adicione informações específicas sobre a (s) linguagem (s) de programação que você está usando.
Editar: À luz dos comentários, algumas outras respostas e o fato de que o Fixee aceitou essa resposta, darei mais alguns detalhes sobre como se pode usar transformações de variáveis uniformes para produzir variáveis normais.
- Um método, já mencionado em um comentário de VitalStatistix , é o método Box-Muller que pega duas variáveis aleatórias uniformes independentes e produz duas variáveis aleatórias normais independentes. Um método semelhante que evita o cálculo de duas funções transcendentais sin e cos à custa de mais algumas simulações foi postado como resposta pela francogrex .
- Um método completamente geral é a transformação de uma variável aleatória uniforme pela função de distribuição inversa. Se é distribuído uniformemente em [ 0 , 1 ], então
Φ - 1 ( U )
possui uma distribuição normal padrão. Embora não exista uma fórmula analítica explícita para Φ - 1 , ela pode ser calculada por aproximações numéricas precisas. A implementação atual em R (verifiquei pela última vez) usa essa ideia. O método é conceitualmente muito simples, mas requer uma implementação precisa de Φ - 1 , que provavelmente não é tão difundida quanto as (outras) funções transcendentaisU[0,1]
Φ−1(U)
Φ−1Φ−1log , pecado e cos .
- Várias respostas mencionam a possibilidade de usar o teorema do limite central para aproximar a distribuição normal como uma média de variáveis aleatórias uniformes. Isso geralmente não é recomendado. Argumentos apresentados, como combinar a média 0 e a variância 1, e considerações de apoio à distribuição não são convincentes. No Exercício 2.3, em "Introduzindo Métodos de Monte Carlo com R", de Christian P. Robert e George Casella, esse gerador é chamado de antiquado e a aproximação é chamada de muito pobre .
- Há um número desconcertante de outras idéias. Capítulo 3 e, em particular, Seção 3.4, em "A Arte da Programação por Computador", vol. 2 de Donald E. Knuth é uma referência clássica na geração de números aleatórios. Brian Ripley escreveu Geração de variáveis aleatórias por computador: um tutorial , que pode ser útil. O livro mencionado por Robert e Casella, ou talvez o Capítulo 2 em seu outro livro, "Métodos estatísticos de Monte Carlo", também é recomendado.
No final do dia, um método implementado corretamente não é melhor que o gerador de números pseudo-aleatórios uniformes usado. Pessoalmente, prefiro confiar em bibliotecas para fins especiais que acredito serem confiáveis. Quase sempre confio nos métodos implementados no R diretamente no R ou através da API no C / C ++. Obviamente, isso não é uma solução para todos, mas não estou familiarizado o suficiente com outras bibliotecas para recomendar alternativas.