Face „fragil” p Valorile ne spun ceva?
M -am interesat recent să văd acest articol p Valorile din literatura de psihologie plutesc pe fluxul meu de socializare. Paul C Bogdan face ca severitatea crizei de replicare în știință să poată fi judecată în parte de proporția de p Valori care sunt „fragile”, pe care le definește între 0,01 și 0,05.
Desigur, îngrijorare în proporție de p Valorile care sunt „semnificative, dar doar doar” sunt o caracteristică stabilă a crizei de replicare. Una dintre preocupările permanente ale științei este că cercetătorii folosesc practici de cercetare discutabile pentru a -l face cumva p Valorile până la pragul considerat a fi dovezi „semnalizate”. O altă preocupare permanentă este aceea că cercetătorii care s-ar putea să nu folosească aceste practici în analiza în sine nu vor publica sau nu vor putea să își publice rezultatele nule, lăsând o prejudecată către rezultate pozitive în literatura publicată (problema „fișierului”).
Bogdan susține că pentru studiile cu o putere de 80% (definită ca 1 minus probabilitatea de a accepta ipoteza nulă atunci când există de fapt un efect real în date), 26% din p Valorile semnificative ar trebui să fie în acest interval „fragil”, pe baza simulărilor.
Cercetarea pe care Bogdan o descrie în articolul legată mai sus este un exercițiu inteligent de prelucrare a datelor din literatura de psihologie publicată pentru a vedea ce proporție din p Valorile sunt de fapt „fragile” și modul în care acest lucru se schimbă în timp. El constată că „de la înainte de criza de replicare (2004-2011) până astăzi (2024), procentul general de semnificativ p Valorile din intervalul fragil au scăzut de la 32% la aproape 26% ”. Întrucât 26% este despre ceea ce ne -am aștepta, dacă toate studiile ar avea o putere de 80%, atunci aceasta este considerată o veste bună.
S -a terminat criza de replicare? (Pentru a fi corect, nu cred că Bogdan susține acest ultim punct).
Una dintre citările proprii ale lui Bogdan este această piesă a lui Daniel Lakens, care în sine este o critică a unei încercări similare în acest sens. Lakens susține că „modificările raportului dintre fracțiile de valori p între 0,041–0.049 de-a lungul anilor sunt mai bine explicate prin presupunerea că puterea medie a scăzut în timp”, mai degrabă decât prin modificări în practicile de cercetare discutabile. Cred că sunt de acord cu Lakens în acest sens.
Pur și simplu nu cred că cei 26% din semnificativ p Valorile pentru a fi „fragile” sunt un punct de referință suficient de solid pentru a judeca prețurile de cercetare.
Oricum, toate acestea m -au intrigat suficient atunci când a fost discutat mai întâi în știință (ca „un câștig mare”) și apoi pe Bluesky pentru a dori să -mi fac propriile simulări pentru a vedea cum schimbările de dimensiuni ale efectului și dimensiunile eșantionului ar schimba 26%. Gândirea mea a fost de 26% s -a bazat pe presupunerile că toate studiile au o putere de 80% și (puterea dată trebuie calculată pentru o dimensiune a efectului adevărat, dar neobservată, că diferența reală în lumea reală este aproape de diferența asumată în realizarea calculului puterii. Ambele presupuneri sunt, evident, extrem de fragile, dar care este impactul dacă greșesc?
Din jocul meu dur de mai jos, impactul este destul de material. Nu ar trebui să credem că modificările proporției de semnalizare p Valorile care sunt cuprinse între 0,01 și 0,05 ne spun multe despre practicile de cercetare discutabile, deoarece se întâmplă prea mult-putere prealculată, cât de multe calcule de putere și, într-adevăr, cercetările alese se bazează pe o bună reflectare a realității, dimensiunea diferențelor pe care le căutăm și dimensiunile de eșantion-confundând totul.
Fă -ți propriul cercetare simulări
Pentru a face acest lucru, am scris o funcție simplă experiment
care atrage două probe independente din două populații, toate observațiile distribuite în mod normal. În scopurile mele, cele două dimensiuni de eșantion vor fi aceleași și abaterile standard la fel în ambele populații; Doar mijloacele diferă în funcție de populație. Dar această funcție este creată pentru o explorare mai generală dacă sunt vreodată motivată.
Situația ideală – calculul puterii cercetătorului se potrivește cu lumea reală
Cu această funcție am jucat pentru prima dată un pic pentru a obține o situație în care puterea este foarte aproape de 80%. Am obținut acest lucru cu dimensiuni de eșantion de 53 fiecare și o diferență în mijloacele celor două populații de 0,55 (amintind că fiecare populație are o distribuție standard de n (0, 1)).
Am verificat apoi acest lucru cu un pachet de alimentare publicat, Bulus, M. (2023). pwrss
: Instrumente statistice ale puterii și ale mărimii eșantionului. R versiunea pachetului R 0.3.1. https://cran.r-project.org/package=pwrss. Nu am mai folosit acest lucru până acum și l -am descărcat doar pentru a verifica că nu am făcut greșeli în propriile calcule, iar mai târziu îl voi folosi pentru a accelera unele lucruri.
library(pwrss)
library(tidyverse)
experiment <- function(d, m1 = 0, sd1 = 1, sd2 = 1, n1 = 50, n2 = n1, seed = NULL){
if(!is.null(seed)){
set.seed(seed)
}
x1 <- rnorm(n1, m1, sd1)
x2 <- rnorm(n2 ,m1 + d, sd2)
t.test(x1, x2)$p.value
}
reps <- 10000
res <- numeric(reps)
for(i in 1:reps){
res(i) <- experiment(d = 0.55, n1 = 53)
}
Da, așa este, folosesc un for
buclă aici. De ce? Pentru că este foarte lizibil și foarte ușor de scris.
Iată ce ne dă asta. Puterea mea simulată este de 80%, pachetul Bulus este de acord cu 80%, iar 27%din „semnalizat” (la alfa = 0,05) p Valorile sunt în intervalul fragil. Aceasta nu este aceeași cu 26%, dar nu se află la un milion de kilometri distanță; Este ușor să vă imaginați câteva schimbări în experiment care ar duce la cifra sa de 26%.
> # power from simulation > 1 - mean(res > 0.05) (1) 0.7964 > > # power from Bulus' package > pwrss.t.2means(mu1 = 0.55, sd1 = 1, sd2 = 1, n2 = 53) Difference between Two means (Independent Samples t Test) H0: mu1 = mu2 HA: mu1 != mu2 ------------------------------ Statistical power = 0.801 n1 = 53 n2 = 53 ------------------------------ Alternative = “not equal” Degrees of freedom = 104 Non-centrality parameter = 2.831 Type I error rate = 0.05 Type II error rate = 0.199 > > # Of those experiments that have 'significant' results, what proportion are in > # the so-called fragile range (i.e. betwen 0.01 and 0.05) > summ1 <- mean(res > 0.01 & res < 0.05) / mean(res < 0.05) > print(summ1) (1) 0.2746107
Modificări ale diferenței și în mărimea eșantionului
Am făcut câteva apeluri arbitrare în prima rulare – dimensiunea eșantionului aproximativ 50 de observații în fiecare grup și diferența de aproximativ 0,5 abateri standard. Ce se întâmplă dacă las diferența dintre cele două populații să fie mai mică sau mai mare decât aceasta și am stabilit doar numărul de observații la orice este necesar pentru a obține o putere de 80%? Ce schimbare face acest lucru la proporția p Valori care sunt „fragile”?
Se pare că face un mare diferență, așa cum vedem în aceste două diagrame:
Acestea sunt simulări, încă în lume în care cercetătorul se întâmplă să ghicească lumea reală exact chiar atunci când își fac calculul puterii și determină o dimensiune a eșantionului pentru a obține o putere de 80%. Vedem în graficul de sus că, pe măsură ce diferența din lumea reală devine mai mare, cu o putere constantă, proporția de semnificative, dar „fragile” p Valorile cresc semnificativ. Iar al doilea grafic arată aceleași simulări, dar concentrându -se pe variația dimensiunii eșantionului, care se schimbă în compensarea diferenței din lumea reală a populațiilor, pentru a menține aceeași putere. Probele mai mari cu aceeași putere înseamnă că căutați diferențe relativ mai mici din lumea reală și proporția semnificativă p Valorile care sunt „fragile” devin mai mici.
Iată codul care a făcut aceste simulări:
#--------------varying difference and sample sizes---------------
possible_diffs <- 10:200 / 100 # measured in standard deviations
# what sample size do we need to have 80% power
n_for_power <- sapply(possible_diffs, function(d){
as.numeric(pwrss.t.2means(mu1 = d, power = 0.8, verbose = FALSE)$n(1))
})
prop_fragile <- numeric(length(possible_diffs))
# This takes some minutes to run, could be better if parallelized or done in
# Julia if we thought saving those minutes was important:
for(j in 1:length(possible_diffs)){
for(i in 1:reps){
res(i) <- experiment(d = possible_diffs(j), n1 = n_for_power(j))
}
prop_fragile(j) <- mean(res > 0.01 & res < 0.05) / mean(res < 0.05)
}
# Plot 1
tibble(prop_fragile, possible_diffs) |>
ggplot(aes(x = possible_diffs,y= prop_fragile)) +
geom_point()+
scale_y_continuous(label = percent) +
labs(x = "Difference (in standard deviations) between two means",
y = "Proportion of significant p values \nthat are between 0.01 and 0.05",
title = "Two sample tests for difference between two means with power = 80%",
subtitle = "t test for independent samples at a combination of sample size and population difference\nneeded to give the desired power. Both populations are standard normal distributions.")
# Plot 2
tibble(prop_fragile, n_for_power) |>
ggplot(aes(x = n_for_power,y = prop_fragile)) +
geom_point() +
scale_x_sqrt() +
scale_y_continuous(label = percent) +
labs(x = "Sample size needed to get 80% power for given difference of means",
y = "Proportion of significant p values \nthat are between 0.01 and 0.05",
title = "Two sample tests for difference between two means with power = 80%",
subtitle = "t test for independent samples at a combination of sample size and population difference\nneeded to give the desired power. Both populations are standard normal distributions.")
Ipoteze relaxante
OK, așa că asta obținem atunci când calculul puterii s -a bazat pe o adevărată reprezentare a lumii, cunoscută înainte de a face experimentul. Evident, acesta nu este niciodată cazul (sau nu am avea nevoie să facem experimente) – diferența reală dintre două populații ar putea fi mai mare sau mai mică decât ne așteptam, ar putea fi de fapt exact zero, forma și răspândirea populațiilor vor diferi de ceea ce am crezut atunci când am calculat puterea etc.
Am decis să încerc trei pauze simple ale presupunerilor pentru a vedea ce impact au asupra celor 27% din p Valori fragile:
- Diferența reală între populații este un număr aleatoriu, deși în medie este ceea ce se așteaptă în timpul calculului puterii
- Diferența reală între populații este o flip de monedă între exact ceea ce se aștepta (când s -a făcut calculul puterii) și zero (adică ipoteza nulă se dovedește a fi adevărată)
- Diferența reală între populație este o flip de monedă între un număr aleatoriu cu medie la fel ca așteptat și zero (adică o combinație a primelor două scenarii)
#------------------when true d isn't what was expected---------------
reps <- 10000
res <- numeric(reps)
# we are going to let the actual difference deviate from that which was used
# in the power calculation, but say that on average the planned-for difference
# was correct
for(i in 1:reps){
res(i) <- experiment(d = rnorm(1, 0.55, 0.5), n1 = 53)
}
# "actual" power:
1 - mean(res > 0.05)
# proportion of so-called fragile p values is much less
summ2 <- mean(res > 0.01 & res < 0.05) / mean(res < 0.05)
#---------when true d is same as expected except half the time H0 is true---------
for(i in 1:reps){
res(i) <- experiment(d = sample(c(0, 0.55), 1), n1 = 53)
}
# proportion of so-called fragile p values is now *more*
summ3 <- mean(res > 0.01 & res < 0.05) / mean(res < 0.05)
#---------when true d is random, AND half the time H0 is true---------
for(i in 1:reps){
res(i) <- experiment(d = sample(c(0, rnorm(1, 0.55, 0.5)), 1), n1 = 53)
}
# proportion of so-called fragile p values is now less
summ4 <- mean(res > 0.01 & res < 0.05) / mean(res < 0.05)
tibble(`Context` = c(
"Difference is as expected during power calculation",
"Difference is random, but on average is as expected",
"Difference is as expected, except half the time null hypothesis is true",
"Difference is random, AND null hypothesis true half the time"
), `Proportion of p-values that are fragile` = c(summ1, summ2, summ3, summ4)) |>
mutate(across(where(is.numeric), \(x) percent(x, accuracy = 1)))
Asta ne primește aceste rezultate interesante:
Context | Proporția de valori p care sunt fragile |
---|---|
Diferența este așa cum se aștepta în timpul calculului puterii | 27% |
Diferența este aleatorie, dar în medie este așa cum era de așteptat | 16% |
Diferența este așa cum se aștepta, cu excepția jumătății de timp în timp, ipoteza nulă este adevărată | 29% |
Diferența este aleatorie, iar ipoteza nulă adevărată jumătate din timp | 20% |
Există o variație marcată aici în ce proporție de p Valorile sunt fragile. Probabil, a patra dintre aceste scenarii este cea mai apropiată aproximare a lumii reale (deși există o mulțime de dezbateri în acest sens, cât de mult sunt diferențele exact zero cu adevărat plauzibile?) Fie aceasta, fie celălalt scenariu realist („diferența este aleatorie, dar în medie este așa cum era de așteptat”) oferă o proporție de fragile fragile p Valori cu mult sub 27% pe care le -am văzut în scenariul nostru de bază.
Concluzie
Există prea mulți factori care au impact asupra proporției de p Valorile care vor fi cuprinse între 0,01 și 0,05 pentru a presupune că variațiile acesteia sunt fie o îmbunătățire, fie o agravare a practicilor de cercetare. Aceste lucruri includ:
- Când diferențele preconizate se schimbă și dimensiunile eșantionului se schimbă pentru a merge cu ele pentru un anumit nivel de putere, acesta are un impact semnificativ asupra proporției de fragilă p Valori pe care ne -am aștepta să le vedem
- Când lumea reală diferă de cea așteptată de cercetător atunci când și -au făcut calculul puterii, aceasta are un impact semnificativ asupra proporției de fragilă p Valori pe care ne -am aștepta să le vedem
- Oricum, cercetătorii nu își stabilesc toate dimensiunile eșantionului pentru a da 80% putere, din diverse motive, unele dintre ele bune și altele nu atât de bune
Gândire finală – Niciuna dintre cele de mai sus nu ne spune dacă avem sau nu o criză de replicare și, dacă da, dacă se îmbunătățește sau se înrăutățește. Așa cum se întâmplă, tind să cred că avem unul și că este foarte serios. Cred că procesul de revizuire de la egal la egal funcționează foarte slab și ar putea fi îmbunătățit, iar publicarea academică stabilește în general stimulente groaznice – și poate agravate -. Cu toate acestea, cred că criticile din ultimul deceniu au dus la îmbunătățiri (cum ar fi mai mult acces la codul și datele reproductibile, mai multe înregistrări pre-înregistrare, conștientizarea generală), ceea ce este în concordanță cu argumentul de fond al lui Bogdan aici. Pur și simplu nu cred că „fragil” p Valorile sunt multe dovezi în orice fel, iar dacă le monitorizăm deloc, ar trebui să facem acest lucru cu multă precauție.