Розуміння аналізу потужностей тестів статистичної гіпотези можна покращити, провівши їх і уважно ознайомившись з результатами.
За конструкцією тест на розмір αце призначене , щоб відкинути нульову гіпотезу з імовірністю , принаймні ,αколи нуль істинний (його очікувана помилкова позитивна швидкість ). Коли ми маємо можливість (або розкіш) вибирати серед альтернативних процедур з цим властивістю, ми віддамо перевагу тим, які (а) насправді наближаються до номінальної помилкової позитивної ставки та (b) мають відносно більші шанси відхилити нульову гіпотезу, коли вона є неправда.
Другий критерій вимагає від нас визначити, яким способом (іми) і наскільки нуль не відповідає дійсності. У підручниках це легко, оскільки альтернативи обмежені за обсягом і чітко визначені. З такими тестами на розповсюдження, як Shapiro-Wilk, альтернатива набагато розпливчастіша: вони "ненормальні". Вибираючи серед тестів розподілу, тоді, ймовірно, аналітику доведеться провести власне одноразове дослідження потужності, щоб оцінити, наскільки добре працюють тести проти більш конкретних альтернативних гіпотез, які викликають занепокоєння у існуючої проблеми.
Приклад, мотивований відповіддю Майкла Майєра, стверджує, що альтернативний розподіл може мати якості, подібні до сімейства розповсюджень студентів Student t. Це сімейство, параметризоване числомν≥ 1 (а також за місцем розташування та масштабом) включає в межах великих ν Нормальні розподіли.
В будь-якій ситуації - незалежно від того, оцінюючи фактичний розмір тесту чи його потужність - ми повинні генерувати незалежні вибірки із визначеного розподілу, провести тест на кожному зразку та знайти швидкість, з якою він відкидає нульову гіпотезу. Однак у будь-якому результаті тесту є більше інформації: його P-значення. Зберігаючи набір P-значень, отриманих під час такого моделювання, ми можемо згодом оцінити швидкість, з якою тест відкине нуль для будь-якого значенняαнас може хвилювати. Серцем аналізу потужності є підпрограма, яка генерує цей розподіл значень Р (або шляхом моделювання, як тільки було описано, або - зрідка - з теоретичною формулою). Ось приклад, закодований у R
. Його аргументи включають
rdist
, назва функції для отримання випадкової вибірки з деякого розподілу
n
, розмір зразків на запит rdist
n.iter
, кількість таких зразків для отримання
...
, будь-які необов'язкові параметри, які слід передати rdist
(наприклад, ступеня свободи)ν).
Решта параметрів контролюють відображення результатів; вони включаються головним чином як зручність для створення фігур у цій відповіді.
sim <- function(rdist, n, n.iter, prefix="",
breaks=seq(0, 1, length.out=20), alpha=0.05,
plot=TRUE, ...) {
# The simulated P-values.
# NB: The optional arguments "..." are passed to `rdist` to specify
# its parameters (if any).
x <- apply(matrix(rdist(n*n.iter, ...), ncol=n.iter), 2,
function(y) shapiro.test(y)$p.value)
# The histogram of P-values, if requested.
if (plot) {
power <- mean(x <= alpha)
round.n <- 1+ceiling(log(1 + n.iter * power * (1-power), base=10) / 2)
hist(x[x <= max(breaks)], xlab=paste("P value (n=", n, ")", sep=""),
breaks=breaks,
main=paste(prefix, "(power=", format(power, digits=round.n), ")", sep=""))
# Specially color the "significant" part of the histogram
hist(x[x <= alpha], breaks=breaks, col="#e0404080", add=TRUE)
}
# Return the array of P-values for any further processing.
return(x)
}
Ви можете бачити, що обчислення фактично займає лише один рядок; решта коду побудує гістограму. Для ілюстрації, давайте використовувати його для обчислення очікуваних помилкових позитивних показників. "Норми" є в множині, оскільки властивості тесту зазвичай змінюються залежно від розміру вибірки. Оскільки добре відомо, що дистрибуційні тести мають високу потужність щодо якісно малих альтернативних варіантів, коли розміри вибірки великі, це дослідження зосереджується на діапазоні невеликих розмірів вибірки, де такі тести часто застосовуються на практиці: зазвичай про5 до 100. Для економії часу на обчислення я звітую лише про значення н з 5 до 20.
n.iter <- 10^5 # Number of samples to generate
n.spec <- c(5, 10, 20) # Sample sizes to study
par(mfrow=c(1,length(n.spec))) # Organize subsequent plots into a tableau
system.time(
invisible(sapply(n.spec, function(n) sim(rnorm, n, n.iter, prefix="DF = Inf ")))
)
Після зазначення параметрів цей код також є лише одним рядком. Це дає такий вихід:
Це очікувана поява: гістограми показують майже рівномірний розподіл P-значень по всьому діапазону від0 до 1. З номінальним розміром, встановленим наα = 0,05 , звіт про імітацію між .0481 і 0,0499P-значень насправді були меншими за цей поріг: це результати, виділені червоним кольором. Близькість цих частот до номінальної величини свідчить про те, що тест Шапіро-Вілка виконує так, як рекламується.
(Здається, існує тенденція до незвично високої частоти Р-значень поблизу 1. Це не викликає занепокоєння, оскільки майже у всіх програмах є єдиними P-значеннями, на які дивляться0,2 або менш.)
Перейдемо тепер до оцінки влади. Повний діапазон значеньν для розподілу Student t можна адекватно вивчити, оцінивши кілька примірників з усієї сторони ν= 100 аж до ν= 1. Звідки я це знаю? Я виконував кілька попередніх пробіжок, використовуючи дуже малу кількість ітерацій (від100 до 1000), що зовсім не займає часу. Код тепер вимагає подвійного циклу (і в більш складних ситуаціях нам часто потрібні потрійні або чотириразові петлі, щоб вмістити всі аспекти, які нам потрібно змінювати): один для вивчення того, як змінюється потужність залежно від розміру вибірки, а інший для вивчення того, як вона змінюється в залежності від ступеня свободи. Знову ж таки, все робиться лише в одному рядку коду (третьому та остаточному):
df.spec <- c(64, 16, 4, 2, 1)
par(mfrow=c(length(n.spec), length(df.spec)))
for (n in n.spec)
for (df in df.spec)
tmp <- sim(rt, n, n.iter, prefix=paste("DF =", df, ""), df=df)
Невелике вивчення цієї таблиці дає добру інтуїцію щодо влади. Я хотів би звернути увагу на його найяскравіші та корисні аспекти:
У міру зменшення ступеня свободи від ν= 64 зліва до ν= 1праворуч все більше і більше значень Р мало, що свідчить про те, що зростає сила дискримінації цих розподілів від нормального розподілу. (Потужність кількісно визначається в заголовку кожної ділянки: вона дорівнює частці площі гістограми, яка червона.)
У міру збільшення розміру вибірки від n = 5 у верхньому ряду до n = 20 знизу потужність також збільшується.
Зверніть увагу, як альтернативний розподіл відрізняється більше від нульового розподілу, а розмір вибірки збільшується, P-значення починають збирати зліва, але все ж "хвіст" з них тягнеться аж до 1. Це характерно для силових досліджень. Це показує, що тестування - це азартна гра : навіть коли нулева гіпотеза грубо порушена і навіть коли розмір вибірки досить великий, наш офіційний тест може не дати значного результату.
Навіть у крайньому випадку справа внизу, де є зразок 20 виводиться з розподілу Student t за допомогою 1 ступінь свободи (розподіл Коші), влада - ні 1: є 100 - 86,57 = 13 % шанс, що зразок 20 iid змінних Коші не вважатиметься суттєво відмінними від нормальних на рівні 5 % (тобто с 95 % впевненість).
Ми могли б оцінити потужність за будь-якого значення αми вибираємо, фарбуючи більшу чи меншу кількість смужок на цих гістограмах. Наприклад, для оцінки потужності наα = 0,10, пофарбуйте ліворуч по дві смуги на кожній гістограмі та оцініть її площу як частку від загальної кількості.
(Це не буде надто добре для значень α менший за 0,05з цією цифрою. На практиці можна обмежувати гістограми значеннями P лише в діапазоні, який би використовувався, можливо, з0 до 20 %, і показати їх досить детально, щоб візуально оцінити потужність до α = 0,01 або навіть α = 0,005. (Саме для цього є breaks
можливість sim
.) Післяобробка результатів моделювання може надати ще більше деталей.)
Забавно, що стільки можна отримати з того, що, по суті, становить три рядки коду: один для імітації iid-зразків із заданого розподілу, один для застосування до масиву нульових розподілів, а третій для його застосування масив альтернативних розподілів. Це три кроки, які входять у будь-який аналіз потужності: решта - це просто узагальнення та інтерпретація результатів.