PythonとRpy2の統計テスト(コルモゴロフとT検定)
-
09-12-2019 - |
質問
私はいくつかのアルゴリズムを駆け、結果を使って統計分析をすることを望みました。誤り率の平均値を持つ2つのベクトルがあります。
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とRPY 2で動作するためのより良い方法はありますか?
解決
「 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", ))})
他のヒント
PythonでKSテストを実行するには、2サンプルテストの場合は
>>> from scipy.stats import ks_2samp
>>> import numpy as np
>>>
.
x
、y
は2つのnupmy.array
:
>>> ks_2samp(x, y)
(0.022999999999999909, 0.95189016804849658)
.
最初の値はテスト統計であり、2番目の値はp値です。p値が95未満(有意差のレベル5%の場合)である場合、これは2つのサンプル分布が同一であることをヌル・ハッサーを拒否できないことを意味します。
1つのサンプルKSテストについては、次のように参照してください。次のようにします。 http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kstest.html#scipy.stats.kstest
このテストでは、経験的分布の適合性の良さを特定の確率分布にテストすることができます。