Чому збір даних до отримання значного результату збільшує рівень помилок типу I?


60

Мені було цікаво, чому саме збір даних до отримання значного результату (наприклад, ) (тобто p-хакерство) збільшує рівень помилок типу I?p<.05

Я також дуже вдячний за Rдемонстрацію цього явища.


6
Ви, мабуть, маєте на увазі "хакерство", тому що "хакінг" посилається на "Гіпотезування після того, як результати відомі", і, хоча це можна вважати супутнім гріхом, ви, здається, не запитуєте.
whuber

2
Ще раз xkcd відповідає на гарне запитання із зображеннями. xkcd.com/882
Джейсон

7
@Jason Я не погоджуюся з вашим посиланням; це не говорить про накопичувальний збір даних. Той факт, що навіть сукупний збір даних про одне і те ж і використання всіх даних, які ви повинні обчислити, -значення невірно, є набагато нетривіальним, ніж у випадку xkcd. p
JiK

1
@JiK, чесний дзвінок. Я був зосереджений на аспекті "продовжуйте намагатися, поки ми не отримаємо результат, який нам подобається", але ви абсолютно правильні, у цьому питанні є набагато більше.
Джейсон

@whuber та user163778 дали дуже подібні відповіді, як обговорювалося для практично однакового випадку "A / B (послідовного) тестування" в цій темі: stats.stackexchange.com/questions/244646/… Там ми сперечалися з точки зору помилки Family Wise норми та необхідність коригування p-значення при повторному тестуванні. Це питання насправді можна розглядати як проблему повторного тестування!
tomka

Відповіді:


87

Проблема полягає в тому, що ви даєте собі занадто багато шансів пройти тест. Це просто химерна версія цього діалогу:

Я переверну вас, щоб побачити, хто платить за вечерю.

Гаразд, я телефоную головам.

Щури, ти перемогла. Кращі два з трьох?


Щоб зрозуміти це краще, розгляньте спрощену, але реалістичну модель цієї послідовної процедури . Припустимо, ви почнете з "пробного запуску" певної кількості спостережень, але готові продовжити експерименти довше, щоб отримати значення р менше . Нульова гіпотеза полягає в тому, що кожне спостереження походить (незалежно) від стандартного нормального розподілу. Альтернативою є те, що надходять незалежно від нормального дисперсійного нормального розподілу з ненульовим середнім. Тестовою статистикою буде середнє значення всіх спостережень, , поділене на їх стандартну помилку, . Для двостороннього тесту критичними значеннями є значенняX i X i n ˉ X 1 / 0.05XiXinX¯ 0,0250,975Zα=±1,961/n0.025 та процентних пунктів стандартного нормального розподілу, приблизно.0.975Zα=±1.96

Це хороший тест - для одного експерименту з фіксованим розміром вибірки . Він має рівно ймовірність відкинути нульову гіпотезу, незалежно від того , що може бути.5 % nn5%n

Давайте алгебраїчно перетворимо це в еквівалентний тест на основі суми всіх значень,З п = Х 1 + Х 2 + + Х п = п ˉ Х .n

Sn=X1+X2++Xn=nX¯.

Таким чином, дані є "значущими", коли

|Zα||X¯1/n|=|Snn/n|=|Sn|/n;

це,

(1)|Zα|n|Sn|.

Якщо ми розумні, ми зменшимо свої втрати і відмовимось, коли зросте дуже великими, а дані все ще не ввійшли в критичну область.n

Це описує випадкову ходу . Формула означає спорудження вигнутої параболічної «огорожі» або бар'єру навколо ділянки випадкової прогулянки : результат є «значущим», якщо якась точка випадкової прогулянки потрапляє на паркан.Sn(1)(n,Sn)

Це властивість випадкових прогулянок, що якщо ми будемо чекати досить довго, дуже ймовірно, що в якийсь момент результат буде виглядати суттєвим.

Ось 20 незалежних моделювань до межі зразків. Усі вони починають тестування з проб, після чого ми перевіряємо, чи лежить кожна точка за межами бар'єрів, які були проведені за формулою . З моменту, коли статистичний тест спочатку є "значущим", імітовані дані пофарбовані в червоний колір.n=5000n=30(1)

