¿Por qué la recopilación de datos hasta obtener un resultado significativo aumenta la tasa de error Tipo I?

60

Me preguntaba exactamente por qué recopilar datos hasta un resultado significativo (p. Ej., p<.05 se obtiene ) (es decir, piratería informática) aumenta la tasa de error de Tipo I?

También agradecería mucho una Rdemostración de este fenómeno.

Reza
fuente
66
Probablemente te refieres a "p-hacking", porque "harking" se refiere a "Hipótesis después de que se conozcan los resultados" y, aunque eso podría considerarse un pecado relacionado, no es por lo que pareces estar preguntando.
whuber
2
Una vez más, xkcd responde una buena pregunta con imágenes. xkcd.com/882
Jason
77
@ Jason Tengo que estar en desacuerdo con su enlace; eso no habla sobre la recopilación acumulativa de datos. El hecho de que incluso la recopilación acumulativa de datos sobre la misma cosa y el uso de todos los datos que tiene para calcular el valor pags sea ​​incorrecto es mucho más no trivial que el caso en ese xkcd.
JiK
1
@JiK, llamada justa. Estaba centrado en el aspecto "seguir intentándolo hasta obtener un resultado que nos guste", pero tienes toda la razón, hay mucho más en la pregunta en cuestión.
Jason
@whuber y user163778 dieron respuestas muy similares a las discutidas para el caso prácticamente idéntico de "prueba A / B (secuencial)" en este hilo: stats.stackexchange.com/questions/244646/… Allí, discutimos en términos de Family Wise Error tasas y necesidad de ajuste del valor p en pruebas repetidas. ¡Esta pregunta, de hecho, puede considerarse como un problema de prueba repetido!
tomka

Respuestas:

87

El problema es que te estás dando demasiadas oportunidades para pasar la prueba. Es solo una versión elegante de este diálogo:

Te voltearé para ver quién paga la cena.

OK, llamo a los jefes.

Ratas, ganaste. ¿Los dos mejores de tres?


Para comprender esto mejor, considere un modelo simplificado, pero realista, de este procedimiento secuencial . Suponga que comenzará con una "ejecución de prueba" de un cierto número de observaciones, pero está dispuesto a continuar experimentando durante más tiempo para obtener un valor p menor que . La hipótesis nula es que cada observación X i proviene (independientemente) de una distribución Normal estándar. La alternativa es que el X i viene independientemente de una distribución normal de varianza unitaria con una media distinta de cero. El estadístico de prueba será la media de todas las n observaciones, ˉ X , dividido por su error estándar, 1 / 0,05XyoXyonorteX¯ . Para una prueba de dos lados, los valores críticos son lospuntos porcentuales de0.025y0.975de la distribución Normal estándar,Zα=±1.96aproximadamente.1/ /norte0,0250.975Zα=±1,96

Esta es una buena prueba, para un solo experimento con un tamaño de muestra fijo . Tiene exactamente un 5 % de posibilidades de rechazar la hipótesis nula, sin importar cuál sea n .norte5 5%norte

Vamos a convertir algebraicamente esto a un ensayo equivalente en base a la suma de todos los valores, S n = X 1 + X 2 + + X n = n ˉ X .norte

Snorte=X1+X2++Xnorte=norteX¯.

Por lo tanto, los datos son "significativos" cuando

El |ZαEl |El |X¯1/ /norteEl |=El |Snortenorte/ /norteEl |=El |SnorteEl |/ /norte;

es decir,

(1)El |ZαEl |norteEl |SnorteEl |.

Si somos inteligentes, reduciremos nuestras pérdidas y nos rendiremos una vez norte crezca mucho y los datos aún no hayan ingresado a la región crítica.

Esto describe una caminata aleatoria . La fórmula ( 1 ) equivale a erigir una "valla" o barrera parabólica curva alrededor de la trama de la caminata aleatoria ( n , S n ) : el resultado es "significativo" si lo haySnorte(1)(norte,Snorte) punto de la caminata aleatoria golpea la cerca.

Es una propiedad de las caminatas aleatorias que si esperamos lo suficiente, es muy probable que en algún momento el resultado se vea significativo.

