Почему увеличение размера образца бросков монеты не улучшает приближение нормальной кривой?

19

Я читаю книгу Статистика (Freeman, Pisani, Purves) и пытаюсь воспроизвести пример, когда монету подбрасывают, скажем, 50 раз, подсчитывают количество голов, и это повторяется, скажем, 1000 раз.

  1. Во-первых, я сохранил количество бросков (размер выборки) на 1000 и увеличил количество повторений. Чем больше повторений, тем лучше данные соответствуют нормальной кривой.

  2. Итак, затем я попытался сохранить количество повторений фиксированным на 1000 и увеличил размер выборки. Чем больше размер выборки, тем хуже, казалось, что нормальная кривая соответствует данным. Это, кажется, противоречит книжному примеру, который лучше приближается к нормальной кривой при увеличении размера выборки.

  3. Я хотел посмотреть, что произойдет, если я увеличу размер выборки, но с большим количеством повторений, которые были зафиксированы на 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)

введите описание изображения здесь

Крис Сноу
источник
9
Вам нужен лучший гистограммный плоттер - он особенно плох и создает артефакты. Еще лучше сравнить распределения с вероятностным графиком, а не гистограммой.
whuber
1
Это полезно знать и расширило мои знания сегодня. Благодарность!
Крис Сноу
3
«Повторения» - это ваш «размер выборки», а не броски. Увеличение количества бросков - это нечто иное
Марс
1
Извините, я думал и думал, и думал, но не могу с термином для этого! Но независимо от количества бросков, в конце концов, он дает вам 1 номер (количество голов). Это дает вам 1 образец.
Марс
1
Я разместил новый вопрос, посвященный только терминологии: stats.stackexchange.com/questions/389892/…
Крис Сноу,

Ответы:

27

Во втором случае, увеличивая количество бросков, вы увеличиваете количество корзин, в которые может попасть одна пробная версия. Хотя в первом случае эксперимента 2 может быть заполнено не более 100 ячеек, в последнем примере - 10000 ячеек. Вы увеличили «разрешение» своего эксперимента в 100 раз (т. Е. Один бин в вашем первом эксперименте теперь представлен примерно 100 в вашем втором). Конечно, это означает, что вы ожидаете, что вам потребуется в 100 раз больше данных для заполнения ваших бункеров.

Ulfgard
источник
Ах, имеет смысл. Установив количество бинов на 35 ( _ = ax.hist(sums, bins=35, edgecolor='black', linewidth=1.2, density=True)), третий эксперимент теперь приближается к нормальной кривой.
Крис Сноу
5

Вы можете думать об отдельном броске монеты как о независимом испытании Бернулли. Одно испытание даст вам либо головы / хвосты, либо успех / неудачу соответственно. Если вы повторите это, скажем, 100 000 раз, среднее число головок будет очень близко к 0,5, если монета справедлива.

Теперь, если вы увеличите количество попыток до 1000 и сохраните повторение равным 1, вы получите последовательность из 1000 успехов / неудач и не сможете много сказать о вероятности наблюдения в среднем 500 голов, если вы не увеличите количество повторений для каждое из этих независимых испытаний. По мере увеличения числа повторений вы будете все лучше и лучше приближаться к нормальному распределению.

Для меня легче воспринимать испытания не как «броски» или «размеры выборки», а вместо отдельных монет и повторений, как количество подбрасываний каждой из этих монет. Тогда также становится интуитивно понятным, что при увеличении количества монет (или проб) при сохранении общего количества повторений (или переворотов) приближение данных к нормальному распределению ухудшается.

Стефан
источник
2

Я думаю, что другие ответы здесь великолепны, но я хотел добавить ответ, который распространяется на другой статистический инструмент.

Вы начинаете с базовой линии, которая, по вашему мнению, должна аппроксимировать нормальную кривую, а затем идете оттуда, чтобы посмотреть, сможете ли вы лучше аппроксимировать нормальную кривую. Попробуйте пойти в другом направлении и посмотрите, что вы можете сделать, чтобы приблизиться к худшей работе. Попробуйте симуляции, где у вас есть 10 сальто и 1000 повторений. Сравните это с симуляциями, где у вас есть 1000 сальто и 10 повторений. Должно быть понятно, что первый случай имеет лучшее приближение.

Расширение, которое я хочу сделать, - ANOVA (анализ отклонений). Вы видите много новых исследователей данных, которые плохо разбираются в этой проблеме, и проектируют свои исследования так, чтобы у них было много переворотов, но мало повторений. У них много данных, но они говорят меньше, чем хотели бы. Как измерение каждого листа на дереве, но только с двумя деревьями. Мы можем сказать немного о листьях на этих двух деревьях, но не о листьях на деревьях в целом. Тебе было бы лучше получить намного меньший образец листьев и много деревьев.

Джереми
источник
Спасибо за ответ. Не могли бы вы уточнить, как ANOVA можно использовать в этом контексте?
Крис Сноу
1
@ChrisSnow ANOVA - это перспектива в линейной регрессии, которая фокусируется на том, отличаются ли различные группы на самом деле, рассматривая дисперсию (отсюда и название). Связь заключается в том, что при слишком малом количестве повторений вы не сможете определить разницу между группами, даже если у вас много сальто. Аппроксимация к нормальной кривой становится плохой, и дисперсия каждой группы не достаточно различна, чтобы сделать вывод, что на самом деле все по-другому.
Джереми
1

Чтобы получить дополнительную интуицию, подумайте о следующем:

Представьте, что вы делаете только одно повторение.

В этом случае вы можете увеличить количество бросков, сколько хотите, но это не будет похоже на нормальное распределение. И это имеет смысл, поскольку ваша гистограмма будет иметь только один пик.


Нормальное распределение является приближением для распределения вероятности (биномиального распределения).

То, что вы сделали, не создавало этот дистрибутив. Но вместо этого вы приблизили это распределение, используя ограниченное (и небольшое) количество симуляций. (и вы обнаружили, что это приближение становится хуже, когда вы увеличиваете количество бинов в гистограмме)


Таким образом, вам обоим нужно большое количество бросков и повторений.

  • когда число бросков велико, тогда биномиальное распределение (множественные броски монеты) может быть аппроксимировано нормальным распределением.
  • когда количество повторений / симуляций велико, гистограмма этих экспериментов приближается к плотности биномиального распределения.
Секст Эмпирик
источник