Оцінка потужності тесту на нормальність (в R)


9

Я хочу оцінити точність тестів на нормальність для різних розмірів вибірки в R (я розумію, що тести на нормальність можуть бути оманливими ). Наприклад, щоб переглянути тест Шапіро-Вілка, я провожу наступне моделювання (а також графік результатів) і очікував би, що в міру збільшення розміру вибірки ймовірність відхилення нуля зменшується:

n <- 1000
pvalue_mat <- matrix(NA, ncol = 1, nrow = n)

for(i in 10:n){
    x1 <- rnorm(i, mean = 0, sd = 1)
    pvalue_mat[i,] <- shapiro.test(x1)$p.value
}   

plot(pvalue_mat)

Думаю, що у міру зростання кількості вибірки має бути менший коефіцієнт відхилення, однак це виглядає досить рівномірно. Я думаю, що я нерозумію це - будь-які думки вітаються.


2
Ви можете подивитися на: stats.stackexchange.com/questions/2492 / ...
NICO

Відповіді:


7

Ви моделюєте під нульовою гіпотезою (нормальний розподіл), тому швидкість відхилення буде тяжіти до рівня значущості, як очікувалося. Щоб оцінити потужність, вам потрібно імітувати за будь-якого ненормального розподілу. Існує нескінченна кількість можливостей / сценаріїв (наприклад, гамма-розподіли зі збільшенням косості, t-розподіл зі зменшенням df тощо) на вибір, залежно від обсягу вашого дослідження.


Дякуємо за відповідь. Коли я імітую над ненормальними розподілами, я спостерігаю випуклу картину щодо початку, тобто, коли розмір вибірки збільшується для будь-якого ненормального розподілу, збільшується ймовірність відхилення нуля нормальності. Однак я не розумію, чому це не обернено, коли виводиться з нормального розподілу: чому ймовірність відхилення нуля зменшується, коли розмір вибірки збільшується? Дякую
користувач94759

3
Оскільки ймовірність скоєння такої помилки типу-1 за визначенням дорівнює рівню значущості, який є постійним. Або по-іншому, значення p рівномірно розподіляються під нульовими. Btw, доцільно робити багато моделей за налаштування, включаючи вибір n, а не лише один, як у вашому коді.
Майкл М

7

Розуміння аналізу потужностей тестів статистичної гіпотези можна покращити, провівши їх і уважно ознайомившись з результатами.


За конструкцією тест на розмір αце призначене , щоб відкинути нульову гіпотезу з імовірністю , принаймні ,αколи нуль істинний (його очікувана помилкова позитивна швидкість ). Коли ми маємо можливість (або розкіш) вибирати серед альтернативних процедур з цим властивістю, ми віддамо перевагу тим, які (а) насправді наближаються до номінальної помилкової позитивної ставки та (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праворуч все більше і більше значень Р мало, що свідчить про те, що зростає сила дискримінації цих розподілів від нормального розподілу. (Потужність кількісно визначається в заголовку кожної ділянки: вона дорівнює частці площі гістограми, яка червона.)

  • У міру збільшення розміру вибірки від н=5 у верхньому ряду до н=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-зразків із заданого розподілу, один для застосування до масиву нульових розподілів, а третій для його застосування масив альтернативних розподілів. Це три кроки, які входять у будь-який аналіз потужності: решта - це просто узагальнення та інтерпретація результатів.


1

(Більше коментаря, можливо, не повної відповіді)

[I] очікував би, що зі збільшенням розміру вибірки ймовірність відхилення нуля зменшується

Залишаючи осторонь упереджених тестів (які не є рідкістю на користь, тому варто згадати), є три ситуації, пов’язані зі швидкістю відхилення, яку можна захотіти врахувати:

1) коефіцієнт відхилення при моделюванні з нуля (як ви, здається, робите у своєму запитанні)

Тут коефіцієнт відхилення повинен бути на рівні значущості або поблизу, тому ні, якщо ви тримаєте рівень значущості постійним, швидкість відхилення не зменшується в міру збільшення n , а залишається в / поблизуα.

2) швидкість відхилення при моделюванні з якоїсь альтернативи

Тут швидкість відхилення повинна зростати зі збільшенням n .

3) коефіцієнт відхилення для деякого збору реальних даних

Практично, нуль ніколи насправді не відповідає дійсності, і реальні дані матимуть певну суміш кількостей ненормальності (як це вимірюється статистикою тесту). Якщо ступінь ненормальності не пов’язана з розміром вибірки, швидкість відхилення повинна зростати в міру збільшення n .

Тож насправді в жодній із цих ситуацій ми не можемо спостерігати зменшення швидкості відхилення із розміром вибірки.

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