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.
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.
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.
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)
plot_hist(10000, 1000)
plot_hist(100000, 1000)
2. Expérience avec l'augmentation de la taille de l'échantillon (fixée à 1000 répétitions)
plot_hist(1000, 100)
plot_hist(1000, 1000)
plot_hist(1000, 10000)
3. Expérience avec l'augmentation de la taille de l'échantillon (fixée à 10 000 répétitions)
plot_hist(10000, 100)
plot_hist(10000, 1000)
plot_hist(10000, 10000)
plot_hist(10000, 100000)
Réponses:
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.
la source
_ = ax.hist(sums, bins=35, edgecolor='black', linewidth=1.2, density=True)
), la troisième expérience se rapproche maintenant de la courbe normale.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.
la source
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.
la source
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.
la source