p-curvas
Primero, una simulación:
n <- 100
delta <- 0.2
n.iter <- 10000
p_valores <- function(n, delta){
tmp <- replicate(n.iter, {
x <- rnorm(n)
y <- rnorm(n, mean = delta)
t.test(x, y)$p.value
})
res <- tmp[tmp < 0.05]
hist(res, freq = FALSE, xlab = "p value", ylab = "", col = "gray", main = "histograma de p-valores publicables")
res
}
null_effect_p_values <- p_valores(n, 0)
some_effect_p_values <- p_valores(n, delta)
Lo que simula son n.iter
experimentos en los que se comparan n
valores N(0,1) con otros n
valores N(delta
, 1) y se extrae el correspondiente p-valor. Luego se grafican los publicables (<0.05).
Cuando diff
es 0, sucede:
- No hay diferencia entre x e y, i.e., no hay efecto real.
- Los p-valores tienen una distribución uniforme en [0,1] y, por tanto, también en [0, 0.05].
Así que la p-curva tiene una forma característica, aproximadamente como
Si, por el contrario, existe un efecto (delta
= 0.2), la p-curva de los p-valores publicables tiene un sesgo observable:
Las p-curvas son útiles cuando partes interesadas comienzan a publicar artículos y artículos sobre un tema determinado donde, con excesiva frecuencia, no hay nada que rascar (delta
= 0). La forma de la p-curva construida con los p-valores de la literatura sobre el asunto puede ayudar a identificar esos campos nulos y denunciar a los charlatanes.