Статистические тесты (Колмогоров и Т-тест) с Python и RPY2

StackOverflow https://stackoverflow.com//questions/9607698

  •  09-12-2019
  •  | 
  •  

Вопрос

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

с 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?

Это было полезно?

Решение

Как говорится: « 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 Документация о функциях для болеедетали.


Другие советы

Чтобы выполнить тест KS с Python, в случае теста двух образца, вы можете

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

Там, где x, y - два генеракодицетагкода:

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top