Kolmogorov-Smirnov con dati discreti: qual è l'uso corretto di dgof :: ks.test in R?


23

Domande per principianti:

Voglio verificare se due set di dati discreti provengono dalla stessa distribuzione. Mi è stato suggerito un test di Kolmogorov-Smirnov.

Conover ( Practical Nonparametric Statistics , 3d) sembra dire che il test di Kolmogorov-Smirnov può essere utilizzato per questo scopo, ma il suo comportamento è "conservativo" con distribuzioni discrete, e non sono sicuro di cosa significhi qui.

Il commento di DavidR su un'altra domanda dice "... Puoi ancora fare un test di livello α basato sulla statistica KS, ma dovrai trovare qualche altro metodo per ottenere il valore critico, ad esempio mediante simulazione."

La versione di ks.test () nel pacchetto dgof R ( articolo , cran ) aggiunge alcune funzionalità non presenti nella versione predefinita di ks.test () nel pacchetto stats. Tra le altre cose, dgof :: ks.test include questo parametro:

simulate.p.value: una logica che indica se calcolare i valori p mediante la simulazione Monte Carlo, solo per test discreti di bontà di adattamento.

Lo scopo di simulate.p.value = T è quello di realizzare ciò che DavidR suggerisce?

Anche se lo è, non sono sicuro di poter davvero usare dgof :: ks.test per un test a due campioni. Sembra che fornisca solo un test a due campioni per una distribuzione continua:

Se y è numerico, viene eseguito un test a due campioni dell'ipotesi nulla che xey siano stati disegnati dalla stessa distribuzione continua.

In alternativa, y può essere una stringa di caratteri che denomina una funzione di distribuzione continua (cumulativa) (o tale funzione) o una funzione ecdf (o oggetto di classe stepfun) che fornisce una distribuzione discreta. In questi casi, viene eseguito un test di un campione del null che la funzione di distribuzione che ha generato x è la distribuzione y ....

(Dettagli di base: a rigor di termini, le mie distribuzioni sottostanti sono continue, ma i dati tendono a trovarsi molto vicino a una manciata di punti. Ogni punto è il risultato di una simulazione ed è una media di 10 o 20 numeri reali tra -1 e 1. Alla fine della simulazione, quei numeri sono quasi sempre molto vicini a .9 o -.9, quindi i mezzi si raggruppano attorno ad alcuni valori e li sto trattando come discreti. La simulazione è complessa e non ho motivo per pensare che i dati seguano una distribuzione ben nota.)

Consigli?


Ho appena notato qui il commento del Dr. G che suggerisce che ks.boot è ciò di cui ho bisogno, ma mi chiedo ancora se l'opzione di simulazione di dgof :: ks.test funzionerebbe e cosa significhi "convervativo".
Mars

Risposte:


16

Questa è una risposta all'estensione di @jbrucks (ma risponde anche all'originale).

Un test generale per stabilire se 2 campioni provengono dalla stessa popolazione / distribuzione o se c'è una differenza è il test di permutazione. Scegli una statistica di interesse, questa potrebbe essere la statistica del test KS o la differenza di mezzi o la differenza di mediane o il rapporto di varianze o ... (qualunque cosa sia più significativa per la tua domanda, potresti fare simulazioni in condizioni probabili per vedere quale statistica ti dà i migliori risultati) e calcola quella statistica sui 2 campioni originali. Quindi permuti casualmente le osservazioni tra i gruppi (raggruppa tutti i punti dati in un grande pool, quindi li dividi casualmente in 2 gruppi delle stesse dimensioni dei campioni originali) e calcola la statistica di interesse sui campioni permutati. Ripeti più volte, la distribuzione delle statistiche di esempio costituisce la tua distribuzione nulla e si confronta la statistica originale con questa distribuzione per formare il test. Si noti che l'ipotesi nulla è che le distribuzioni siano identiche, non solo il mezzo / mediana / ecc. sono uguali.

Se non vuoi supporre che le distribuzioni siano identiche ma vuoi verificare la differenza tra medie / mediane / ecc. allora potresti fare un bootstrap.

Se sai da quale distribuzione provengono i dati (o almeno sei disposto ad assumere una distribuzione), puoi fare un test del rapporto di verosimiglianza sull'uguaglianza dei parametri (confronta il modello con un singolo set di parametri su entrambi i gruppi con il modello con set di parametri separati). Il test del rapporto di verosimiglianza di solito utilizza una distribuzione chi-quadrato che va bene in molti casi (asintotici), ma se si stanno utilizzando campioni di piccole dimensioni o si sta testando un parametro vicino al suo limite (una varianza che è 0 per esempio), l'approssimazione potrebbe non essere bene, è possibile utilizzare nuovamente il test di permutazione per ottenere una migliore distribuzione null.

Tutti questi test funzionano su distribuzioni continue o discrete. Dovresti anche includere una certa misura di potenza o un intervallo di confidenza per indicare la quantità di incertezza, una mancanza di significato potrebbe essere dovuta a bassa potenza o una differenza statisticamente significativa potrebbe essere praticamente priva di significato.


Greg, grazie. Questa è una risposta generale molto utile alla domanda di Jbruck, ed è utile anche per me. (Le mie domande erano più specifiche. Forse troppo ristrette per aspettarmi risposte.)
Mars

1
@Mars, penso che la mia risposta risponda indirettamente ad almeno una parte della tua. Il normale test KS non assume alcun legame e utilizza un modello teorico per la statistica del test secondo l'ipotesi nulla. Con i legami il modello teorico non è esatto ma puoi invece usare la simulazione (test di permutazione, simulare da null null, ecc.) Per calcolare la distribuzione nulla e quindi ottenere un valore p, ecc. Immagino che questo sia ciò che simula argomento che citi.
Greg Snow,
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.