문제

나는 일부 알고리즘을 주저하고 결과로 일부 통계 분석을 원했습니다.나는 오류율의 평균이있는 두 개의 벡터를 가지고 있습니다.

r을 사용하면 아래 줄을 사용하여 모든 것을 얻을 수 있습니다.

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

파이썬을 사용하고 있기 때문에 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-Test의 문제가 var.equal 문과 함께 있으며 * syntaxerror : 키워드가 표현식이 될 수 없다는 것을 알게되었습니다.

추가 질문 : NUMPY 및 RPY2로 작업하는 더 좋은 방법이 있습니까?

도움이 되었습니까?

해결책

라고합니다. " syntaxerror : 키워드는 표현식 (, 1 행)이 될 수 없습니다. "

파이썬에서 기호는 "문자"를 포함 할 수 없습니다.

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

FRPY2 설명서에 대한 세부 사항.


다른 팁

파이썬으로 KS 테스트를 수행하려면 2 샘플 테스트가있는 경우 할 수 있습니다.

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

이 테스트를 사용하면 주어진 확률 분포에 대한 경험적 분포의 적합성을 테스트 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top