Dlaczego gromadzenie danych do momentu uzyskania znaczącego wyniku zwiększa poziom błędu Typu I?


60

Zastanawiałem się dokładnie, dlaczego gromadzenie danych, dopóki nie zostanie uzyskany znaczący wynik (np. ) (tj. Hakowanie p), zwiększy poziom błędu Typu I?p<.05

Byłbym również bardzo wdzięczny za Rpokazanie tego zjawiska.


6
Prawdopodobnie masz na myśli „hakowanie p”, ponieważ „harkowanie” odnosi się do „Hipotezowania po znanych wynikach” i chociaż można to uznać za pokrewny grzech, nie o to pytasz.
whuber

2
Po raz kolejny xkcd odpowiada na dobre pytanie ze zdjęciami. xkcd.com/882
Jason

7
@Jason Muszę się nie zgodzić z twoim linkiem; która nie mówi o zbiorczym gromadzeniu danych. Fakt, że nawet łączne gromadzenie danych o tej samej rzeczy i wykorzystywanie wszystkich danych, które musisz obliczyć wartość jest błędne, jest o wiele bardziej nietrywialne niż w przypadku tego xkcd. p
JiK

1
@JiK, uczciwe połączenie. Skoncentrowałem się na aspekcie „próbuj, aż uzyskamy rezultat, który lubimy”, ale masz całkowitą rację, w tym pytaniu jest o wiele więcej.
Jason

@whuber i user163778 udzielili bardzo podobnych odpowiedzi, jak omówiono dla praktycznie identycznego przypadku „testowania A / B (sekwencyjnego)” w tym wątku: stats.stackexchange.com/questions/244646/... Tam argumentowaliśmy w kwestii błędu rodzinnego szybkości i konieczność korekty wartości pw powtarzanych testach. To pytanie może być postrzegane jako powtarzający się problem z testowaniem!
tomka

Odpowiedzi:


87

Problem polega na tym, że dajesz sobie zbyt wiele szans na zdanie testu. To tylko fantazyjna wersja tego okna dialogowego:

Odwrócę cię, aby zobaczyć, kto płaci za obiad.

OK, dzwonię po głowy.

Szczury, wygrałeś. Najlepsze dwa z trzech?


Aby lepiej to zrozumieć, rozważ uproszczony - ale realistyczny - model tej sekwencyjnej procedury . Załóżmy, że zaczniesz od „serii próbnej” określonej liczby obserwacji, ale jesteś skłonny kontynuować eksperymenty dłużej, aby uzyskać wartość p mniejszą niż . Hipotezą zerową jest to, że każda obserwacja pochodzi (niezależnie) ze standardowego rozkładu normalnego. Alternatywą jest to, że pochodzą niezależnie od rozkładu normalnego wariancji jednostkowej ze średnią niezerową. Statystyka testowa będzie średnią ze wszystkich obserwacji, , podzieloną przez ich błąd standardowy, . W przypadku testu dwustronnego wartościami krytycznymi są:X i X i n ˉ X 1 / 0.05XiXinX¯ 0,0250,975Zα=±1,961/n0.025 i punktów procentowych standardowego rozkładu normalnego, w przybliżeniu .0.975Zα=±1.96

To dobry test - dla pojedynczego eksperymentu ze stałą wielkością próby . Ma dokładnie szans na odrzucenie hipotezy zerowej, bez względu na to, jakie może być .5 % nn5%n

Algebraicznie przekonwertujmy to na równoważny test oparty na sumie wszystkich wartości,S n = X 1 + x 2 + + X n = n ˉ X .n

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

Zatem dane są „znaczące”, kiedy

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

to jest,

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

Jeśli jesteśmy sprytni, zmniejszymy straty i poddamy się, gdy bardzo duże, a dane nadal nie dotrą do regionu krytycznego.n

Opisuje losowy spacer . Wzór sprowadza się do wzniesienia zakrzywionego parabolicznego „ogrodzenia” lub bariery wokół wykresu losowego spaceru : wynik jest „znaczący”, jeśli którykolwiek punkt losowego spaceru uderzy o ogrodzenie.Sn(1)(n,Sn)

Właściwością losowych spacerów jest to, że jeśli będziemy czekać wystarczająco długo, bardzo prawdopodobne jest, że w pewnym momencie wynik będzie wyglądał na znaczący.

