![]() |
||||
|
← |
Д. Шабанов, М. Кравченко. «Статистичний оракул»: аналіз даних в зоології та екології |
→ |
||
|
Описові статистики та розподіли; порівняння розподілів |
||||
|
«Статистичний оракул»-07 |
«Статистичний оракул»-09 |
|||
|
8.1 Описові статистики (у стані розробки) |
||||
Тема 8 Описові статистики та розподіли; порівняння розподілів
8.1 Описові статистики
(у стані розробки)
8.2 Деякі важливі розподіли
(у стані розробки)
8.3 Тести на нормальність
(у стані розробки)
8.4 Тест χ ² Пірсона
(у стані розробки)
8.5 Історичний анекдот: чаювання Фішера та Бристоль
Випадок, що зіграв неабияку роль у формуванні статистичного мислення, відбувся у 1919 році на агробіологічній станції, яка була розташована північніше Лондона та вивчала вплив добрив на врожайність. Там почав працювати молодий, амбіційний та насправді геніальний біолог-математик Рональд Фішер (рис. 8.5.1). Під час традиційного чаювання Фішер запропонував своїй колезі, альгологу Мюріель Бристоль, яка була справжньою англійською леді, чашку чаю, до якого він додав молока. Слід вказати, що серед англійських аристократів тривали суперечки, як готувати чай з молоком: спочатку наливати молоко, а потім в нього — чай, чи навпаки додавати молоко до вже налитого в чашку чаю. Фішер спочатку налив чай; леді відмовилася пити такий напій, пояснивши, що додавання молока до чаю псує його смак. Фішер намагався переконати колегу, що смак напою залежить лише від співвідношення кількостей компонентів. Втім, леді стверджувала, що впізнає на смак, у якому порядку в чашку додавалися чай та молоко. Ще один колега (якій пізніше став чоловіком пані Мюріель) запропонував експериментальну перевірку. Усі з цим погодилися.