Малюнок

Ви можете бачити, що відбувається: випадкова хода все більше і більше бігає вгору і вниз, коли росте. Шлагбауми розширюються приблизно однаковою швидкістю, але не досить швидко завжди, щоб уникнути випадкової прогулянки.n

У 20% цих симуляцій було виявлено "суттєву" різницю - як правило, досить рано - хоча в кожному з них нульова гіпотеза абсолютно правильна! Запуск більшої кількості моделей такого типу свідчить про те, що справжній розмір тесту близький до а не передбачуване значення : тобто ваша готовність продовжувати шукати "значущість" до розміру вибірки дає шанс відхилити нуль, навіть якщо нуль є істинним.25%α=5%500025%

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

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

library(data.table)
library(ggplot2)

alpha <- 0.05   # Test size
n.sim <- 20     # Number of simulated experiments
n.buffer <- 5e3 # Maximum experiment length
i.min <- 30     # Initial number of observations
#
# Generate data.
#
set.seed(17)
X <- data.table(
  n = rep(0:n.buffer, n.sim),
  Iteration = rep(1:n.sim, each=n.buffer+1),
  X = rnorm((1+n.buffer)*n.sim)
)
#
# Perform the testing.
#
Z.alpha <- -qnorm(alpha/2)
X[, Z := Z.alpha * sqrt(n)]
X[, S := c(0, cumsum(X))[-(n.buffer+1)], by=Iteration]
X[, Trigger := abs(S) >= Z & n >= i.min]
X[, Significant := cumsum(Trigger) > 0, by=Iteration]
#
# Plot the results.
#
ggplot(X, aes(n, S, group=Iteration)) +
  geom_path(aes(n,Z)) + geom_path(aes(n,-Z)) +
  geom_point(aes(color=!Significant), size=1/2) +
  facet_wrap(~ Iteration)

12
+1. Чи зрештою будь-яка задана випадкова прогулянка перетинає бар'єри з вірогідністю 1? Я знаю, що очікувана відстань після кроків дорівнює і я подивився зараз, що константа пропорційності дорівнює , що менше 1,96. Але я не впевнений, що з цього зробити. nO(n)2/π
Амеба каже: Відновити Моніку

10
@amoeba Це чудове запитання, яке я намагався зробити все, щоб ухилитися :-). Якби я міг швидко обчислити відповідь (або знав це назовні), я би розмістив її. На жаль, я зараз занадто зайнятий, щоб вирішити його аналітично. Найдовше моделювання, яке я зробив, - це 1000 ітерацій з з . Частка "значущих" результатів, здається, стабілізується близько . α = 0,05 1 / 4n=5,000,000α=0.051/4
whuber

4
Цікавим є питання про ймовірність потрапляння межі . Я думаю, що теорія Ейнштейна про броунівський рух, пов’язуючи його з рівнянням дифузії, може бути цікавим кутом зору. У нас функція розподілу поширюється зі швидкістю і "втратою частинок", що дорівнює половині значення функції розподілу на цій межі (половина рухається від нуля, через кордон, інша половина повертається). Коли ця функція розподілу поширюється і стає все тоншою, "втрата" стає меншою. Я думаю, що це ефективно створить обмеження, тобто це 1/4. α=0.05n
Секст Емпірік

6
Інтуїтивна причина, чому ви отримаєте в якийсь момент майже впевнено: Нехай і . Значення значення після першого випробувань майже не залежить від -значення після перших випробувань . Таким чином, у вас буде нескінченна кількість «майже» незалежних значень, тому одна з них гарантовано буде . Звичайно, реальна конвергенція набагато швидша, ніж говорить цей аргумент. (І якщо вам не подобається , ви можете спробувати або ...)p<0.05n1=10nk+1=10nkpnk+1pnkp<0.0510nkA(nk)BB(nk)
JiK

