Я читаю книгу Статистика (Freeman, Pisani, Purves) и пытаюсь воспроизвести пример, когда монету подбрасывают, скажем, 50 раз, подсчитывают количество голов, и это повторяется, скажем, 1000 раз.
Во-первых, я сохранил количество бросков (размер выборки) на 1000 и увеличил количество повторений. Чем больше повторений, тем лучше данные соответствуют нормальной кривой.
Итак, затем я попытался сохранить количество повторений фиксированным на 1000 и увеличил размер выборки. Чем больше размер выборки, тем хуже, казалось, что нормальная кривая соответствует данным. Это, кажется, противоречит книжному примеру, который лучше приближается к нормальной кривой при увеличении размера выборки.
Я хотел посмотреть, что произойдет, если я увеличу размер выборки, но с большим количеством повторений, которые были зафиксированы на 10000. Это, кажется, также противоречит книге.
Есть идеи, что я делаю не так?
Код и графики ниже.
%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. Поэкспериментируйте с увеличением размера выборки (зафиксировано 10000 повторений)
plot_hist(10000, 100)
plot_hist(10000, 1000)
plot_hist(10000, 10000)
plot_hist(10000, 100000)
Ответы:
Во втором случае, увеличивая количество бросков, вы увеличиваете количество корзин, в которые может попасть одна пробная версия. Хотя в первом случае эксперимента 2 может быть заполнено не более 100 ячеек, в последнем примере - 10000 ячеек. Вы увеличили «разрешение» своего эксперимента в 100 раз (т. Е. Один бин в вашем первом эксперименте теперь представлен примерно 100 в вашем втором). Конечно, это означает, что вы ожидаете, что вам потребуется в 100 раз больше данных для заполнения ваших бункеров.
источник
_ = ax.hist(sums, bins=35, edgecolor='black', linewidth=1.2, density=True)
), третий эксперимент теперь приближается к нормальной кривой.Вы можете думать об отдельном броске монеты как о независимом испытании Бернулли. Одно испытание даст вам либо головы / хвосты, либо успех / неудачу соответственно. Если вы повторите это, скажем, 100 000 раз, среднее число головок будет очень близко к 0,5, если монета справедлива.
Теперь, если вы увеличите количество попыток до 1000 и сохраните повторение равным 1, вы получите последовательность из 1000 успехов / неудач и не сможете много сказать о вероятности наблюдения в среднем 500 голов, если вы не увеличите количество повторений для каждое из этих независимых испытаний. По мере увеличения числа повторений вы будете все лучше и лучше приближаться к нормальному распределению.
Для меня легче воспринимать испытания не как «броски» или «размеры выборки», а вместо отдельных монет и повторений, как количество подбрасываний каждой из этих монет. Тогда также становится интуитивно понятным, что при увеличении количества монет (или проб) при сохранении общего количества повторений (или переворотов) приближение данных к нормальному распределению ухудшается.
источник
Я думаю, что другие ответы здесь великолепны, но я хотел добавить ответ, который распространяется на другой статистический инструмент.
Вы начинаете с базовой линии, которая, по вашему мнению, должна аппроксимировать нормальную кривую, а затем идете оттуда, чтобы посмотреть, сможете ли вы лучше аппроксимировать нормальную кривую. Попробуйте пойти в другом направлении и посмотрите, что вы можете сделать, чтобы приблизиться к худшей работе. Попробуйте симуляции, где у вас есть 10 сальто и 1000 повторений. Сравните это с симуляциями, где у вас есть 1000 сальто и 10 повторений. Должно быть понятно, что первый случай имеет лучшее приближение.
Расширение, которое я хочу сделать, - ANOVA (анализ отклонений). Вы видите много новых исследователей данных, которые плохо разбираются в этой проблеме, и проектируют свои исследования так, чтобы у них было много переворотов, но мало повторений. У них много данных, но они говорят меньше, чем хотели бы. Как измерение каждого листа на дереве, но только с двумя деревьями. Мы можем сказать немного о листьях на этих двух деревьях, но не о листьях на деревьях в целом. Тебе было бы лучше получить намного меньший образец листьев и много деревьев.
источник
Чтобы получить дополнительную интуицию, подумайте о следующем:
Представьте, что вы делаете только одно повторение.
В этом случае вы можете увеличить количество бросков, сколько хотите, но это не будет похоже на нормальное распределение. И это имеет смысл, поскольку ваша гистограмма будет иметь только один пик.
Нормальное распределение является приближением для распределения вероятности (биномиального распределения).
То, что вы сделали, не создавало этот дистрибутив. Но вместо этого вы приблизили это распределение, используя ограниченное (и небольшое) количество симуляций. (и вы обнаружили, что это приближение становится хуже, когда вы увеличиваете количество бинов в гистограмме)
Таким образом, вам обоим нужно большое количество бросков и повторений.
источник