Quale test statistico usare per il test A / B?


12

Abbiamo due coorti di 1000 campioni ciascuno. Misuriamo 2 quantità su ogni coorte. La prima è una variabile binaria. Il secondo è un numero reale che segue una forte distribuzione della coda. Vogliamo valutare quale coorte si comporta meglio per ciascuna metrica. Ci sono molti test statistici tra cui scegliere: le persone suggeriscono z-test, altri usano t-test e altri Mann – Whitney U.

  • Quale test o test dovremmo scegliere per ogni metrica per il nostro caso?
  • Cosa succede se un test suggerisce una differenza significativa tra le coorti e qualche altro test suggerisce una differenza non significativa?

Risposte:


12

Dato che le tue due metriche sono 1) binarie e 2) a coda pesante, dovresti evitare il test t che presuppone distribuzioni normali.

Penso che Mann-Whitney U sia la tua scelta migliore e dovrebbe essere sufficientemente efficiente anche se le tue distribuzioni erano quasi normali.

Per quanto riguarda la tua seconda domanda:

Cosa succede se un test suggerisce una differenza significativa tra le coorti e qualche altro test suggerisce una differenza non significativa?

Ciò non è insolito se la differenza statistica è al limite e i dati hanno distribuzioni campione "disordinate". Questa situazione richiede all'analista di considerare attentamente tutte le ipotesi e le limitazioni di ciascun test statistico e di dare il massimo peso al test statistico che presenta il minor numero di violazioni delle ipotesi.

Prendi il presupposto della distribuzione normale. Esistono vari test per la normalità, ma non è la fine della storia. Alcuni test funzionano abbastanza bene su distribuzioni simmetriche anche se c'è qualche deviazione dalla normalità, ma non funzionano bene su distribuzioni distorte.

Come regola generale, suggerirei di non eseguire alcun test in cui una qualsiasi delle sue ipotesi è chiaramente violata.

EDIT: per la seconda variabile, potrebbe essere fattibile trasformare la variabile in una che è normalmente distribuita (o almeno chiusa) fintanto che la trasformazione mantiene l'ordine. Devi avere la certezza che la trasformazione produce una distribuzione normale per entrambe le coorti. Se si adatta la seconda variabile alla distribuzione normale del registro, una funzione di registro la trasforma in una distribuzione normale. Ma se la distribuzione è Pareto (legge del potere), allora non c'è trasformazione in una distribuzione normale.

EDIT: Come suggerito in questo commento , dovresti assolutamente considerare la stima bayesiana come alternativa al test t e ad altri test di significatività dell'ipotesi nulla (NHST).


Grazie per le informazioni. Non ero abbastanza chiaro, ne ho due di cui uno binario e un altro che è un numero reale a seguito della distribuzione della coda pesante. Ho modificato la domanda per chiarire questo.
iliasfl,

Sì, penso di aver capito. Si desidera eseguire il test due volte, una volta sulla variabile binaria e una volta sulla variabile reale (distribuzione dalla coda pesante). Raccomando di far funzionare la Mann-Whitney U per entrambi.

Perché un Mann-Whitney sarebbe adatto per i dati binari?
Glen_b -Restate Monica

Mann-Whitney U è efficace per le distribuzioni non normali, comprese le distribuzioni discrete con due valori (cioè binario). Se tutti i dati fossero binari, forse un altro test avrebbe funzionato meglio.
MrMeritology il

Qualcuno può confermare se questo è vero? ...

7

Per i dati con valori reali, potresti anche prendere in considerazione la possibilità di generare la tua statistica di test basata su un bootstrap dei tuoi dati. Questo approccio tende a produrre risultati accurati quando si ha a che fare con distribuzioni demografiche non normali o quando si cerca di sviluppare un intervallo di confidenza attorno a un parametro che non ha una soluzione analitica conveniente. (Il primo è vero nel tuo caso. Cito solo il secondo per contesto.)

Per i tuoi dati con valore reale, dovresti fare quanto segue:

  1. Metti insieme le tue due coorti.
  2. Dal pool, campiona due gruppi di 1000 elementi, con sostituzione.
  3. Calcola la differenza nella media del campione tra i due gruppi.
  4. Ripeti i passaggi 2 e 3 alcune migliaia di volte per sviluppare una distribuzione di queste differenze.

Una volta ottenuta quella distribuzione, calcola la differenza nelle medie per i tuoi campioni reali e calcola un valore p.


Grazie, quindi finisci con una distribuzione, che dovrebbe essere normale con qualche deviazione media e standard. Come calcoleresti il ​​valore p da quello, e forse gli intervalli di confidenza, per decidere il vincitore (se ce n'è uno)?
iliasfl,

La distribuzione non sarebbe necessariamente normale. Avrebbe all'incirca la distribuzione di qualunque cosa fosse campionata. Questa è la bellezza dell'utilizzo di un bootstrap. In ogni caso, si ottiene un valore p calcolando la statistica del test dai risultati effettivi. Cioè la differenza dei mezzi di ogni coorte. Quindi confrontare quel numero con la distribuzione. Il percentile che ottieni è il tuo valore p per un test unilaterale per la differenza nella media.
Nathan Gould,

4
Ciò che Nathan sta descrivendo è anche la base per i metodi bayesiani di test di significatività. Ho usato (e attualmente uso) l' approccio bayesiano sostituisce l' approccio T-Test (BEST). Dovresti guardare quel framework se intendi implementare un approccio di pooling.
cwharland,

0

Io secondo la risposta di MrMeritology. In realtà mi chiedevo se il test MWU sarebbe stato meno potente del test di proporzioni indipendenti, dal momento che i libri di testo che ho appreso e usato per insegnare dicevano che la MWU può essere applicata solo ai dati ordinali (o intervallo / rapporto).

Ma i miei risultati della simulazione, riportati di seguito, indicano che il test MWU è in realtà leggermente più potente del test proporzionale, mentre controlla bene l'errore di tipo I (con una proporzione di popolazione del gruppo 1 = 0,50).

inserisci qui la descrizione dell'immagine

La percentuale di popolazione del gruppo 2 è mantenuta a 0,50. Il numero di iterazioni è 10.000 in ciascun punto. Ho ripetuto la simulazione senza la correzione di Yate ma i risultati erano gli stessi.

library(reshape)

MakeBinaryData <- function(n1, n2, p1){
  y <- c(rbinom(n1, 1, p1), 
        rbinom(n2, 1, 0.5))
  g_f <- factor(c(rep("g1", n1), rep("g2", n2)))
  d <- data.frame(y, g_f)
  return(d)
}

GetPower <- function(n_iter, n1, n2, p1, alpha=0.05, type="proportion", ...){
  if(type=="proportion") {
    p_v <- replicate(n_iter, prop.test(table(MakeBinaryData(n1, n1, p1)), ...)$p.value)
  }

  if(type=="MWU") {
    p_v <- replicate(n_iter, wilcox.test(y~g_f, data=MakeBinaryData(n1, n1, p1))$p.value)
  }

  empirical_power <- sum(p_v<alpha)/n_iter
  return(empirical_power)
}

p1_v <- seq(0.5, 0.6, 0.01)
set.seed(1)
power_proptest <- sapply(p1_v, function(x) GetPower(10000, 1000, 1000, x))
power_mwu <- sapply(p1_v, function(x) GetPower(10000, 1000, 1000, x, type="MWU"))

l'immagine del tuo risultato è tutta nera
Ooker il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.