Statistiktests (Kolmogorov und T-Test) mit Python und Rpy2
-
09-12-2019 - |
Frage
Ich habe einige Algorithmen ausgeführt und wollte mit den Ergebnissen eine statistische Analyse durchführen.Ich habe zwei Vektoren mit den Durchschnittswerten der Fehlerrate.
Mit R würde ich mit der folgenden Zeile alles bekommen.
t.test(methodresults1,methodresults2,var.equal=FALSE,paired=FALSE,alternative="less")
Da ich Python verwende, wollte ich das Rpy2-Projekt verwenden.
Ich habe das versucht:
import rpy2.robjects as R
# methodresults1 and methodresults2 are numpy arrays.
# kolmogorov test
normality_res = R.r['ks.test'](R.FloatVector(methodresults1.tolist()),'pnorm',mean=R.FloatVector(methodresults1.mean().tolist()),sd=R.FloatVector(methodresults1.std().tolist())))
# t-test
res = R.r['t.test'](R.FloatVector(methodresults1.tolist()),R.FloatVector(methodresults2.tolist()),alternative='two.sided',var.equal=FALSE,paired=FALSE)
res.rx('p.value')[0][0]
res.rx('statistic')[0][0]
res.rx('parameter')[0][0]
Ich konnte nicht beide Tests durchführen.
Ich habe auch festgestellt, dass das Problem mit dem t-Test in der var.equal-Anweisung liegt, und sie gibt mir eine * Syntax-Fehler:Schlüsselwort kann kein Ausdruck sein (, Zeile 1).
Zusatzfrage:Gibt es eine bessere Möglichkeit, mit Numpy und Rpy2 zu arbeiten?
Lösung
Wie es heißt: " SyntaxError: Das Schlüsselwort kann kein Ausdruck (, Zeile 1) sein. "
In Python können Symbole nicht das Zeichen enthalten ". generasacodicetagpre.
Überprüfen Sie den RPY2-Dokumentation über Funktionen für mehrDetails.
Andere Tipps
Um einen ks-Test mit Python durchzuführen, ist dies im Falle eines Tests mit zwei Stichproben möglich
>>> from scipy.stats import ks_2samp
>>> import numpy as np
>>>
Wo x
, y
sind zwei nupmy.array
:
>>> ks_2samp(x, y)
(0.022999999999999909, 0.95189016804849658)
Der erste Wert ist die Teststatistik und der zweite Wert ist der p-Wert.Wenn der p-Wert kleiner als 95 ist (bei einem Signifikanzniveau von 5 %), bedeutet dies, dass Sie die Nullhypothese, dass die beiden Stichprobenverteilungen identisch sind, nicht ablehnen können.
Einen Beispiel-KS-Test finden Sie zum Beispiel hier: http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kstest.html#scipy.stats.kstest
Mit diesem Test können Sie die Anpassungsgüte Ihrer empirischen Verteilung an eine gegebene Wahrscheinlichkeitsverteilung testen.