Riesci a calcolare la potenza di un test di Kolmogorov-Smirnov in R?


10

È possibile eseguire un'analisi della potenza per un test Kolmogorov Smirnov su 2 lati in R?

Sto testando se due distribuzioni empiriche differiscono usando ks.test () e sto cercando di aggiungere un'analisi di potenza.

Non sono stato in grado di trovare analisi di potenza integrate per i test KS in R. Qualche suggerimento?

Modifica : si tratta di distribuzioni generate casualmente che ravvicinano strettamente i miei dati (con dimensioni reali del campione e tassi di decadimento stimati per le distribuzioni esponenziali)

set.seed(100)
x <- rexp(64, rate=0.34)
y <- rexp(54,rate=0.37)

#K-S test: Do x and y come from same distribution?
ks.test(x,y)

Questi dati sono misure della dimensione corporea in due diversi gruppi. Voglio dimostrare che i due gruppi hanno essenzialmente la stessa distribuzione, ma un collaboratore mi ha chiesto se avessi il potere di dirlo in base alle dimensioni del campione. Ho attinto casualmente da una distribuzione esponenziale qui, ma questi sono vicini ai dati reali.

Finora, ho detto che non vi è alcuna differenza significativa in queste distribuzioni basate sul test KS su due lati. Ho anche tracciato le due distribuzioni. Come posso dimostrare di avere il potere di fare una simile affermazione, date le dimensioni del campione e i tassi di decadimento per xey?


4
La potenza dipenderà da molte cose, motivo per cui non ci sarebbe un built-in per i due test di esempio. Puoi simulare per determinate situazioni. Quindi: potere dato quali ipotesi sulla situazione? Contro quale alternativa o sequenza di alternative? Ad esempio, è possibile calcolare (simulare) una curva di potenza per dati distribuiti esponenziali, rispetto a una serie di alternative di spostamento della scala. Oppure potresti calcolare la potenza per una normale contro uno spostamento di posizione. Oppure potresti calcolare la potenza in un Weibull mentre vari il parametro di forma. Hai qualche dettaglio in più?
Glen_b

Per calcolare effettivamente la potenza occorrerebbero anche dimensioni del campione. Se stai cercando di identificare la dimensione del campione dato il potere specificato rispetto a una particolare alternativa, questo potrebbe essere fatto tramite il root-reperimento, ma spesso puoi trovare il punto con semplici approcci (provare un paio di dimensioni del campione è di solito sufficiente per avvicinarti molto ).
Glen_b

Quale variabile viene misurata? Sono questi tempi?
Glen_b

@Glen_b Questi non sono tempi. Sono misure della dimensione corporea in due diversi gruppi. Voglio dimostrare che i due gruppi hanno essenzialmente la stessa distribuzione, ma mi è stato chiesto se avevo il potere di dirlo in base alle dimensioni del campione.
Sarah,

1
Ah! Sono due elementi di contesto utile che possono essere utili nella tua domanda. Quindi l'idea è che se si dimostra che il potere di identificare alcune differenze teoricamente modeste era ragionevole, si potrebbe prendere il fallimento nel rifiutare come indicazione che la differenza era piccola. Sì, un'analisi preliminare del potere può aiutare a formulare tale argomento. Dopo il fatto, probabilmente mi concentrerei di più su qualcosa di simile a una stima (e forse all'intervallo di confidenza) del cambiamento di scala come un'indicazione che la differenza era in realtà di piccole dimensioni, nonché un grafico dei due cdf di esempio.
Glen_b

Risposte:


16

Trovare potere contro alternative esponenziali di spostamento della scala è ragionevolmente semplice.

Tuttavia, non so che dovresti usare i valori calcolati dai tuoi dati per capire quale potrebbe essere stato il potere. Questo tipo di calcolo della potenza post hoc tende a dare conclusioni contrarie all'intuizione (e forse fuorvianti).

Il potere, come il livello di significatività, è un fenomeno che affronti prima del fatto; useresti una comprensione a priori (compresa la teoria, il ragionamento o eventuali studi precedenti) per decidere su una serie ragionevole di alternative da considerare e una dimensione dell'effetto desiderabile

Puoi anche prendere in considerazione una varietà di altre alternative (ad esempio potresti incorporare l'esponenziale all'interno di una famiglia gamma per considerare l'impatto di casi più o meno distorti).

Le solite domande a cui si potrebbe provare a rispondere mediante un'analisi di potenza sono:

1) qual è il potere, per una data dimensione del campione, con una certa dimensione dell'effetto o insieme di dimensioni dell'effetto *?

2) date le dimensioni e la potenza del campione, quanto è rilevabile un effetto?

3) Data la potenza desiderata per una particolare dimensione dell'effetto, quale dimensione del campione sarebbe richiesta?

