私は統計(Freeman、Pisani、Purves)の本を読んでいます。コインを50回投げ、頭の数を数え、これを1,000回繰り返した例を再現しようとしています。
最初に、トスの数(サンプルサイズ)を1000に保ち、繰り返し回数を増やしました。繰り返しが多いほど、データは標準曲線によく適合します。
そこで次に、繰り返し回数を1,000に固定して、サンプルサイズを増やしてみました。サンプルサイズが大きいほど、最悪の法線はデータに適合しているように見えます。これは、サンプルサイズが増加するにつれて正常曲線をよりよく近似する本の例と矛盾しているようです。
サンプルサイズを増やした場合にどうなるかを確認したかったのですが、10,000回に修正された反復回数が増えました。これは本とも矛盾しているようです。
私が間違っていることは何ですか?
以下のコードとグラフ。
%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.繰り返し回数を増やして実験します(固定サンプルサイズ1000)
plot_hist(1000, 1000)
plot_hist(10000, 1000)
plot_hist(100000, 1000)
2.サンプルサイズを増やして実験します(1000回の繰り返しで修正)
plot_hist(1000, 100)
plot_hist(1000, 1000)
plot_hist(1000, 10000)
3.サンプルサイズを増やして実験します(10,000回の繰り返しで修正)
plot_hist(10000, 100)
plot_hist(10000, 1000)
plot_hist(10000, 10000)
plot_hist(10000, 100000)