Domanda

Ho gestito alcuni algoritmi e volevo fare un'analisi delle statistiche con i risultati.Ho due vettori con le medie del tasso di errore.

con r, usando la linea qui sotto, otterrei tutto.

t.test(methodresults1,methodresults2,var.equal=FALSE,paired=FALSE,alternative="less")
.

Dato che sto usando Python, volevo usare il progetto RPY2.

Ho provato questo:

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]
.

Non sono stato in grado di eseguire entrambi i test.

Ho trovato anche che il problema con il T-Test è con la dichiarazione var.equal e mi dà un * sintaxError: la parola chiave non può essere un'espressione (, linea 1). .

Domanda extra: c'è un modo migliore per lavorare con Numpy e RPY2?

È stato utile?

Soluzione

Come dice: " SyntaxError: La parola chiave non può essere un'espressione (, linea 1). "

In Python, i simboli non possono contenere il personaggio ".".

from rpy2.robjects.packages import importr
from rpy2.robjects.vectors import StrVector
stats = importr("stats")
stats.t_test(methodresults1, methodresults2,
             **{'var.equal': False,
                'paired': False,
                'alternative': StrVector(("less", ))})
.

Controllare il Documentazione RPY2 sulle funzioni per altroDettagli.


.

Altri suggerimenti

Per eseguire il test KS con Python, in caso di test a due campioni, è possibile

>>> from scipy.stats import ks_2samp
>>> import numpy as np
>>> 
.

Dove x, y sono due generacoli nupmy.array:

>>> ks_2samp(x, y)
(0.022999999999999909, 0.95189016804849658)
.

Primo valore è le statistiche del test e il secondo valore è il valore P.Se il valore P è inferiore a 95 (per un livello di significato del 5%), ciò significa che non è possibile rifiutare il null-ipotese che le due distribuzioni di esempio sono identiche.

Per un test KS campione, vedi ad esempio qui: http://docs.sscipy.org/doc/scipy/reference/generated/scipy.stats.kstest.html#scipy.stats.kstest

Questo test ti consente di testare la bontà della vestibilità della tua distribuzione empirica a una determinata distribuzione della probabilità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top