Ich bin kein Experte, also vergib mir, wenn ein Teil der Terminologie etwas ungeschickt ist. Gerne stellen wir Ihnen bei Bedarf weitere Informationen zur Verfügung.
Ich habe zwei Vektoren mit 50 gepaarten numerischen Werten in R. Ich möchte einen zweiseitigen Randomisierungs- oder Permutationstest durchführen, um festzustellen, ob ihre Unterschiede zufällig sind oder nicht.
Ein Permutationstest (auch als Randomisierungstest, Re-Randomisierungstest oder exakter Test bezeichnet) ist eine Art statistischer Signifikanztest, bei dem die Verteilung der Teststatistik unter der Nullhypothese durch Berechnung aller möglichen Werte der Teststatistik erhalten wird unter Umlagerungen der Etiketten auf den beobachteten Datenpunkten.
Ich möchte diese Art von Test durchführen, weil ich glaube, dass die Verteilungen der Werte in den Vektoren die Annahmen anderer Tests wie des t-Tests verletzen (zum Beispiel sind viele der numerischen Werte im Vektor 0).
Die permtest
Funktion in der BHH2-Bibliothek macht fast das, was ich will, aber sie arbeitet mit allen Permutationen, was zu lange dauern wird. Stattdessen möchte ich den p-Wert schätzen, indem ich eine große Anzahl möglicher Permutationen abtaste. Ich hatte einen Blick in der Münze Paket, aber nichts scheint mit Abtasten von paarigen numerischen Vektoren eine Permutation Test zu tun.
Ein bisschen googeln hat mich zu dieser E-Mail geführt , was darauf hindeutet, dass ich kein Paket dafür finden kann, weil es ein Einzeiler in R ist. Leider habe ich nicht genug Erfahrung mit R, um dieses zu produzieren -Liner.
Gibt es ein Paket oder eine Methode, die einen zweiseitigen gepaarten Permutationstest nur mit einer Stichprobe des Permutationsraums durchführt?
Wenn nicht, könnte jemand ein kurzes Stück R-Code dafür freigeben?
quelle
coin
(unter anderem) Randomisierungstests durchführen. zB siehe die Antwort auf diese Frage (lies das Ganze) . Wenn ich richtig verstehe, decken die Beispiele sowohl ungefähre als auch genaue Fälle ab und decken sowohl unabhängige als auch abhängige Stichproben ab.oneway_test(y ~ x | pairs, distribution=approximate(B=9999))
mitlibrary(coin)
.Antworten:
Obwohl ich in Kommentaren auf die Verwendung des
coin
Pakets hingewiesen habe, denke ich, dass es sich lohnt zu veranschaulichen, dass ein Permutations- / Randomisierungstest wirklich recht einfach ist, also habe ich es getan.Hier schreibe ich einen R-Code, um einen Randomisierungstest für einen Standorttest mit einer Stichprobe durchzuführen. Der Test dreht zufällig die Vorzeichen auf die Unterschiede und berechnet den Mittelwert; Dies entspricht der zufälligen Zuordnung jedes Wertepaars zu den x- und y-Gruppen. Der folgende Code könnte erheblich kürzer gemacht werden (ich könnte es leicht genug in zwei Zeilen machen, oder sogar in einer, wenn Ihnen langsamerer Code nichts ausmacht).
Dieser Code dauert auf meinem Computer einige Sekunden:
Das ist das Ganze.
Beachten Sie, dass dies
rbinom(length(d),1,.5)*2-1)
ein zufälliges-1
oder1
... dh ein zufälliges Vorzeichen ergibt. Wenn wir also mit einem beliebigen Satz von Vorzeichen multiplizierend
, entspricht dies einer zufälligen Zuordnung+
oder-
Vorzeichen zu den absoluten Differenzen. [Es spielt keine Rolle, mit welcher Verteilung der Zeichend
Sie beginnen, jetztd
haben die zufälligen Zeichen.]Hier vergleiche ich es mit einem T-Test für einige erfundene Daten:
Wenn der t-Test gültig ist, ergibt er normalerweise einen sehr ähnlichen p-Wert wie der vollständig aufgezählte Permutationstest, und ein simulierter p-Wert wie oben (wenn die Anzahl der Simulationen ausreichend groß ist) konvergiert gegen diesen zweiten p-Wert.
Bei der Anzahl der oben verwendeten Replikationen wird ein echter Permutations-p-Wert (dh aus der vollständigen Aufzählung) von 0,05 in etwa 85% der Fälle auf 0,001 geschätzt (dh ergibt einen Randomisierungs-p-Wert zwischen 0,049 und 0,051) und innerhalb von 0,002 über 99,5% der Zeit.
quelle
d
, denn so funktioniert ein Permutationstest der mittleren Differenz für gepaarte Daten. Nach diesem Code werden neue zusätzliche Kommentare angezeigt.Hier ist Code zum Durchführen eines Permutationstests. Ich habe dort zum Beispiel Daten. x ist die Differenz zwischen den beiden Vektoren.
quelle