10
@CL. Я очікував вашого заперечення кілька років тому: 17 - це моє публічне насіння. Насправді, на ранніх (набагато довших) випробуваннях я постійно отримував більші показники значущості, значно більші за 20%. Я поставив насіння в 17, щоб створити остаточний образ і розчарувався, що ефект був не таким драматичним. Це життя. Пов’язана публікація (ілюструє вашу думку) знаходиться на сайті stats.stackexchange.com/a/38067/919 .
whuber

18

Люди, які не знайомі з тестуванням гіпотез, схильні вважати, що як тільки значення ап знизиться нижче .05, додавання більшої кількості учасників лише ще більше знизить значення р. Але це неправда. Згідно з нульовою гіпотезою, значення ap рівномірно розподіляється між 0 і 1 і може дуже відскакувати в цьому діапазоні.

Я імітував деякі дані в R (мої навички R досить базові). У цьому моделюванні я збираю 5 точок даних - кожен із випадково вибраним членством у групі (0 або 1) і кожен із випадково вибраним результатом вимірювання ~ N (0,1). Починаючи з учасника 6, я проводжу тест на кожній ітерації.

for (i in 6:150) {
  df[i,1] = round(runif(1))
  df[i,2] = rnorm(1)
  p = t.test(df[ , 2] ~ df[ , 1], data = df)$p.value
  df[i,3] = p
}

Значення р наведені на цьому малюнку. Зауважте, що я знаходжу значні результати, коли розмір вибірки становить приблизно 70-75. Якщо я зупинюсь на цьому, я в кінцевому підсумку вважаю, що мої висновки є вагомими, тому що я пропустив той факт, що мої значення p підскочили назад з більшою вибіркою (це насправді траплялося зі мною одного разу з реальними даними). Оскільки я знаю, що обидві групи населення мають середнє значення 0, це повинно бути помилковим позитивом. Це проблема з додаванням даних до p <.05. Якщо ви додасте проведення достатньої кількості тестів, p з часом переступить поріг .05, і ви зможете знайти значний вплив будь-якого набору даних.

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


1
Дякуємо, але ваш Rкод взагалі не працює.
Реза

3
@Reza вам потрібно створити dfспочатку (бажано в остаточному розмірі). Так як код починає писати в рядку 6 імплікації (що узгоджується з текстом відповіді) є те , що ДФ вже існує 5 рядків уже заповнене Може бути що - щось на зразок цього призначалися :. n150<-vector("numeric",150); df<-data.frame(gp=n150,val=n150,pval=n150); init<-1:5; df[init,1]<-c(0,1,0,1,0); df[init,2]<-rnorm(5)( А потім запустити наведений вище код) , то , можливо: plot(df$pv[6:150])
Glen_b

@ user263778 дуже цілеспрямована корисна і відповідна відповідь. Але занадто багато плутанини щодо тлумачення p-значення так званої - танцювальної краси.
Subhash C. Davar

@ user163778 - вам слід включити код, щоб ініціалізувати все
Dason

17

Ця відповідь стосується лише ймовірності остаточного отримання «значного» результату та розподілу часу на цю подію за моделлю @ whuber.

Як і в моделі @whuber, нехай позначає значення тестової статистики після того , як зібрано спостережень, і припустимо, що спостереження є стандартними нормальними . Тоді такий, що поводиться як стандартний броунівський рух безперервного часу, якщо ми на даний момент ігноруємо той факт, що у нас процес дискретного часу (лівий сюжет внизу).S(t)=X1+X2++XttX1,X2,

(1)S(t+h)|S(t)=s0N(s0,h),
S(t)

Нехай позначає перший час проходження через часові бар'єри (кількість спостережень, необхідних до того, як тест виявиться значним).TS(t)±zα/2t

Розглянемо трансформований процес отриманий шляхом масштабування за його стандартним відхиленням в момент часу і, довівши нову шкалу часу таким, що З (1) і (2) випливає, що зазвичай розподіляється з і Y(τ)S(t)tτ=lnt

