Utiliser la puissance de calcul de R pour tester l'hypothèse d'égalité des moyens

Récemment, un besoin est apparu pour résoudre un problème mathématique apparemment classique. statistiques.
Un test d'un certain effet de poussée sur un groupe de personnes est en cours. Il est nécessaire d'évaluer l'effet. Bien sûr, vous pouvez le faire en utilisant une approche probabiliste.


Mais parler avec les entreprises d'hypothèses nulles et de la valeur de la valeur p est complètement inutile et contre-productif.


Comment, à partir de février 2019, cela peut-il se faire le plus simplement et le plus rapidement possible avec un ordinateur portable «main moyenne» à portée de main? Note abstraite, pas de formules.


Il s'agit d'une continuation des publications précédentes .


Énoncé du problème


Il existe deux groupes d'utilisateurs mesurés statistiquement identiques (A et B). Le groupe B est affecté. Cet effet conduit-il à une modification de la valeur moyenne de l'indicateur mesuré?


L'option la plus populaire consiste à calculer des critères statistiques et à tirer une conclusion. J'aime l'exemple des "Méthodes statistiques classiques: test du chi carré" . Dans ce cas, peu importe comment cela se fait, en utilisant des spéciaux. programmes, Excel, R ou autre chose.


Cependant, la fiabilité des résultats peut être très douteuse pour les raisons suivantes:


  1. En fait, mat. peu de gens comprennent les statistiques du début à la fin. Vous devez toujours garder à l'esprit les conditions dans lesquelles l'une ou l'autre méthode peut être appliquée.
  2. En règle générale, l'utilisation d'outils et l'interprétation des résultats reposent sur le principe d'un calcul unique et l'adoption d'une décision «feu tricolore». Moins il y a de questions, mieux c'est pour tous les participants au processus.

Critique de la valeur p


De nombreux matériaux, des liens vers les plus spectaculaires de ceux trouvés:



Que peut-on faire?


Maintenant que tout le monde a un ordinateur à portée de main, la méthode Monte Carlo sauve la situation. A partir des calculs de p-value, nous procédons au calcul des intervalles de confiance pour la différence de moyenne.


Il existe de nombreux livres et matériaux, mais en bref (rééchantillonnage et ajustement) est présenté de manière très compacte dans le rapport de Jake Vanderplas - «Statistics for Hackers» - PyCon 2016 . La présentation elle-même.


L'un des premiers travaux sur ce sujet, comprenant des propositions de visualisation graphique, a été écrit par le célèbre mathématicien vulgarisateur de l'ère soviétique, Martin Gardner: Intervalles de confiance plutôt que valeurs P: estimation plutôt que test d'hypothèse. MJ Gardner et DG Altman, Br Med J (Clin Res Ed). 1986 15 mars; 292 (6522): 746-750 .


Comment utiliser R pour cette tâche?


Afin de ne pas tout faire de nos mains au niveau inférieur, regardons l'état actuel de l'écosystème. Il n'y a pas si longtemps, un package dabestr très pratique : l'analyse des données à l'aide de l'estimation couplée au bootstrap a été transférée vers R.


Les principes de calcul et d'analyse des résultats utilisés dans dabestr dans le format de dabestr triche sont décrits ici: STATISTIQUES D'ESTIMATION BETA ANALYSER VOS DONNÉES AVEC DES TAILLES D'EFFETS .


Exemple de bloc-notes R pour "toucher":
 --- 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) 

La simulation


Créez une distribution log-normale de la durée des opérations.


 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(.)}"))} 

Nous collectons les données sous la forme nécessaire à l'analyse à l'aide des outils dabestr et effectuons l'analyse.


 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() 

Jetons un coup d'œil aux résultats


 two_group_unpaired plot(two_group_unpaired) 

=================================================== ====


Résultat en tant qu'IC


 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. 

et photos
image
tout à fait compréhensible et pratique pour parler avec les entreprises. Tous les calculs concernaient une «tasse de café».


Publication précédente - «Data Science» des forces spéciales «en interne» .

Source: https://habr.com/ru/post/fr441192/


All Articles