Статистика тестов (Колмогоров и Т-тест) с Python и Rpy2 - PullRequest
2 голосов
/ 07 марта 2012

Я запустил несколько алгоритмов и хотел сделать статистический анализ с результатами. У меня есть два вектора со средними показателями ошибок.

С R, используя строку ниже, я бы получил все.

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

Поскольку я использую Python, я хотел использовать проект Rpy2.

Я пробовал это:

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]

Я не смог выполнить оба теста.

Я также обнаружил, что проблема с t-тестом связана с оператором var.equal и дает мне * SyntaxError: ключевое слово не может быть выражением (, строка 1).

Дополнительный вопрос: есть ли лучший способ работы с numpy и Rpy2?

Ответы [ 2 ]

6 голосов
/ 08 марта 2012

Как сказано: " SyntaxError: ключевое слово не может быть выражением (, строка 1). "

В Python символы не могут содержать символ ".".

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", ))})

Более подробную информацию смотрите в документации rpy2 о функциях .


0 голосов
/ 06 октября 2013

для выполнения теста ks с python, в случае теста с двумя примерами, вы можете

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

, где x, y - два nupmy.array:

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

первое значение - это тестовая статистика, а второе значение - это p-значение. если значение p меньше 95 (для уровня значимости 5%), это означает, что вы не можете отклонить нулевую гипотезу о том, что два выборочных распределения идентичны.

для одного образца теста ks, см., Например, здесь: http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kstest.html#scipy.stats.kstest

этот тест позволяет вам проверить правильность соответствия вашего эмпирического распределения с данным распределением вероятности.

...