Oto 20 niezależnych symulacji do limitu próbek. Wszystkie rozpoczynają testowanie przy próbkach, w tym momencie sprawdzamy, czy każdy punkt znajduje się poza barierami, które zostały narysowane zgodnie ze wzorem . Od momentu, w którym test statystyczny jest po raz pierwszy „znaczący”, symulowane dane są zabarwione na czerwono.n=5000n=30(1)

Postać

Możesz zobaczyć, co się dzieje: losowy marsz rośnie i spada w górę i w dół wraz ze wzrostem liczby . Bariery rozprzestrzeniają się w przybliżeniu w tym samym tempie - ale nie wystarczająco szybko, aby uniknąć przypadkowego spaceru.n

W 20% tych symulacji wykryto „znaczącą” różnicę - zwykle dość wcześnie - nawet jeśli w każdej z nich hipoteza zerowa jest całkowicie poprawna! Uruchomienie większej liczby symulacji tego typu wskazuje, że rzeczywisty rozmiar testu jest zbliżony do zamiast zamierzonej wartości : oznacza to, że gotowość do szukania „istotności” aż do próby daje szans na odrzucenie wartości null, nawet jeśli wartość null jest prawdziwa.25%α=5%500025%

Zauważ, że we wszystkich czterech „znaczących” przypadkach, gdy testy były kontynuowane, dane przestały wyglądać znaczące w niektórych punktach. W prawdziwym życiu eksperymentator, który zatrzymuje się wcześnie, traci szansę zaobserwowania takich „zmian”. Ta selektywność poprzez opcjonalne zatrzymanie wpływa negatywnie na wyniki.

W sekwencyjnych testach uczciwość do dobroci bariery są liniami. Rozprzestrzeniają się szybciej niż pokazane tutaj zakrzywione bariery.

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. Czy któryś z przypadkowych spacerów w końcu przekracza bariery z prawdopodobieństwem 1? Wiem, że oczekiwana odległość po krokach to i spojrzałam teraz, gdy stała proporcjonalności wynosi , czyli mniej niż 1,96. Ale nie jestem pewien, co z tym zrobić. nO(n)2/π
ameba mówi Przywróć Monikę

10
@amoeba To świetne pytanie, które starałem się uchylić :-). Gdybym mógł szybko obliczyć odpowiedź (lub znał ją od razu), opublikowałbym ją. Niestety jestem zbyt zajęty, aby zająć się tym teraz analitycznie. Najdłuższa symulacja, jaką wykonałem, to 1000 iteracji z z . Odsetek „znaczących” wyników wydaje się ustabilizować w pobliżu . α = 0,05 1 / 4n=5,000,000α=0.051/4
whuber

4
Ciekawe jest pytanie o prawdopodobieństwo trafienia w granicę . Wyobrażam sobie, że teoria ruchu Browna Einsteina, odnosząca ją do równania dyfuzyjnego, mogłaby być interesującym kątem. Mamy funkcję rozkładu rozkładającą się z prędkością i „utratą cząstek” równą połowie wartości funkcji rozkładu na tej granicy (połowa przesuwa się od zera, ponad granicę, druga połowa wraca). Gdy ta funkcja dystrybucji rozszerza się i staje się cieńsza, „strata” staje się mniejsza. Wyobrażam sobie, że to skutecznie stworzy limit, tj. Ten 1/4. α=0.05n
Sextus Empiricus

6
Intuicyjny powód, dla którego w pewnym momencie uzyskasz : Niech i . Wartość po pierwszych próbach jest prawie niezależna od wartości po pierwszych próbach . Będziesz miał nieskończoną liczbę „prawie” niezależnych wartości , więc jedna z nich ma gwarancję . Oczywiście rzeczywista konwergencja jest znacznie szybsza niż mówi ten argument. (A jeśli nie lubisz , możesz spróbować lub ...)p<0.05n1=10nk+1=10nkpnk+1pnkp<0.0510nkA(nk)BB(nk)
JiK

10
@CL. I przewiduje swój sprzeciw kilka lat temu: 17 to moja nasienie publicznego. W rzeczywistości we wczesnych (znacznie dłuższych) badaniach konsekwentnie uzyskiwałem wyższe wskaźniki istotności znacznie większe niż 20%. Ustawiłem ziarno na 17, aby stworzyć ostateczny obraz i byłem rozczarowany, że efekt nie był tak dramatyczny. C'est la vie. Powiązany post (ilustrujący twój punkt) znajduje się na stronie stats.stackexchange.com/a/38067/919 .
whuber

18

