Чому збільшення розміру вибірки монети не поліпшує нормальне наближення кривої?


19

Я читаю книгу " Статистика" (Фріман, Пісані, Первес) і намагаюся відтворити приклад, коли монета кидається, скажімо, 50 разів, кількість підрахованих голів, і це повторюється, скажімо, 1000 разів.

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

  2. Тож далі я спробував утримати кількість повторень фіксованою на 1000 і збільшив розмір вибірки. Чим більший розмір вибірки, тим гіршим було те, що нормально вигнута нормально відповідала даним. Це, здається, суперечить прикладу книги, який краще наближає нормальну криву зі збільшенням розміру вибірки.

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


Ах, має сенс. Встановивши кількість бункерів до 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

Для отримання додаткової інтуїції врахуйте наступне:

Уявіть, що ви робите лише одне повторення.

У такому випадку ви можете збільшити кількість кидків усіх бажаючих, але це не буде нагадувати звичайний розподіл. І це має сенс, оскільки у вашої гістограми буде лише один пік.


Нормальний розподіл - це наближення для розподілу ймовірностей (біноміального розподілу).

Що ви робили, це не створити цей дистрибутив. Але замість цього ви наблизили цей розподіл, використовуючи обмежену (і малу) кількість моделювання. (і ви виявили, що це наближення стає гіршим, коли ви збільшуєте кількість бункерів у гістограмі)


Тож вам обом потрібна велика кількість кидків і повторів.

  • коли кількість кидків велика, то біноміальне розподіл (декілька кидків монет) може бути наближене до нормального розподілу.
  • коли кількість повторів / симуляцій велика, ніж гістограма цих експериментів наближає до щільності біноміального розподілу.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.