Eu nunca tive um curso de estatística, então espero estar perguntando no lugar certo aqui.
Suponha que eu tenha apenas dois dados descrevendo uma distribuição normal: a média e a variação . Eu quero usar um computador para amostrar aleatoriamente essa distribuição, de modo que eu respeite essas duas estatísticas.σ 2
É bastante óbvio que eu posso lidar com a média simplesmente normalizando em torno de 0: basta adicionar a cada amostra antes de gerar a amostra. Mas não vejo como gerar programaticamente amostras para respeitar .
Meu programa estará em uma linguagem de programação convencional; Não tenho acesso a nenhum pacote estatístico.
Respostas:
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μ σ2 x
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.
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.
fonte
Este é realmente um comentário sobre a resposta de Michael Lew e o comentário de Fixee, mas é postado como resposta porque não tenho reputação neste site para comentar.
fonte
Além da resposta da NRH, se você ainda não tem como gerar amostras aleatórias a partir de uma "distribuição normal padrão" N (0,1), abaixo é uma maneira boa e simples (desde que você mencione que não possui uma estatística) pacote, as funções abaixo devem estar disponíveis na maioria das linguagens de programação padrão).
1. Gere u e v como dois números aleatórios distribuídos uniformemente no intervalo de -1 a 1 por
u = 2 r1 - 1
ev = 2 r2 - 1
2.calculate
w = u^2 + v^2
se w> 1 voltar para 13.rode u * z e y = v * z com
z= sqrt(-2ln(w)/w)
Um código de amostra ficaria assim:então use o que MHR sugeriu acima para obter os desvios aleatórios de
N(mu, sigma^2)
.fonte
A distribuição normal surge quando se soma muitos valores aleatórios de distribuição semelhante (quero dizer, similares um ao outro). Se você adicionar dez ou mais valores aleatórios distribuídos uniformemente, a soma será quase normalmente distribuída. (Adicione mais de dez se quiser que seja ainda mais normal, mas dez é suficiente para quase todos os fins.)
Diga que seus valores aleatórios uniformes são distribuídos uniformemente entre 0 e 1. A soma será então entre 0 e 10. Subtraia 5 da soma e a média da distribuição resultante será 0. Agora você divide o resultado pelo desvio padrão de a distribuição normal (quase) e multiplique o resultado pelo desvio padrão desejado. Infelizmente, não sei ao certo qual é o desvio padrão da soma de dez desvios aleatórios uniformes, mas se tivermos sorte, alguém nos dirá em um comentário!
Prefiro conversar com os alunos sobre a distribuição normal nesses termos, porque a utilidade da suposição de uma distribuição normal em muitos sistemas decorre inteiramente da propriedade de que as somas de muitas influências aleatórias levam a uma distribuição normal.
fonte