Ludzie, którzy są nowi w testowaniu hipotez, mają tendencję do myślenia, że ​​gdy wartość ap spadnie poniżej 0,05, dodanie większej liczby uczestników jeszcze bardziej obniży wartość p. Ale to nie jest prawda. Zgodnie z hipotezą zerową wartość ap jest równomiernie rozłożona między 0 a 1 i może odbijać się dość mocno w tym zakresie.

Symulowałem niektóre dane w R (moje umiejętności R są dość podstawowe). W tej symulacji zbieram 5 punktów danych - każdy z losowo wybranym członkostwem w grupie (0 lub 1) i każdy z losowo wybraną miarą wyniku ~ N (0,1). Począwszy od uczestnika 6, przeprowadzam test t przy każdej iteracji.

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
}

Wartości p są na tym rysunku. Zauważ, że znajduję znaczące wyniki, gdy wielkość próbki wynosi około 70-75. Jeśli się tam zatrzymam, uwierzę, że moje odkrycia są znaczące, ponieważ pominąłem fakt, że moje wartości p podskoczyły z większą próbką (tak naprawdę zdarzyło mi się to raz z prawdziwymi danymi). Ponieważ wiem, że obie populacje mają średnią 0, to musi być fałszywie dodatni. Jest to problem z dodawaniem danych do p <0,05. Jeśli dodasz przeprowadzić wystarczającą liczbę testów, p ostatecznie przekroczy próg 0,05 i możesz znaleźć znaczący efekt dla dowolnego zestawu danych.

wprowadź opis zdjęcia tutaj


1
Dzięki, ale twój Rkod w ogóle nie działa.
Reza

3
@Reza musisz najpierw utworzyć df(najlepiej w ostatecznym rozmiarze). Ponieważ kod zaczyna pisać w wierszu 6, implikacją (która pasuje do tekstu odpowiedzi) jest to, że df już istnieje z 5 wierszami już wypełnionymi. Może coś takiego było zamierzone: 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)(następnie uruchom kod powyżej), a następnie być może: plot(df$pv[6:150])
Glen_b

@ user263778 bardzo skoncentrowana użyteczna i trafna odpowiedź. Ale jest zbyt wiele zamieszania w interpretowaniu wartości p, tzw. tańczącego piękna.
Subhash C. Davar

@ user163778 - należy również dołączyć kod, aby wszystko zainicjować
Dason

17

Ta odpowiedź dotyczy tylko prawdopodobieństwa uzyskania „istotnego” wyniku i podziału czasu na to zdarzenie w modelu @ Whubera.

Podobnie jak w modelu @whuber, niech oznacza wartość statystyki testowej po zebraniu obserwacji i załóżmy, że obserwacje są w normie normalne . Wtedy tak, że zachowuje się jak standardowy ruch Browna w czasie ciągłym, jeśli na razie zignorujemy fakt, że mamy proces w czasie dyskretnym (lewy wykres poniżej).S(t)=X1+X2++XttX1,X2,

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

Niech oznacza czas pierwszego przejścia przez bariery zależne od (liczba obserwacji potrzebnych, zanim test stanie się znaczący).TS(t)±zα/2t

Rozważ przetworzony proces uzyskany przez skalowanie przez jego odchylenie standardowe w czasie oraz przez pozostawienie nowej skali czasu takiej, że Z (1) i (2) wynika, że jest zwykle dystrybuowane z i 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δ,
to znaczy, jest zerowym średnim procesem Ornsteina-Uhlenbecka (OU) ze stacjonarną wariancją 1 i czasem powrotu 2 (prawy wykres poniżej).Y(τ)

wprowadź opis zdjęcia tutaj

W przypadku modelu przekształconego bariery stają się stałymi niezależnymi od czasu równymi . Wiadomo następnie ( Nobile i in. 1985 ; Ricciardi i Sato, 1988 ), że pierwszy czas przejścia procesu OU przez te bariery jest w przybliżeniu wykładniczo rozkładany z pewnym parametrem (w zależności od barier w ) (szacowany na dla poniżej). Istnieje również dodatkowa masa punktowa o rozmiarze w . „Odrzucenie”±zα/2TY(τ)λ±zα/2λ^=0.125α=0.05ατ=0H0ostatecznie dzieje się z prawdopodobieństwem 1. Stąd (liczba obserwacji, które należy zebrać przed uzyskaniem „znaczącego” wyniku) w przybliżeniu odpowiada logarytmicznemu rozkładowi wykładniczemu o oczekiwanej wartości Zatem ma skończone oczekiwanie tylko wtedy, gdy (wystarczająco duże poziomy znaczenia ).T=eT

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

