Por que aumentar o tamanho da amostra de lançamentos de moedas não melhora a aproximação da curva normal?


19

Estou lendo o livro Statistics (Freeman, Pisani, Purves) e estou tentando reproduzir um exemplo em que uma moeda é lançada, digamos 50 vezes, o número de cabeças contadas e isso é repetido, 1.000 vezes.

  1. Primeiro, mantive o número de lançamentos (tamanho da amostra) em 1000 e aumentei as repetições. Quanto mais repetições, melhor os dados se ajustam à curva normal.

  2. Então, tentei manter o número de repetições fixado em 1.000 e aumentei o tamanho da amostra. Quanto maior o tamanho da amostra, pior a curva normal parecia ajustar-se aos dados. Isso parece ser contraditório com o exemplo do livro, que se aproxima melhor da curva normal à medida que o tamanho da amostra aumenta.

  3. Eu queria ver o que aconteceria se eu aumentasse o tamanho da amostra, mas com um número maior de repetições fixadas em 10.000. Isso também parece contradizer o livro.

Alguma idéia do que estou fazendo de errado?

Código e gráficos abaixo.

%matplotlib inline

def plot_hist(num_repetitions, num_tosses):
    tosses = np.random.randint(0, 2, size=[num_repetitions, num_tosses])
    sums = np.apply_along_axis(lambda a: np.sum(a == 1), 1, tosses)

    xmin, xmax = min(sums), max(sums)  
    lnspc = np.linspace(xmin, xmax, len(sums))

    m, s = stats.norm.fit(sums) # get mean and standard deviation  
    pdf_g = stats.norm.pdf(lnspc, m, s) # now get theoretical values in our interval  

    bins = np.arange(xmin, xmax) - 0.5
    step = int((xmax - xmin)/5)

    fig, ax = plt.subplots()
    _ = ax.hist(sums, bins, edgecolor='black', linewidth=1.2, density=True)
    _ = ax.plot(lnspc, pdf_g, label="Norm", color='red')
    _ = ax.set_xticks(bins[::step] + 0.5)
    _ = ax.set_title('{:,} tosses - {:,} repetitions'.format(num_tosses, num_repetitions))

1. Experimente aumentar o número de repetições (tamanho fixo da amostra de 1000)

plot_hist(1000, 1000)

insira a descrição da imagem aqui

plot_hist(10000, 1000)

insira a descrição da imagem aqui

plot_hist(100000, 1000)

insira a descrição da imagem aqui

2. Experimente aumentar o tamanho da amostra (fixado em 1000 repetições)

plot_hist(1000, 100)

insira a descrição da imagem aqui

plot_hist(1000, 1000)

insira a descrição da imagem aqui

plot_hist(1000, 10000)

insira a descrição da imagem aqui

3. Experimente aumentar o tamanho da amostra (fixado em 10.000 repetições)

plot_hist(10000, 100)

insira a descrição da imagem aqui

plot_hist(10000, 1000)

insira a descrição da imagem aqui

plot_hist(10000, 10000)

insira a descrição da imagem aqui

plot_hist(10000, 100000)

insira a descrição da imagem aqui


9
Você precisa de uma plotadora de histograma melhor - essa é particularmente ruim e está criando artefatos. Melhor ainda, compare distribuições com um gráfico de probabilidade em vez de um histograma.
whuber

1
É útil saber e aumentou meus conhecimentos hoje. Obrigado!
Chris Snow

3
"Repetições" é o seu "tamanho da amostra", não o lançamento. Aumentar o número de lançamentos é algo diferente
Marte

1
Desculpe, pensei e pensei, mas não posso com o termo para esse! Mas, independentemente do número de lançamentos, no final, ele fornece 1 número (número de cabeças). Dá-lhe 1 amostra.
Marte

Respostas:


27

No segundo caso, aumentando o número de lançamentos, você aumenta o número de caixas em que uma única tentativa pode cair. Enquanto o primeiro caso do experimento 2 tem apenas um máximo de 100 posições que podem ser preenchidas, o último exemplo tem 10000 posições. Você aumentou a "resolução" da sua experiência em um fator 100 (ou seja, um compartimento no seu primeiro experimento agora é representado por aproximadamente 100 no seu segundo). Obviamente, isso significa que você esperaria exigir um fator 100 a mais de dados para preencher suas caixas.