Aquí hay 20 simulaciones independientes hasta un límite de muestras. Todos comienzan a probar en n = 30 muestras, en cuyo punto verificamos si cada punto se encuentra fuera de las barreras que se han dibujado de acuerdo con la fórmula ( 1 ) . Desde el punto en que la prueba estadística es primero "significativa", los datos simulados son de color rojo.norte=5000norte=30(1)

Figura

Puedes ver lo que está sucediendo: la caminata aleatoria sube y baja cada vez más a medida que norte aumenta . Las barreras se están separando aproximadamente a la misma velocidad, pero no siempre lo suficientemente rápido como para evitar la caminata aleatoria.

En el 20% de estas simulaciones, se encontró una diferencia "significativa", generalmente bastante temprano, ¡aunque en cada una de ellas la hipótesis nula es absolutamente correcta! Ejecutar más simulaciones de este tipo indica que el tamaño real de la prueba es cercano al lugar del valor previsto de α = 5 % : es decir, su disposición a seguir buscando "significancia" hasta un tamaño de muestra de 5000 le da un 25 % de posibilidades de rechazar el nulo incluso cuando el nulo es verdadero.25%α=5 5%500025%

Observe que en los cuatro casos "significativos", a medida que continuaban las pruebas, los datos dejaron de parecer significativos en algunos puntos. En la vida real, un experimentador que se detiene temprano está perdiendo la oportunidad de observar tales "reversiones". Esta selectividad a través de la detención opcional sesga los resultados.

En las pruebas secuenciales de honestidad, las barreras son líneas. Se extienden más rápido que las barreras curvas que se muestran aquí.

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)
whuber
fuente
12
+1. ¿Alguna caminata aleatoria eventualmente cruza las barreras con probabilidad 1? Sé que la distancia esperada después de pasos es O ( nortey miré hacia arriba ahora que la constante de proporcionalidad esO(norte) , que es menor que 1.96. Pero no estoy seguro de qué hacer con eso. 2/ /π
ameba dice Reinstate Monica
10
@amoeba Esa es una gran pregunta, que hice todo lo posible para esquivar :-). Si hubiera podido calcular la respuesta rápidamente (o saberlo de antemano) la habría publicado. Lamentablemente, estoy demasiado ocupado para abordarlo analíticamente en este momento. La simulación más larga que he hecho fue de 1,000 iteraciones mirando hasta con α = 0.05 . La proporción de resultados "significativos" parece estabilizarse cerca de 1 / 4 . norte=5 5,000,000α=0,051/ /4 4
whuber
44
La pregunta sobre la probabilidad de alcanzar el límite es interesante. Me imagino que la teoría de Einsteins del movimiento browniano, relacionándola con una ecuación de difusión, podría ser un ángulo interesante. Tenemos una función de distribución que se extiende con una tasa α=0,05 una "pérdida de partículas" igual a la mitad del valor de la función de distribución en este límite (la mitad se aleja de cero, sobre el borde, la otra mitad regresa). A medida que esta función de distribución se extiende y se vuelve más delgada, la "pérdida" se vuelve menos. Me imagino que esto efectivamente creará un límite, es decir, este 1/4. norte
Sextus Empiricus
66
¿Por qué razón intuitiva que obtendrá un en algún momento casi con toda seguridad: Deje n 1 = 10 y n k + 1 = 10 n k . El valor p después de las primeras pruebas n k + 1 es bastante independiente del valor p después de las primeras pruebas n k . Por lo tanto, tendrá un número infinito de valores p "casi" independientes , por lo que se garantiza que uno de ellos será < 0.05pags<0,05norte1=10nortek+1=10nortekpagsnortek+1pagsnortekpags<0,05. Por supuesto, la convergencia real es mucho más rápida de lo que dice este argumento. (Y si no te gusta , puedes probar A ( n k ) o B B ( n k ) ...)10nortekUNA(nortek)sisi(nortek)
JiK
10
@CL. Yo esperaba su objeción hace varios años: 17 es mi semilla pública. De hecho, en los primeros ensayos (mucho más largos) obtuve consistentemente mayores tasas de significancia sustancialmente mayores al 20%. Establecí la semilla en 17 para crear la imagen final y me decepcionó que el efecto no fuera tan dramático. Así es la vida. Una publicación relacionada (que ilustra su punto) está en stats.stackexchange.com/a/38067/919 .
whuber
18