Powyższe ignoruje fakt, że dla modelu rzeczywistego jest dyskretny, a prawdziwy proces jest dyskretny, a nie ciągły. Dlatego powyższy model przecenia prawdopodobieństwo przekroczenia bariery (i nie docenia ), ponieważ ścieżka próbki w czasie ciągłym może przekroczyć barierę tylko tymczasowo pomiędzy dwoma sąsiadującymi dyskretnymi punktami czasowymi i . Ale takie zdarzenia powinny mieć znikome prawdopodobieństwo dla dużego . E T t t + 1 tTETtt+1t

Poniższy rysunek pokazuje oszacowanie Kaplana-Meiera na skali log-log wraz z krzywą przeżycia dla wykładniczego przybliżenia ciągłego czasu (czerwona linia).P(T>t)

wprowadź opis zdjęcia tutaj

Kod 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)

Dzięki! Czy masz jakieś (standardowe) odniesienia do tych wyników? Na przykład, dlaczego proces Y jest Ornstein-Uhlenbeck i gdzie możemy znaleźć wynik czasu przejścia?
Grassie

1
Nigdzie indziej nie widziałem tej transformacji, ale uważam, że (3) i (4) wynikają łatwo z (1) i (2), a normalność całkowicie charakteryzuje proces OU. Naukowiec Google zwraca wiele wyników dotyczących przybliżonej wykładniczości rozkładów czasu pierwszego przejścia dla procesu OU. Uważam jednak, że w tym przypadku (w przybliżeniu w czasie ciągłym) jest dokładnie wykładniczo rozłożony (z wyjątkiem dodatkowej masy punktowej w ), ponieważ pochodzi z rozkładu stacjonarnego procesu . τ = 0 Y ( 0 )Tτ=0Y(0)
Jarle Tufto


@Grassie Właściwie mój argument oparty na braku pamięci był wadliwy. Czas trwania wycieczek poza granice nie jest rozkładany wykładniczo. Stąd, w oparciu o ten sam argument, co w stats.stackexchange.com/questions/298828/... , mimo że pochodzi z rozkładu stacjonarnego, czas pierwszego przejścia nie jest dokładnie rozkładem wykładniczym. Y(0)
Jarle Tufto

5

Trzeba powiedzieć, że powyższa dyskusja jest dla częstokroć postrzegającego świat, dla którego wielość pochodzi z szans, że dane są bardziej ekstremalne, a nie z szans, że dasz efekt, by istnieć. Główną przyczyną problemu jest to, że wartości p i błędy typu I wykorzystują warunkowanie przepływu informacji wstecz w czasie wstecznym, co sprawia, że ​​ważne jest „jak się tu dostałeś” i co mogło się stać zamiast tego. Z drugiej strony paradygmat bayesowski koduje sceptycyzm co do wpływu na sam parametr, a nie na dane. To sprawia, że ​​każde tylne prawdopodobieństwo należy interpretować tak samo, niezależnie od tego, czy obliczono kolejne tylne prawdopodobieństwo efektu 5 minut temu, czy nie. Więcej informacji i prosta symulacja można znaleźć na stronie http://www.fharrell.com/2017/10/continuous-learning-from-data-no.


1
Wyobraźmy sobie laboratorium prowadzone przez dr B, który jest pobożnym Bayesianem. Laboratorium bada społeczne gruntowanie i stworzyło stały strumień artykułów pokazujących różne efekty gruntowania, za każdym razem wspierane przez czynnik Bayesa BF> 10. Jeśli nigdy nie przeprowadzają testów sekwencyjnych, wygląda to całkiem przekonująco. Ale powiedzmy, że dowiaduję się, że zawsze wykonują sekwencyjne testy i zdobywają nowych pacjentów, dopóki nie uzyskają BF> 10 na korzyść efektów primowania . W takim razie cała ta praca jest bezwartościowa. Fakt, że przeprowadzają sekwencyjne testowanie + selekcję, robi ogromną różnicę, bez względu na to, czy opiera się ona na wartościach p BF.
ameba mówi Przywróć Monikę

1
Nie używam czynników Bayesa. Ale gdyby użyli prawdopodobieństw tylnych i przeprowadzili każdy eksperyment aż do późniejszego prawdopodobieństwa pozytywnego efektu , z tymi prawdopodobieństwami nie byłoby absolutnie nic złego. Spójrz na cytat na początku mojego artykułu na blogu - patrz link w mojej odpowiedzi powyżej. Stopień przekonania na temat efektu zalewania pochodzi z danych i wcześniejszego przekonania. Jeśli (podobnie jak ja) bardzo wątpisz w takie efekty pierwotne, lepiej obstawiaj raczej sceptycznie wcześniej, obliczając późniejsze prawdopodobieństwa. Otóż ​​to. 0.95
Frank Harrell,

