Pourquoi l'augmentation de la taille de l'échantillon des lancers de pièces n'améliore-t-elle pas l'approximation de la courbe normale?


19

Je lis le livre Statistics (Freeman, Pisani, Purves) et j'essaie de reproduire un exemple où une pièce est lancée disons 50 fois, le nombre de têtes comptées et cela se répète 1000 fois.

  1. Tout d'abord, j'ai gardé le nombre de lancers (taille de l'échantillon) à 1000 et augmenté les répétitions. Plus il y a de répétitions, plus les données correspondent à la courbe normale.

  2. Ensuite, j'ai essayé de maintenir le nombre de répétitions à 1 000 et d'augmenter la taille de l'échantillon. Plus la taille de l'échantillon est grande, pire la courbe normale semble correspondre aux données. Cela semble être contradictoire avec l'exemple du livre qui se rapproche mieux de la courbe normale à mesure que la taille de l'échantillon augmente.

  3. Je voulais voir ce qui se passerait si j'augmentais la taille de l'échantillon, mais avec un plus grand nombre de répétitions qui étaient fixées à 10 000. Cela semble également contredire le livre.

Des idées sur ce que je fais mal?

Code et graphiques ci-dessous.

%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. Expérience avec un nombre croissant de répétitions (taille d'échantillon fixe de 1000)

plot_hist(1000, 1000)

entrez la description de l'image ici

plot_hist(10000, 1000)

entrez la description de l'image ici

plot_hist(100000, 1000)

entrez la description de l'image ici

2. Expérience avec l'augmentation de la taille de l'échantillon (fixée à 1000 répétitions)

plot_hist(1000, 100)

entrez la description de l'image ici

plot_hist(1000, 1000)

entrez la description de l'image ici

plot_hist(1000, 10000)

entrez la description de l'image ici

3. Expérience avec l'augmentation de la taille de l'échantillon (fixée à 10 000 répétitions)

plot_hist(10000, 100)

entrez la description de l'image ici

plot_hist(10000, 1000)

entrez la description de l'image ici

plot_hist(10000, 10000)

entrez la description de l'image ici

plot_hist(10000, 100000)

entrez la description de l'image ici


9
Vous avez besoin d'un meilleur traceur d'histogramme - celui-ci est particulièrement pauvre et crée des artefacts. Mieux encore, comparez les distributions avec un graphique de probabilité plutôt qu'avec un histogramme.
whuber

1
C'est utile de savoir et a augmenté mes connaissances aujourd'hui. Merci!
Chris Snow

3
Les «répétitions» sont votre «taille d'échantillon», pas les lancers. Augmenter le nombre de lancers est quelque chose de différent
Mars

1
Désolé, j'ai pensé et pensé et pensé, mais je ne peux pas avec le terme pour celui-là! Mais quel que soit le nombre de lancers, au final, cela vous donne 1 numéro (nombre de têtes). Il vous donne 1 échantillon.
Mars

1
J'ai posté une nouvelle question qui se concentre uniquement sur la terminologie: stats.stackexchange.com/questions/389892/…
Chris Snow

Réponses:


27

Dans le second cas, en augmentant le nombre de lancers, vous augmentez le nombre de bacs dans lesquels un seul essai peut tomber. Alors que le premier cas de l'expérience 2 n'a qu'un maximum de 100 bacs qui peuvent être remplis, le dernier exemple a 10000 bacs. Vous avez augmenté la «résolution» de votre expérience d'un facteur 100 (c.-à-d., Un bac dans votre première expérience est maintenant représenté par environ 100 dans votre deuxième). Bien sûr, cela signifie que vous vous attendez à avoir besoin d'un facteur 100 données supplémentaires pour remplir vos bacs.


Ah, c'est logique. En définissant le nombre de bacs à 35 ( _ = ax.hist(sums, bins=35, edgecolor='black', linewidth=1.2, density=True)), la troisième expérience se rapproche maintenant de la courbe normale.
Chris Snow

5

Vous pouvez considérer un tirage au sort individuel comme un procès Bernoulli indépendant. Un essai vous donnera respectivement des têtes / queues ou un succès / échec. Si vous répétez cela par exemple 100 000 fois, le nombre moyen de têtes sera très proche de 0,5, si la pièce est juste.

Maintenant, si vous augmentez le nombre d'essais à 1 000 et maintenez la répétition à 1, vous obtiendrez une séquence de 1 000 succès / échecs et vous ne pourrez pas dire grand-chose sur la probabilité d'observer, en moyenne, 500 têtes, sauf si vous augmentez le nombre de répétitions pour chacun de ces essais indépendants. À mesure que le nombre de répétitions augmente, vous obtiendrez une meilleure approximation de la distribution normale.

Pour moi, il est plus facile de penser aux essais non pas comme des «lancers» ou des «tailles d'échantillon» mais plutôt comme des pièces séparées et les répétitions comme le nombre de flips de chacune de ces pièces. Ensuite, il est également intuitivement logique qu'en augmentant le nombre de pièces (ou d'essais), tout en gardant le nombre total de répétitions (ou flips) constant, l'approximation des données à la distribution normale empire.


2

Je pense que les autres réponses ici sont excellentes, mais je voulais ajouter une réponse qui s'étend à un autre outil statistique.

Vous commencez avec une ligne de base qui, selon vous, devrait se rapprocher d'une courbe normale, puis vous allez à partir de là pour voir si vous pouvez mieux approximer une courbe normale. Essayez d'aller dans l'autre sens et voyez ce que vous pouvez faire pour faire un pire travail de rapprochement. Essayez des simulations où vous avez 10 flips et 1000 répétitions. Comparez cela à des simulations où vous avez 1000 flips et 10 répétitions. Il devrait être clair que le premier cas a la meilleure approximation.

L'extension que je veux faire est à l'ANOVA (analyse de variance). Vous voyez beaucoup de nouveaux scientifiques des données qui ont une mauvaise compréhension de ce problème et conçoivent leurs études de manière à ce qu'ils aient beaucoup de flips, mais peu de répétitions. Ils ont beaucoup de données, mais cela en dit moins qu'ils ne le souhaiteraient. Comme mesurer chaque feuille sur un arbre, mais avoir seulement deux arbres. Nous pouvons en dire un peu plus sur les feuilles sur ces deux arbres, mais pas sur les feuilles sur les arbres en général. Vous auriez mieux fait d'obtenir un échantillon beaucoup plus petit de feuilles et d'avoir beaucoup d'arbres.


Merci pour la réponse. Seriez-vous en mesure d'expliquer comment l'ANOVA pourrait être utilisée dans ce contexte?
Chris Snow

1
@ChrisSnow ANOVA est une perspective de régression linéaire qui se concentre sur la question de savoir si différents groupes sont, en fait, différents en examinant la variance (d'où le nom). La connexion est qu'avec trop peu de répétitions, vous ne pouvez pas réellement faire la différence entre les groupes, même si vous avez beaucoup de flips. L'approximation de la courbe normale devient mauvaise, et la variance de chaque groupe n'est pas suffisamment différente pour conclure que quelque chose est, en fait, différent.
Jeremy

1

Pour acquérir une intuition supplémentaire, considérez ce qui suit:

Imaginez que vous ne fassiez qu'une seule répétition.

Dans ce cas, vous pouvez augmenter le nombre de lancers tout ce que vous voulez, mais cela ne ressemblera pas à une distribution normale. Et cela a du sens puisque votre histogramme n'aura qu'un seul pic.


La distribution normale est une approximation de la distribution de probabilité (de la distribution binomiale).

Vous n'avez pas créé cette distribution. Mais à la place, vous avez approximé cette distribution en utilisant un nombre limité (et petit) de simulations. (et ce que vous avez découvert, c'est que cette approximation empire lorsque vous augmentez le nombre de cases dans l'histogramme)


Vous avez donc tous deux besoin d'un nombre élevé de lancers et de répétitions.

  • lorsque le nombre de lancers est élevé, la distribution binomiale (lancers de pièces multiples) peut être approximée par une distribution normale.
  • lorsque le nombre de répétitions / simulations est élevé, l'histogramme de ces expériences se rapproche de la densité de la distribution binomiale.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.