(2)Y(τ)=S(t(τ))t(τ)=eτ/2S(eτ).
Y(τ+δ)
E(Y(τ+δ)|Y(τ)=y0)=E(e(τ+δ)/2S(eτ+δ)|S(eτ)=y0eτ/2)(3)=y0eδ/2
Var(Y(τ+δ)|Y(τ)=y0)=Var(e(τ+δ)/2S(eτ+δ)|S(eτ)=y0eτ/2)(4)=1eδ,
тобто - нульовий середній процес Орнштейна-Уленбека (OU) зі стаціонарною дисперсією 1 і час повернення 2 (права ділянка нижче).Y(τ)

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

Для перетвореної моделі бар'єри стають незалежними від часу константами, що дорівнює . Тоді відомо ( Nobile et al. 1985 ; Ricciardi & Sato, 1988 ), що перший час проходження процесу OU через ці бар'єри приблизно експоненціально розподілений з деяким параметром (залежно від бар'єрів у ) (оцінюється до для нижче). Також є додаткова маса точок розміром в . "Відхилення"±zα/2TY(τ)λ±zα/2λ^=0.125α=0.05ατ=0H0в кінцевому підсумку відбувається з ймовірністю 1. Отже, (кількість спостережень, які необхідно зібрати, щоб отримати "значущий" результат) приблизно слідує за експоненціальним розподілом журналу з очікуваним значенням Таким чином, має кінцеве очікування, лише якщо (для достатньої кількості великий рівень значущості ).T=eT

(5)ET1+(1α)0eτλeλτdτ.
Tλ>1α

Сказане ігнорує той факт, що для реальної моделі дискретний, а реальний процес - дискретний, а не безперервний час. Отже, вищезазначена модель завищує ймовірність того, що бар'єр був перекреслений (і недооцінює ), оскільки шлях вибірки безперервного часу може перетинати бар'єр лише тимчасово між двома сусідніми дискретними часовими точками і . Але такі події повинні мати незначну ймовірність для великих . E T t t + 1 tTETtt+1t

На наступному малюнку показана оцінка Каплана-Мейєра за шкалою журналу журналу разом з кривою виживання для експоненціального наближення безперервного часу (червона лінія).P(T>t)

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

R код:

# Fig 1
par(mfrow=c(1,2),mar=c(4,4,.5,.5))
set.seed(16)
n <- 20
npoints <- n*100 + 1
t <- seq(1,n,len=npoints)
subset <- 1:n*100-99
deltat <- c(1,diff(t))
z <- qnorm(.975)
s <- cumsum(rnorm(npoints,sd=sqrt(deltat)))
plot(t,s,type="l",ylim=c(-1,1)*z*sqrt(n),ylab="S(t)",col="grey")
points(t[subset],s[subset],pch="+")
curve(sqrt(t)*z,xname="t",add=TRUE)
curve(-sqrt(t)*z,xname="t",add=TRUE)
tau <- log(t)
y <- s/sqrt(t)
plot(tau,y,type="l",ylim=c(-2.5,2.5),col="grey",xlab=expression(tau),ylab=expression(Y(tau)))
points(tau[subset],y[subset],pch="+")
abline(h=c(-z,z))

# Fig 2
nmax <- 1e+3
nsim <- 1e+5
alpha <- .05
t <- numeric(nsim)
n <- 1:nmax
for (i in 1:nsim) {
  s <- cumsum(rnorm(nmax))
  t[i] <- which(abs(s) > qnorm(1-alpha/2)*sqrt(n))[1]
}
delta <- ifelse(is.na(t),0,1)
t[delta==0] <- nmax + 1
library(survival)
par(mfrow=c(1,1),mar=c(4,4,.5,.5))
plot(survfit(Surv(t,delta)~1),log="xy",xlab="t",ylab="P(T>t)",conf.int=FALSE)
curve((1-alpha)*exp(-.125*(log(x))),add=TRUE,col="red",from=1,to=nmax)

Дякую! Чи є у вас якісь (стандартні) посилання на ці результати? Наприклад, чому Y-процес є Орнштейном-Уленбеком і де можна знайти результат проходження часу?
Grassie

1
Я не бачив цього перетворення ніде більше, але я вважаю, що (3) і (4), що легко випливає з (1) і (2), і нормальність повністю характеризує процес ОУ. Науковець Google повертає багато результатів щодо приблизної експоненціальності розподілу часу першого проходу для процесу ОУ. Але я вважаю, що у цьому випадку (у межах наближення безперервного часу) точно експоненціально розподілений (за винятком додаткової маси у ), оскільки походить від стаціонарного розподілу процесу . τ = 0 Y ( 0 )Tτ=0Y(0)
Jarle Tufto

@Grassie Також дивіться math.stackexchange.com/questions/1900304/…
Jarle Tufto

@Grassie Насправді мій аргумент, заснований на безпам’ятності, був помилковим. Тривалість екскурсій подалі від меж не розподілена експоненціально. Отже, виходячи з того ж аргументу, що і в stats.stackexchange.com/questions/298828/… , навіть якщо походить від стаціонарного розподілу, час першого проходження точно не експоненціально розподілений. Y(0)
Jarle Tufto

5

Потрібно сказати, що вищезазначена дискусія стосується частістського світогляду, для якого множинність виходить з того, що ви даєте дані бути більш екстремальними, а не від шансів, що ви даєте ефект на існування. Першопричиною проблеми є те, що в p-значеннях та помилках I типу використовується кондиціонування потоку інформації в зворотному часі, завдяки чому важливо "як ти сюди потрапив" і що могло статися натомість. З іншого боку, байєсівська парадигма кодує скептицизм щодо впливу на сам параметр, а не на дані. Це робить кожну задню ймовірність інтерпретувати однаково, чи обчислювали ви іншу задню ймовірність ефекту 5 хвилин тому чи ні. Більш детальну інформацію та просте моделювання можна знайти на веб- сайті http://www.fharrell.com/2017/10/continuous-learning-from-data-no.


1
Уявімо собі лабораторію, яку очолює доктор В, який є побожним баєсом. Лабораторія вивчає соціальну грунтовку і створила постійний потік робіт, що демонструють різні ефекти грунтовки, щоразу підтримується фактором Байєса BF> 10. Якщо вони ніколи не проводять послідовне тестування, це виглядає досить переконливо. Але скажімо, я дізнаюся, що вони завжди роблять послідовне тестування і продовжують отримувати нові предмети, поки вони не отримають BF> 10 на користь ефектів праймінгу . Тоді явно весь цей твір нічого не вартий. Те, що вони роблять послідовне тестування + вибір, має величезну різницю, незалежно від того, чи базується він на p-значеннях BF.
амеба каже, що повернеться Моніка

1
Я не використовую факторів Байєса. Але якби вони використовували задні ймовірності і не проводили кожен експеримент до тих пір, поки не з'явиться позитивна ймовірність позитивного ефекту , з цими ймовірностями абсолютно нічого б не було. Подивіться на цитату на початку моєї статті в блозі - дивіться посилання у моїй відповіді вище. Ступінь віри щодо ефекту грунтовки виходить із даних та попередньої віри. Якщо ви (як я) дуже сумнівно ставитеся до таких ефектів праймінгу, вам краще скористатися досить скептично, коли обчислюєте задні ймовірності. Це воно. 0.95
Френк Харрелл

1
Я прочитав вашу публікацію в блозі, помітив цитату і подивився на аналогічний документ ( Необов’язково зупинятися: Немає проблем для байєсів ), до якого хтось інший посилався в коментарях до іншої відповіді. Я досі не розумію. Якщо "нуль" (відсутність ефектів праймінгу) відповідає дійсності, то, якщо доктор В буде готовий зробити вибірку досить довго, він зможе отримати задню ймовірність> 0,95 щоразу, коли він проведе експеримент (саме так, як зможе доктор F отримувати p <0,05 кожен раз). Якщо це "абсолютно нічого поганого", то я не знаю, що таке.
амеба каже, що повернеться Моніка

2
Ну, я заперечую цю «більшу суть». Я не думаю, що це правда. Поки я постійно повторююсь, під дією нульового ефекту та з будь-яким заданим попереднім (скажімо, деяким широким безперервним попереднім центром у центрі нуля), повторне відбір проб завжди рано чи пізно дасть вихід> 0,98 задня ймовірність, зосереджена вище нуля. Людина, яка здійснює вибірку, поки цього не відбудеться (тобто застосовує це правило про зупинку), буде помилятися кожен раз . Як ви можете сказати, що ця людина помилиться лише в 0,02 разу? Я не розумію. За цих конкретних обставин, ні він не буде, він завжди буде помилятися.
амеба каже: Відновити Моніку

2
Я не думаю, що я. Моя більша думка полягає в тому, що несправедливо і непослідовно одночасно звинувачувати в частотермістських процедурах страждання від послідовного тестування та захищати байєсівські процедури, як це не впливає на послідовне тестування. Моя думка (що є математичним фактом) полягає в тому, що на них обох впливає абсолютно однаково, це означає, що послідовне тестування може збільшити помилку байєсівського типу I до 100%. Звичайно, якщо ви говорите, що вас, як правило, не цікавить рівень помилок I типу, то це не має значення. Але тоді в цьому також не слід звинувачувати частолістські процедури.
амеба каже, що повернеться Моніка

3

Ми вважаємо, що дослідник збирає зразок розміром , , щоб перевірити деяку гіпотезу . Він відкидає, якщо відповідна тестова статистика перевищує її рівень- критичне значення . Якщо цього немає, він збирає інший зразок розміром , і відхиляє, якщо тест відхиляє для комбінованого зразка . Якщо він все ще не отримує відхилення, він проходить таким чином, до разів усього.x 1 θ = θ 0 t α c n x 2 ( x 1 , x 2 ) Knx1θ=θ0tαcnx2(x1,x2)K

Ця проблема, здається, вже була вирішена П. Армітажем, К. К. Макферсоном та Б. К. Роу (1969), журналом Королівського статистичного товариства. Серія A (132), 2, 235-244: "Неодноразові випробування значущості накопичувальних даних" .

Байєсівська точка зору на це питання, також обговорювана тут, до речі, обговорюється в Бергері та Вулперті (1988), "Принцип ймовірності" , Розділ 4.2.

Ось часткова реплікація результатів Armitage et al. (Код нижче), яка показує, як рівень значущості надувається при , а також можливі корекційні коефіцієнти для відновлення критичних значень рівня- . Зверніть увагу, що пошук сетки потребує деякого часу --- реалізація може виявитися досить неефективною.αK>1α

Розмір стандартного правила відхилення як функція від кількості спробK

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

Розмір як функція збільшення критичних значень для різнихK

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

Налаштовані критичні значення для відновлення 5% тестів як функціїK

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

reps <- 50000

K <- c(1:5, seq(10,50,5), seq(60,100,10)) # the number of attempts a researcher gives herself
alpha <- 0.05
cv <- qnorm(1-alpha/2)

grid.scale.cv <- cv*seq(1,1.5,by=.01) # scaled critical values over which we check rejection rates
max.g <- length(grid.scale.cv)
results <- matrix(NA, nrow = length(K), ncol=max.g)

for (kk in 1:length(K)){
  g <- 1
  dev <- 0
  K.act <- K[kk]
  while (dev > -0.01 & g <= max.g){
    rej <- rep(NA,reps)
    for (i in 1:reps){
      k <- 1
      accept <- 1
      x <- rnorm(K.act)
      while(k <= K.act & accept==1){
        # each of our test statistics for "samples" of size n are N(0,1) under H0, so just scaling their sum by sqrt(k) gives another N(0,1) test statistic
        rej[i] <- abs(1/sqrt(k)*sum(x[1:k])) > grid.scale.cv[g] 
        accept <- accept - rej[i]
        k <- k+1
      }
    }
    rej.rate <- mean(rej)
    dev <- rej.rate-alpha
    results[kk,g] <- rej.rate
    g <- g+1
  }
}
plot(K,results[,1], type="l")
matplot(grid.scale.cv,t(results), type="l")
abline(h=0.05)

cv.a <- data.frame(K,adjusted.cv=grid.scale.cv[apply(abs(results-alpha),1,which.min)])
plot(K,cv.a$adjusted.cv, type="l")
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.