Las personas que son nuevas en las pruebas de hipótesis tienden a pensar que una vez que el valor p cae por debajo de 0,05, agregar más participantes solo disminuirá aún más el valor p. Pero esto no es verdad. Bajo la hipótesis nula, el valor de p se distribuye uniformemente entre 0 y 1 y puede rebotar bastante en ese rango.

He simulado algunos datos en R (mis habilidades en R son bastante básicas). En esta simulación, recopilo 5 puntos de datos, cada uno con una pertenencia a un grupo seleccionado al azar (0 o 1) y cada uno con una medida de resultado seleccionada al azar ~ N (0,1). A partir del participante 6, realizo una prueba t en cada iteración.

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
}

Los valores de p están en esta figura. Tenga en cuenta que encuentro resultados significativos cuando el tamaño de la muestra es de alrededor de 70-75. Si me detengo allí, terminaré creyendo que mis hallazgos son significativos porque habré pasado por alto el hecho de que mis valores de p volvieron a subir con una muestra más grande (esto realmente me sucedió una vez con datos reales). Como sé que ambas poblaciones tienen una media de 0, esto debe ser un falso positivo. Este es el problema con la adición de datos hasta p <.05. Si agrega realizar suficientes pruebas, p eventualmente cruzará el umbral de .05 y puede encontrar un efecto significativo en cualquier conjunto de datos.

ingrese la descripción de la imagen aquí

TPM
fuente
1
Gracias pero su Rcódigo no se ejecuta en absoluto.
Reza
3
@Reza necesitaría crear dfprimero (preferiblemente en su tamaño final). Dado que el código comienza a escribirse en la fila 6, la implicación (que encaja con el texto de la respuesta) es que df ya existe con 5 filas ya rellenadas. Tal vez algo como esto fue intencionado: 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)(luego ejecute el código anterior) entonces quizás: plot(df$pv[6:150])
Glen_b
@ user263778 respuesta útil y pertinente muy enfocada. Pero hay demasiada confusión sobre la interpretación del valor p llamado - belleza de baile.
Subhash C. Davar
@ user163778 - también debe incluir el código para inicializar todo
Dason
17

Esta respuesta solo se refiere a la probabilidad de obtener un resultado "significativo" y la distribución del tiempo para este evento bajo el modelo de @ whuber.

Como en el modelo de @whuber, dejemos que denote el valor del estadístico de prueba después de que se hayan recopilado t observaciones y suponga que las observaciones X 1 , X 2 , ...S(t)=X1+X2++XttX1,X2,...

(1)S(t+h)El |S(t)=s0 0norte(s0 0,h),
S(t)

TS(t)±zα/ /2t

Considere el proceso transformado obtenido escalando S ( t ) por su desviación estándar en el tiempo t y dejando la nueva escala de tiempoY(τ)S(t)tτ=Ent

(2)Y(τ)=S(t(τ))t(τ)=eτ/2S(eτ).
Y(τ+δ)
mi(Y(τ+δ)El |Y(τ)=y0 0)=mi(mi-(τ+δ)/ /2S(miτ+δ)El |S(miτ)=y0 0miτ/ /2)(3)=y0 0mi-δ/ /2
Var(Y(τ+δ)El |Y(τ)=y0 0)=Var(mi(τ+δ)/ /2S(miτ+δ)El |S(miτ)=y0 0miτ/ /2)(4)=1-mi-δ,
Y(τ)

ingrese la descripción de la imagen aquí

±zα/ /2TY(τ)λ±zα/ /2λ^=0,125α=0,05ατ=0 0H0 0T=miT

(5)miT1+(1-α)0 0miτλmi-λτreτ.
Tλ>1α

Lo anterior ignora el hecho de que TmiTtt+1t

PAGS(T>t)

ingrese la descripción de la imagen aquí

Código 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)
Jarle Tufto
fuente
¡Gracias! ¿Tiene alguna referencia (estándar) para estos resultados? Por ejemplo, ¿por qué el proceso Y es un Ornstein-Uhlenbeck y dónde podemos encontrar el resultado del tiempo de paso indicado?
Grassie
1
Tτ=0 0Y(0 0)
@Grassie También vea math.stackexchange.com/questions/1900304/…
Jarle Tufto
Y(0 0)
5