Рис. 8.5.1 Молодий Рональд Фішер та Мюріель Бристоль (джерело)
Експеримент мав встановити, чи може леді за смаком напою впізнати, в якому порядку у чашку додавалися чай та молоко. Обговорення цього експерименту з часом надало можливості для Фішера сформулювати вимоги до подібних досліджень: порівняння (варіантів, що чітко вирізняються), рандомізація (випадкова послідовність спроб); реплікація (достатня кількість повторів); замінність (усі досліджувані об’єкти мають бути однаковими, за виключенням тієї характеристики, вплив яких досліджується) та блокування (якщо на результат впливають інші чинники, варіанти, що за ними вирізняються, мають об’єднуватися у окремі групи, блоки). Розглянемо, чому Фішер та Бристоль обрали саме такий варіант дослідження.
Чи можна було б запропонувати леді одну чашку, приготовану певним чином, і попросити її визначити, чи є цей напій смачним? Звісно, однак ніяких висновків на цьому досліді зробити було б неможливо. На смак чаю впливає якість води, чайного листя, молока і навіть настрій людини, що його п’є. У нашому випадку леді мала куштувати чай, що відрізняється лише за порядком додавання компонентів. Таким чином, дослідження має ґрунтуватися на порівнянні об’єктів, що відрізняються лише за досліджуваним фактором. Усі чашки готувалися однаково, і вирізнялися вони лише за порядком додавання компонентів напою у чашку. Це можливо лише у керованому досліді, де дослідник визначає всі характеристики, що можуть впливати на результат. Саме такий експеримент можна стандартизувати та забезпечити його відтворюваність (можливість повторити його за описом і підтвердити або спростувати результати).
Чи можна було готувати чай з молоком на очах у леді? Ні, і справа не в тому, що Фішер не довіряв колезі. Якщо на очах у справжньої леді додати молоко до чаю, вона неодмінно скаже, що отриманий напій пити неможливо — саме тому, що вона впевнена, що такий чай буде несмачним, і її органи чуття підтвердять ці сподівання. Наше сприйняття відбувається за допомогою наших пізнавальних моделей; модель приготування смачного чаю у Мюріель Бристоль була цілком визначеною. Леді мала куштувати напої, не знаючи, як вони готувалися. Це — вимога сліпого експерименту.
Чи можна обійтися однією-двома чашками? Ні. Леді може випадково вгадати, де смак правильний, а де — ні. Потрібна певна кількість повторів. Чи може ця кількість бути дуже великою (наприклад, десятки та сотні чашок)? Ні, у такому разі леді втомиться, у неї притупиться смак. Кількість має бути такою, щоб дати можливість зробити певний висновок, але — не занадто великою.
У якому порядку подавати леді чай з молоком та молоко з чаєм? Спочатку кілька чашок з «правильною» послідовністю, а потім — кілька з «неправильною», або навпаки чи впорядковано за чергою? Експеримент буде по-справжньому сліпим, якщо буде виконано певну кількість спроб, послідовність у якій неможливо відгадати. Як встановити цей порядок? Шляхом рандомізації, тобто випадкового вибору.
Рональд Фішер приготував 8 чашок: 4 де спершу додавався чай, і 4 — де попереду у чашку потрапило молоко. Він подавав їх Мюріель Бристоль у випадковому порядку, який визначав жереб. Леді не знала, що саме вона куштувала.
Леді Бристоль правильно визначила, як готувався чай з молоком і довела свою правоту. За якими ознаками вона це робила, невідомо. Сер Фішер (титул сера він отримав пізніше за свої видатні наукові досягнення) використав цей випадок як підставу для важливих висновків.
8.6 Чи довела леді Бристоль своє твердження?
Леді Бристоль отримала чотири чашки, куди спочатку було налито чай, та чотири, де починали з молока. У чотирьох випадках вона сказала, що починали з чаю, у чотирьох — з молока. Результати показані в таблиці 8.6.1.
Таблиця 8.6.1 Результати чаювання Рональда Фішера та Мюріель Бристоль
| Визначено: спочатку чай | Визначено: спочатку молоко | Усього | |
| Приготовано: спочатку чай | 4 | 0 | 4 |
| Приготовано: спочатку молоко | 0 | 4 | 4 |
| Усього | 4 | 4 | 8 |
Кількості чашок, що приготовані або визначені так або інакше показані у стовпцю та рядку таблиці, що підписані «усього» і мають назву крайових сум.
Нульова гіпотеза у даному дослідженні полягає в тому, що всі чашки напою однакові на смак і визначення відбувається випадково. У такому разі будь-який розподіл результатів по чотирьох комірках, за якого крайові суми будуть незмінними (приготовано 4 та 4 чашок, визначено 4 та 4 чашок) є однаково ймовірними. Ось як, наприклад, виглядали б результати, якби леді помилилася один раз (табл 8.6.2).
Таблиця 8.6.2 Якби леді Бристоль помилилася один раз, результати були б такими
| Визначено: спочатку чай | Визначено: спочатку молоко | Усього | |
| Приготовано: спочатку чай | 3 | 1 | 4 |
| Приготовано: спочатку молоко | 1 | 3 | 4 |
| Усього | 4 | 4 | 8 |
Скільки є варіантів розподілити 8 об’єктів по 4 комірках, щоб крайові суми були незмінні? Порахуємо, скільки є способів отримати такий результат, коли правильних визначень стільки, скільки в показаній у другій таблиці гіпотетичному варіанті (правильно вгадано по три чашки). Леді правильно визначила три чашки, де був спочатку чай, та помилилася або у першому, або у другому, або у третьому, або у четвертому випадку. Крім того, вона мала (щоб зберігалися крайові суми) один раз (також або у першому, або у другому, або у третьому, або у четвертому випадку) при визначенні чашки де спочатку було молоко. Таких варіантів можливо 4×4=16. Стільки ж варіантів відповідають випадку, коли правильно вгадано по одній чашці. А варіантів, коли правильно вгадано по 2 чашки у кожній категорії загалом 6×6=36. Звісно, є ще по 1 варіанту, де леді правильно вгадала усі чашки та де вона не вгадала жодної.
Таким чином, існує 1+16+36+16+1=70 варіантів заповнення побудованої нами таблиці зі збереженням крайових сум. З цих варіантів лише один, за якого вгадані усі чашки. Таким чином, його ймовірність 1/70=0,014286, орієнтовно — 1,5%. Це — відносно невелика ймовірність, і наполягати на тому, що нульова гіпотеза є правильною — розраховувати на рідкісний перебіг подій. Таким чином, Мюріель Бристоль вміла розпізнавати порядок додавання компонентів при приготуванні чаю з молоком….
8.7 Точний тест Фішера в R
Використаємо для аналізу результатів обговорюваного експерименту засоби R. Створимо матрицю R, яка відбиває результати експерименту Фішера-Бристоль, та використаємо для неї стандартну функцію, що виконує точний тест Фішера. Створимо матрицю R, яка відбиває результати експерименту Фішера-Бристоль, та використаємо для неї стандартну функцію, що виконує точний тест Фішера.
Bristol <- matrix(c(4, 0, 0, 4), nrow = 2, ncol = 2, dimnames = list(c("Prepared: milk", "Prepared: tea"), c("Defined: milk", "Defined: tea")))
fisher.test(Bristol)
##
## Fisher's Exact Test for Count Data
##
## data: Bristol
## p-value = 0.02857
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
## 1.339059 Inf
## sample estimates:
## odds ratio
## InfЧому p=0.028, а не 0.014, як у наших розрахунках? Функція fisher.test() за умовчанням розраховує двобічний критерій — шукає варіанти, що відхиляються від математичного очікування так само (або сильніше) ніж зареєстрований. Варіант «усі чашки вгадані» відрізняється від математичного очікування так само, як варіант «жодна чашка не вгадана». У такому разі p є вдвічі більшим (2/70, а не 1/70).
Як вказати, що треба використовувати однобічний критерій? У функції fisher.test() є параметр alternative, який може набувати трьох значень. “two.sided” — варіант за замовчуванням, що перевіряє будь-яке відхилення від математичного очікування. “greater” — однобічний тест (таке саме, або ще більше саме у той бік, у який результат відхиляється від очікування). “less” — перевірка, чи не є результат гіршим, ніж випадковий. Зрозуміло, нам потрібно другий варіант цього аргументу.
fisher.test(Bristol, alternative = "greater")
##
## Fisher's Exact Test for Count Data
##
## data: Bristol
## p-value = 0.01429
## alternative hypothesis: true odds ratio is greater than 1
## 95 percent confidence interval:
## 2.003768 Inf
## sample estimates:
## odds ratio
## InfЗробимо ще одну зміну. Виведемо на друк не усі розрахунки, а виключно значення p. Справа у тому, що результат виконання тесту (як у більшості випадків в R) — це об’єкт типу list, і для нього можна виконати індексацію.
fisher.test(Bristol, alternative = "greater")$p.value
## [1] 0.01428571Спробуємо використати функцію fisher.test() для інших даних, наприклад, бази даних по різноманіттю жаб. Звісно, шлях до розташування цієї бази у кожного користувача буде своїм.
load("~/data/BioStat_Course/PelophylaxExamples.RData")
attach(PE)
table(Genotyp, Basin)
## Basin
## Genotyp Dnipro Don
## LL 5 0
## LLR 0 11
## LR 2 12
## LRR 0 13
## RR 2 12
fisher.test(table(Genotyp, Basin))
##
## Fisher's Exact Test for Count Data
##
## data: table(Genotyp, Basin)
## p-value = 1.344e-05
## alternative hypothesis: two.sidedРезультат тут показано у експоненційній формі запису, що достатньо часто використовується у науці та програмуванні: множник з одним знаком до десяткового роздільника та певний ступень числа 10. Літера «e» тут означає «помножити на десять у степені…». 1.344e-05 = 1.344×10^-5. Щоб отримати результат у звичній формі, треба «відстрибати» десятковим роздільником на 5 кроків вліво: 1.344e-05 = 0.00001344.
А що буде, якщо варіантів заповнення таблиці дуже багато і їх повний прорахунок вимагає дуже великих потужностей? Створимо якусь штучну матрицю, що є більшою ніж ті, які ми використовували раніше.
GreatTable <- table(Genotyp, Basin)*10
GreatTable
## Basin
## Genotyp Dnipro Don
## LL 50 0
## LLR 0 110
## LR 20 120
## LRR 0 130
## RR 20 120Чи можна використати для цієї таблиці точний тест Фішера?
# fisher.test(GreatTable)При спробі виконати наведену команду (вона тут «закоментована», закрита від виконання) R повідомляє про помилку:
Error in fisher.test():
! FEXACT error 7(location). LDSTP=18570 is too small for this problem,
(pastp=90.631, ipn_0:=ipoin[itp=35]=329, stp[ipn_0]=85.3791).
Increase workspace or consider using ‘simulate.p.value=TRUE’
Сенс цього повідомлення наступний. Повний перебір вимагає дуже багато ресурсів. Краще використовувати імітаційне моделювання (simulation): випадково розкидати об’єкти по комірках (зі збереженням крайових сум) певну кількість разів, припустимо, 10000. Далі можна порахувати, яка кількість з цих варіантів відповідає тому, який був отриманий в результаті дослідження.
Використаємо атрибут, який вмикає процедуру імітаційного моделювання, та зазначимо певну кількість повторів (ітерацій), що позначається B.
fisher.test(GreatTable, simulate.p.value = TRUE, B = 20000)
##
## Fisher's Exact Test for Count Data with simulated p-value (based on
## 20000 replicates)
##
## data: GreatTable
## p-value = 5e-05
## alternative hypothesis: two.sidedНе забувайте: у даному випадку ми працювали з фабрикованими даними!