1
Przeczytałem twój post na blogu, zauważyłem cytat i spojrzałem na podobny artykuł ( Opcjonalne zatrzymanie: bez problemu dla Bayesianów ), do którego ktoś inny odniósł się w komentarzach do innej odpowiedzi. Nadal nie rozumiem. Jeśli „zero” (brak efektów zalewania) jest prawdą, to jeśli Dr B jest skłonny wystarczająco długo próbkować, będzie w stanie uzyskać prawdopodobieństwo tylne> 0,95 za każdym razem, gdy przeprowadzi eksperyment (dokładnie tak, jak Dr F uzyskać p <0,05 za każdym razem). Jeśli to „absolutnie nic złego”, to nie wiem, co jest.
ameba mówi Przywróć Monikę

2
Cóż, kwestionuję ten „większy punkt”. Nie sądzę, że to prawda. Wciąż powtarzam, pod zerowym efektem zerowym i z dowolnym danym wyprzedzeniem (powiedzmy, że jakiś szeroki ciągły wcześniej wyśrodkowany na zero), powtarzane próbkowanie zawsze prędzej czy później da> 0,98 prawdopodobieństwo późniejsze skoncentrowane powyżej zera. Osoba, która pobiera próbki, dopóki tak się nie stanie (tj. Stosując tę ​​zasadę zatrzymywania), będzie za każdym razem mylić . Jak możesz powiedzieć, że ta osoba będzie w błędzie tylko przez 0,02 czasu? Nie rozumiem. W tych szczególnych okolicznościach nie, nie będzie, zawsze będzie w błędzie.
ameba mówi Przywróć Monikę

2
Nie wydaje mi się Moim większym argumentem jest to, że niesprawiedliwe i niespójne jest jednoczesne obwinianie procedur częstych za cierpienie z powodu sekwencyjnego testowania i obrona procedur bayesowskich, które nie mają wpływu na sekwencyjne testy. Chodzi mi o to (co jest faktem matematycznym), że oba są dotknięte dokładnie w ten sam sposób, co oznacza, że ​​testy sekwencyjne mogą zwiększyć błąd Bayesa typu I aż do 100%. Oczywiście, jeśli powiesz, że z zasady nie jesteś zainteresowany poziomem błędów typu I, to nie ma to znaczenia. Ale wtedy nie należy winić za to częstych procedur.
ameba mówi Przywróć Monikę

3

Rozważamy badacza pobierającego próbkę o rozmiarze , , aby przetestować hipotezę . Odrzuca, jeśli odpowiednia statystyka testowa przekracza jego wartość krytyczną na poziomie . Jeśli nie, pobiera kolejną próbkę o rozmiarze , i odrzuca, jeśli test odrzuca próbkę łączoną . Jeśli nadal nie otrzyma odrzucenia, postępuje w ten sposób, łącznie do razy.x 1 θ = θ 0 t α c n x 2 ( x 1 , x 2 ) Knx1θ=θ0tαcnx2(x1,x2)K

Wydaje się, że ten problem został już rozwiązany przez P. Armitage, CK McPherson i BC Rowe (1969), Journal of the Royal Statistics Society. Seria A (132), 2, 235–244: „Powtarzane testy istotności gromadzonych danych” .

Nawiasem mówiąc omawiany tutaj bayesowski punkt widzenia na ten temat omówiono w Berger i Wolpert (1988), „Zasada wiarygodności” , sekcja 4.2.

Oto częściowa replikacja wyników Armitage'a i in. (Kod poniżej), który pokazuje, jak poziomy istotności zwiększają się, gdy , a także możliwe współczynniki korekcyjne w celu przywrócenia wartości krytycznych poziom . Pamiętaj, że wyszukiwanie siatki zajmuje trochę czasu - implementacja może być raczej nieefektywna.αK>1α

Rozmiar standardowej reguły odrzucania jako funkcja liczby próbK

wprowadź opis zdjęcia tutaj

Rozmiar jako funkcja rosnących wartości krytycznych dla różnychK

wprowadź opis zdjęcia tutaj

Skorygowano wartości krytyczne, aby przywrócić 5% testów w funkcjiK

wprowadź opis zdjęcia tutaj

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")
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.