Ah, faz sentido. Ao definir o número de posições para 35 ( _ = ax.hist(sums, bins=35, edgecolor='black', linewidth=1.2, density=True)), o terceiro experimento agora se aproxima da curva normal.
Chris Snow

5

Você pode pensar em um lançamento individual de moedas como um teste independente de Bernoulli. Um teste dará a você cara / coroa ou sucesso / fracasso, respectivamente. Se você repetir isso, digamos 100.000 vezes, o número médio de cabeças estará muito próximo de 0,5, se a moeda for justa.

Agora, se você aumentar o número de tentativas para 1.000 e manter a repetição em 1, obterá uma sequência de 1.000 sucessos / falhas e não poderá dizer muito sobre a probabilidade de observar, em média, 500 cabeças, a menos que aumente o número de repetições para cada um desses ensaios independentes. À medida que o número de repetições aumenta, você obtém uma aproximação cada vez melhor da distribuição normal.

Para mim, é mais fácil pensar nos julgamentos não como "sorteios" ou "tamanhos de amostra", mas em vez de moedas separadas e as repetições como o número de lançamentos de cada uma dessas moedas. Depois, também faz sentido intuitivamente que, aumentando o número de moedas (ou tentativas), mantendo constante o número total de repetições (ou sacudidas), a aproximação dos dados à distribuição normal piora.


2

Eu acho que as outras respostas aqui são ótimas, mas queria adicionar uma resposta que se estende a outra ferramenta estatística.

Você está começando com uma linha de base que acha que deve se aproximar de uma curva normal e depois partindo para ver se consegue aproximar melhor uma curva normal. Tente ir na outra direção e veja o que você pode fazer para fazer um trabalho pior na aproximação. Tente simulações onde você tem 10 movimentos e 1000 repetições. Compare isso com simulações em que você tem 1000 movimentos e 10 repetições. Deve ficar claro que o primeiro caso tem uma melhor aproximação.

A extensão que eu quero fazer é a ANOVA (análise de variância). Você vê muitos cientistas de dados novos que não sabem muito bem desse problema e projetam seus estudos para que eles tenham muitos movimentos, mas poucas repetições. Eles têm muitos dados, mas são menos do que gostariam. É como medir todas as folhas de uma árvore, mas ter apenas duas. Podemos dizer um pouco sobre as folhas nessas duas árvores, mas não sobre as árvores em geral. Seria melhor obter uma amostra muito menor de folhas e obter muitas árvores.


Obrigado pela resposta. Você seria capaz de elaborar como a ANOVA poderia ser usada nesse contexto?
Chris Snow

1
O @ChrisSnow ANOVA é uma perspectiva em regressão linear que se concentra em saber se diferentes grupos são, de fato, diferentes observando a variação (daí o nome). A conexão é que, com muito poucas repetições, você não pode realmente dizer a diferença entre os grupos, mesmo tendo muitos flips. A aproximação à curva normal fica ruim e a variação de cada grupo não é diferente o suficiente para concluir que algo é, de fato, diferente.
Jeremy

1

Para obter alguma intuição adicional, considere o seguinte:

Imagine que você faça apenas uma única repetição.

Nesse caso, você pode aumentar o número de lançamentos o quanto quiser, mas não se parecerá com uma distribuição normal. E isso faz sentido, já que seu histograma terá apenas um único pico.


A distribuição normal é uma aproximação para a distribuição de probabilidade (da distribuição binomial).

O que você fez não foi criar esta distribuição. Mas, em vez disso, você aproximou essa distribuição usando um número limitado (e pequeno) de simulações. (e o que você descobriu é que essa aproximação fica pior quando você aumenta o número de posições no histograma)


Então, vocês dois precisam de um número alto de lançamentos e repetições.

  • quando o número de lançamentos é alto, a distribuição binomial (lançamentos múltiplos de moedas) pode ser aproximada pela distribuição normal.
  • quando o número de repetições / simulações é alto, o histograma desses experimentos se aproxima da densidade da distribuição binomial.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.