Tres situaciones. La primera:
n <- 20 y <- 15 test <- prop.test(y, n, p = .5) test$p.value # [1] 0.04417134 test$conf.int # 0.5058845 0.9040674 La segunda:
n <- 200 y <- 115 test <- prop.test(y, n, p = 0.5) test$p.value #[1] 0.04030497 test$conf.int # 0.5032062 0.6438648 Y la tercera:
n <- 2000 y <- 1046 test <- prop.test(y, n, p = 0.5) test$p.value #[1] 0.0418688 test$conf.int # 0.5008370 0.5450738 En resumen:
Subrayo hoy aquí tres cuestiones que considero importantes del reciente artículo Prediction, Estimation, and Attribution de B. Efron (para otra visión, véase esto).
La primera es que existe una cadena de valor en la modelización estadística que va del producto más ordinario, la predicción, a la estimación y de este, al más deseable, la atribución. En la terminología de Efron,
estimación consiste en la determinación de los parámetros subyacentes (e importantes) del modelo; específicamente se refiere a la estimación puntual; atribución tiene que ver con intervalos de confianza, p-valores, etc.
Lo que no hay que hacer nunca si no quieres que se enteren de que eres inmensamente cutre es escribir código en las líneas del siguiente seudocódigo:
m = model(y ~ a + b + c) if (modelo.p_value(a) > .05) m = model(y ~ b + c) ¡No, no, no, no, NO!
Los números de esta entrada son reales aunque disfrazados: proceden de un proyecto real. Para medir la efectividad de una serie de modelos que hemos creado en Circiter, hemos pedido al cliente lo de siempre: que parta la lista de sujetos en dos al azar para después poder medir los éxitos y fracasos usando dos procedimientos distintos.
Pero como tenemos dudas acerca del proceso de partición —que no controlamos nosotros— hemos medido el número de éxitos y fracasos en cada uno de los grupos en una prueba previa.
Hoy escribo brevemente para comentar una herramienta con la que ayudar a pretendidos investigadores a hacer ciencia. Las instrucciones están aquí y la herramienta con la que entrenarse, aquí.
¡Feliz contribución a ese futuro que sin ciencia dizque no será!
Tengo un montón de artículos por ahí guardados que fueron escritos a raíz de la publicación de The ASA’s Statement on p-Values: Context, Process, and Purpose, ya en 2016, que ponía en cuestión el uso indiscriminado y acrítico de los p-valores. Algunos de ellos son este, este, este o este.
Asunto que se refiere a y abunda en todo lo que se ha escrito sobre la llamada crisis de replicabilidad, sobre la que también se ha escrito largamente.
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.
A sus 72 años, en 1994, J. Cohen dejó casi para la posteridad un excelente artículo, The earth is round (p < .05).
Traduzco el resumen:
Tras cuatro décadas de severa crítica, el ritual del contraste de hipótesis (NHST) —decisiones mecánicas y dicotómicas alrededor del sagrado criterio del 0.05— todavía perdura. Este artículo repasa los problemas derivados de esta práctica, incluyendo la casi universal malinterpretación del p-valor como la probabilidad de que H0 sea falsa, la malinterpretación de su complementario como la probabilidad de una réplica exitosa y la falsa premisa de que rechazar H0 valida la teoría que condujo a la prueba.
Y termino con lo de los intervalos. Me refiero a esto y esto.
Nunca me habría atrevido a escribir sobre el tema, y exponerme, de paso, a la muy razonadas explicaciones de quienes tuvieron a bien comentarlas, si no hubiese sido por un tema personal: el recuerdo de la frustración que me supuso hacerme en su día con la teoría subyacente tanto a las pruebas de hipótesis como a la construcción de intervalos de confianza.
De acuerdo con el saber popular, pruebas que rechazan acompañan a intervalos de confianza que no contienen.
Pero
foo <- function(N, p = 0.7){ n <- qbinom(0.975, N, p) tmp <- binom.test(n, N, p) c(tmp$p.value, tmp$conf.int, tmp$conf.int[1] < p & p < tmp$conf.int[2]) } res <- as.data.frame(t(sapply(20:200, foo))) res$n <- 20:200 res[res$V1 < 0.05,] no tiene cero filas.
Diríase que dos fenómenos vinculados de forma muy significativa guardan una potente relación causal. Creo que eso es lo que entendería cualquiera.
Traigo pues a colación dos fenómenos. El primero es
Y el segundo,
¿Diríais que están vinculados de forma muy significativa?
Pues si en lugar de fiaros de vuestros propios ojos, lo hacéis de Berta Rivera, Bruno Casal o Luis Currais, los autores de The economic crisis and death by suicide in Spain: Empirical evidence based on a data panel and the quantification of losses in labour productivity; o de David Lombao (que divulga el anterior aquí en El Diario), la respuesta es sí.
Hará ya un par de años, un señor muy importante divulgaba en su bitácora los resultados de un estudio relativo a la educación en España que acababa de publicar. Dedicaba una pequeña parte de la entrada a cuestiones metodológicas y el resto a cuestiones normativas: dado que he encontrado esto y aquello con un p-valor de tal, no otro remedio queda que aplicar todas estas medidas que aquí enumero, era el resumen de todo.
Acá va otra selección de cuatro enlaces relevantes –que no necesariamente nuevos— de la semana. El primero, Using Metadata to find Paul Revere recoge a modo de historia, que algunos encontrarán amena, una aplicación de rudimentos del álgebra lineal al análisis de redes sociales. Dada una matriz de incidencia A (personas que pertenecen a clubes) es posible calcular índices de proximidad entre personas (o entre clubes) calculando no más AA'. El resto hasta ganar el premio de Netflix es pura heurística.