Я запустил некоторые алгоритмы и хотел сделать некоторый статистический анализ с результатами. У меня есть два вектора со средним значением частоты ошибок.Статистические тесты (Колмогоров и Т-тест) с Python и Rpy2
С 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, и это дает мне * СинтаксисError: ключевое слово не может быть выражением (, строка 1).
Дополнительный вопрос: есть ли лучший способ работы с numpy и Rpy2?
Поскольку 'var.equal' и' парные' по умолчанию являются ЛОЖНЫМИ, почему они даже ставят значения? –
Я получил то, что вы сказали, и именно так я использую его в данный момент. Проблема в том, что, например, если я хочу var.equal = True. Я не знаю, как я могу установить это в Rpy. Я пробовал var_equal = True, «var.equal» = True и никакого эффекта. Также есть много вариантов, таких как var.equal (na.action, lower.tail ...), которые я бы хотел использовать. –