Recientemente, surgió la necesidad de resolver un problema matemático aparentemente clásico. estadísticas
Se realiza una prueba de cierto efecto de empuje en un grupo de personas. Es necesario evaluar el efecto. Por supuesto, puede hacerlo utilizando un enfoque probabilístico.
Pero hablar con las empresas sobre las hipótesis nulas y el valor p es completamente inútil y contraproducente.
¿Cómo puede, a partir de febrero de 2019, hacer esto de la manera más simple y rápida posible con una computadora portátil de "mano promedio"? Nota abstracta, sin fórmulas.
Es una continuación de publicaciones anteriores .
Declaración del problema.
Hay dos grupos de usuarios medidos estadísticamente idénticos (A y B). El grupo B está afectado. ¿Este efecto conduce a un cambio en el valor promedio del indicador medido?
La opción más popular es calcular criterios estadísticos y sacar una conclusión. Me gusta el ejemplo de "Métodos estadísticos clásicos: prueba de chi-cuadrado" . En este caso, no importa cómo se haga esto, con la ayuda de especiales. programas, Excel, R o alguna otra cosa.
Sin embargo, la fiabilidad de los resultados puede ser muy dudosa por los siguientes motivos:
- De hecho, mat. Pocas personas entienden las estadísticas de principio a fin. Siempre debe tener en cuenta las condiciones bajo las cuales se puede aplicar uno u otro método.
- Como regla general, el uso de herramientas y la interpretación de los resultados se basan en el principio de un cálculo único y la adopción de una decisión de "semáforo". Cuantas menos preguntas, mejor para todos los participantes en el proceso.
Crítica del valor p
Una gran cantidad de materiales, enlaces a los más espectaculares de los encontrados:
- Naturaleza. Método científico: errores estadísticos. Los valores de P, el "estándar de oro" de la validez estadística, no son tan confiables como muchos científicos suponen., Regina Nuzzo. Naturaleza 506, 150-152
- Métodos de la naturaleza. El voluble valor de P genera resultados irreproducibles, Lewis G Halsey, Douglas Curran-Everett, Sarah L Vowler y Gordon B Drummond. Nature Methods, volumen 12, páginas 179–185 (2015)
- ELSEVIER Una docena sucia: doce conceptos erróneos del valor P, Steven Goodman. Seminarios en hematología, volumen 45, número 3, julio de 2008, páginas 135-140
Que se puede hacer
Ahora todos tienen una computadora a mano, por lo que el método Monte Carlo salva la situación. A partir de los cálculos del valor p, procedemos al cálculo de los intervalos de confianza para la diferencia en el promedio.
Hay muchos libros y materiales, pero en pocas palabras (resamapling y ajuste) se presenta de manera muy compacta en el informe de Jake Vanderplas - "Estadísticas para hackers" - PyCon 2016 . La presentación en sí.
Uno de los trabajos iniciales sobre este tema, incluidas las propuestas para la visualización gráfica, fue escrito por el conocido divulgador matemático de la era soviética, Martin Gardner: Intervalos de confianza en lugar de valores de P: estimación en lugar de prueba de hipótesis. MJ Gardner y DG Altman, Br Med J (Clin Res Ed). 1986 15 de marzo; 292 (6522): 746-750 .
¿Cómo usar R para esta tarea?
Para no hacer todo con nuestras manos en el nivel inferior, veamos el estado actual del ecosistema. No hace mucho tiempo, se transfirió a R. un paquete dabestr
muy conveniente : el análisis de datos mediante la estimación acoplada de Bootstrap .
Los principios de cálculo y análisis de los resultados utilizados en dabestr
en el formato de dabestr
trucos se describen aquí: ESTADÍSTICAS DE ESTIMACIÓN BETA ANALIZAN SUS DATOS CON TAMAÑOS DE EFECTO .
Ejemplo de R Notebook para "touch": --- title: "A/B bootstrap" output: html_notebook: self_contained: TRUE editor_options: chunk_output_type: inline ---
library(tidyverse) library(magrittr) library(tictoc) library(glue) library(dabestr)
Simulación
Crear una distribución lognormal de la duración de las operaciones.
my_rlnorm <- function(n, mean, sd){ # . : https://en.wikipedia.org/wiki/Log-normal_distribution#Arithmetic_moments location <- log(mean^2 / sqrt(sd^2 + mean^2)) shape <- sqrt(log(1 + (sd^2 / mean^2))) print(paste("location:", location)) print(paste("shape:", shape)) rlnorm(n, location, shape) } # N (A = Control) A_control <- my_rlnorm(n = 10^3, mean = 500, sd = 150) %T>% {print(glue("mean = {mean(.)}; sd = {sd(.)}"))} # N (B = Test) B_test <- my_rlnorm(n = 10^3, mean = 525, sd = 150) %T>% {print(glue("mean = {mean(.)}; sd = {sd(.)}"))}
Recopilamos los datos en la forma necesaria para el análisis utilizando herramientas dabestr
y dabestr
el análisis.
df <- tibble(Control = A_control, Test = B_test) %>% gather(key = "group", value = "value") tic("bootstrapping") two_group_unpaired <- df %>% dabest(group, value, # The idx below passes "Control" as the control group, # and "Test" as the test group. The mean difference # will be computed as mean(Test) - mean(Control). idx = c("Control", "Test"), paired = FALSE, reps = 5000 ) toc()
Echemos un vistazo a los resultados.
two_group_unpaired plot(two_group_unpaired)
=================================================== ====
Resultado como CI
DABEST (Data Analysis with Bootstrap Estimation) v0.2.0 ======================================================= Unpaired mean difference of Test (n=1000) minus Control (n=1000) 223 [95CI 209; 236] 5000 bootstrap resamples. All confidence intervals are bias-corrected and accelerated.
y fotos

bastante comprensible y conveniente para hablar con negocios. Todos los cálculos fueron para una "taza de café".
Publicación anterior - "Ciencia de datos" fuerzas especiales "internamente" .