* (dove qui 'dimensione dell'effetto' è intesa genericamente e potrebbe essere, ad esempio, un particolare rapporto di mezzi, o differenza di mezzi, non necessariamente standardizzato).

Chiaramente hai già una dimensione del campione, quindi non sei nel caso (3). Si potrebbe ragionevolmente considerare case (2) o case (1).

Suggerirei case (1) (che fornisce anche un modo per gestire case (2)).

Per illustrare un approccio a case (1) e vedere come si collega a case (2), consideriamo un esempio specifico, con:

  • alternative di spostamento della scala

  • popolazioni esponenziali

  • dimensioni del campione nei due campioni di 64 e 54

Poiché le dimensioni del campione sono diverse, dobbiamo considerare il caso in cui la diffusione relativa in uno dei campioni è sia inferiore che maggiore di 1 (se avevano le stesse dimensioni, le considerazioni sulla simmetria consentono di considerare solo un lato). Tuttavia, poiché sono abbastanza vicini alle stesse dimensioni, l'effetto è molto piccolo. In ogni caso, correggere il parametro per uno dei campioni e variare l'altro.

Quindi quello che si fa è:

In anticipo:

choose a set of scale multipliers representing different alternatives
select an nsim (say 1000)
set mu1=1

Per fare i calcoli:

for each possible scale multiplier, kappa 
  repeat nsim times
    generate a sample of size n1 from Exp(mu1) and n2 from Exp(kappa*mu1)
    perform the test
  compute the rejection rate across nsim tests at this kappa

In R, ho fatto questo:

alpha = 0.05
n1 = 54
n2 = 64
nsim = 10000
s = c(1.1,1.2,1.5,2,2.5,3) # set up grid for kappa
s = c(1/rev(s),1,s)        #  also below and at 1
rr = array(NA,length(s))   # to hold rejection rates

for(i in seq_along(s)) rr[i]=mean(replicate(nsim,
                                    ks.test(rexp(n1,1),rexp(n2,s[i]))$p.value)<alpha
                                 )

plot(rr~s,log="x",ylim=c(0,1),type="n") #set up plot
points(rr~rev(s),col=3) # plot the reversed case to show the (tiny) asymmetry+noise
points(rr~s,col=1) # plot the "real" case last 
abline(h=alpha,col=8,lty=2) # draw in alpha

che dà la seguente "curva" di potenza

inserisci qui la descrizione dell'immagine

L'asse x è su una scala logaritmica, l'asse y è il tasso di rifiuto.

È difficile dirlo qui, ma i punti neri sono leggermente più alti a sinistra rispetto a destra (cioè, c'è una potenza leggermente maggiore quando il campione più grande ha la scala più piccola).

Usando il normale cdf inverso come una trasformazione del tasso di rifiuto, possiamo rendere la relazione tra il tasso di rifiuto trasformato e il log kappa (il kappa è snella trama, ma l'asse x è scalato in scala logaritmica) molto quasi lineare (tranne vicino a 0 ) e il numero di simulazioni era abbastanza elevato da rendere il rumore molto basso: possiamo praticamente ignorarlo per gli scopi attuali.

Quindi possiamo semplicemente usare l'interpolazione lineare. Di seguito sono riportate le dimensioni approssimative dell'effetto per il 50% e l'80% di potenza alle dimensioni del campione:

inserisci qui la descrizione dell'immagine

Le dimensioni dell'effetto sull'altro lato (il gruppo più grande ha una scala più piccola) sono solo leggermente spostate da quella (può prendere una dimensione dell'effetto leggermente più piccola), ma fa poca differenza, quindi non affronterò il punto.

Quindi il test rileverà una differenza sostanziale (da un rapporto di scale di 1), ma non piccola.


Ora per alcuni commenti: non credo che i test di ipotesi siano particolarmente rilevanti per la domanda di interesse sottostante ( sono abbastanza simili? ), E di conseguenza questi calcoli di potenza non ci dicono nulla di direttamente pertinente a quella domanda.

Penso che tu possa affrontare quella domanda più utile prespecificando cosa pensi che "essenzialmente lo stesso" significhi effettivamente, operativamente. Ciò , perseguito razionalmente in un'attività statistica, dovrebbe condurre a un'analisi significativa dei dati.


Grazie mille! Questo è davvero utile, molto apprezzato.
Sarah,

0

Poiché Kolmogorov-Smirnov non è parametrico, quindi per definizione non è possibile eseguire analisi di potenza applicabili. Per avere una sorta di stima, devi assumere un modello di sfondo (e quindi deviare dal mondo non parametrico ...) e usarlo per calcolare uno dei seguenti: dimensioni del campione, MDE o potenza (cioè, tu correggi / scegli due e calcola il terzo).

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.