Es necesario decir que la discusión anterior es para una visión del mundo frecuentista para la cual la multiplicidad proviene de las posibilidades de que los datos sean más extremos, no de las posibilidades de que exista un efecto para existir. La causa raíz del problema es que los valores p y los errores de tipo I utilizan el condicionamiento del flujo de información hacia atrás en el tiempo hacia atrás, lo que hace que sea importante "cómo llegó aquí" y lo que podría haber sucedido en su lugar. Por otro lado, el paradigma bayesiano codifica el escepticismo sobre un efecto en el parámetro en sí, no en los datos. Eso hace que cada probabilidad posterior se interprete de la misma manera, ya sea que haya calculado otra probabilidad posterior de un efecto hace 5 minutos o no. Puede encontrar más detalles y una simulación simple en http://www.fharrell.com/2017/10/continuous-learning-from-data-no.

Frank Harrell
fuente
1
Imaginemos un laboratorio dirigido por el Dr. B, que es un devoto bayesiano. El laboratorio está estudiando el cebado social y ha producido un flujo constante de documentos que muestran varios efectos del cebado, cada vez respaldado por el factor de Bayes BF> 10. Si nunca hacen pruebas secuenciales, parece bastante convincente. Pero digamos que aprendo que siempre hacen pruebas secuenciales y siguen obteniendo nuevos sujetos hasta que obtienen BF> 10 a favor de los efectos de cebado . Entonces, claramente, todo este trabajo no tiene valor. El hecho de que hagan pruebas secuenciales + selección hace una gran diferencia, sin importar si se basa en valores p de BF.
ameba dice Reinstate Monica
1
0,95
1
Leí tu publicación de blog, noté la cita y miré un artículo similar ( Parada opcional: no hay problema para los bayesianos ) que alguien más se vinculó en los comentarios a otra respuesta. Aún no lo entiendo. Si el "nulo" (ausencia de efectos de cebado) es verdadero, entonces si el Dr. B está dispuesto a tomar muestras durante el tiempo suficiente, podrá obtener una probabilidad posterior> 0,95 cada vez que ejecute el experimento (exactamente como el Dr. F podría obtener p <0.05 cada vez). Si esto no es "absolutamente nada malo", entonces no sé qué es.
ameba dice Reinstate Monica
2
Bueno, disputo este "punto más grande". No creo que esto sea cierto. A medida que repito, bajo el efecto nulo de cero y con cualquier previo dado (digamos un amplio previo continuo centrado en cero), el muestreo repetido siempre tarde o temprano producirá> 0.98 probabilidad posterior concentrada por encima de cero. Una persona que muestrea hasta que esto suceda (es decir, aplicando esta regla de detención) se equivocará cada vez . ¿Cómo puedes decir que esta persona se equivocará solo 0.02 de las veces? No entiendo. En estas circunstancias particulares, no, no lo hará, siempre estará equivocado.
ameba dice Reinstate Monica
2
No creo que lo sea. Mi punto más importante es que es injusto e inconsistente culpar simultáneamente a los procedimientos frecuentes por sufrir pruebas secuenciales y defender que los procedimientos bayesianos no se ven afectados por las pruebas secuenciales. Mi punto (que es un hecho matemático) es que ambos se ven afectados exactamente de la misma manera, lo que significa que las pruebas secuenciales pueden aumentar el error Bayesiano tipo I hasta el 100%. Por supuesto, si dice que, por principio, no le interesan las tasas de error tipo I, entonces es irrelevante. Pero tampoco se debe culpar a los procedimientos frecuentistas por eso.
ameba dice Reinstate Monica
3

norteX1θ=θ0 0tαCnorteX2(X1,X2)K

Este problema ya parece haber sido abordado por P. Armitage, CK McPherson y BC Rowe (1969), Journal of the Royal Statistical Society. Serie A (132), 2, 235-244: "Pruebas de significancia repetidas en la acumulación de datos" .

El punto de vista bayesiano sobre este tema, también discutido aquí, es, por cierto, discutido en Berger y Wolpert (1988), "El Principio de Probabilidad" , Sección 4.2.

K>1α

K

ingrese la descripción de la imagen aquí

K

ingrese la descripción de la imagen aquí

K

ingrese la descripción de la imagen aquí

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")
Christoph Hanck
fuente