2012-03-07 8 views
2

私はいくつかのアルゴリズムを実行し、結果を使っていくつかの統計分析を行いたいと思っていました。私はエラー率の平均を持つ2つのベクトルを持っています。PythonとRpy2を使った統計テスト(KolmogorovとT-test)

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:keywordは式(1行目)にはなりません。

その他の質問:numpyとRpy2を使用するより良い方法はありますか?それが言うように

+1

'var.equal'と' paired'は、両方のデフォルトではFALSEですので、なぜも、それらに値をつけていますか? –

+0

私はあなたが言ったことを得て、それは私が現時点でそれを使用している方法です。問題は、たとえば、var.equal = Trueが必要な場合です。私はRpyでそれをどのように設定できるのか分かりません。私は試しましたvar_equal = True、 'var.equal' =真と効果はありません。また、使用したいvar.equal(na.action、lower.tail ...)のようなオプションがたくさんあります。 –

答えて

6

: "に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 documentation about functionsを確認してください。

もし xyは2 nupmy.arrayある

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

でき


+0

正常に動作しました。 =) –

0

二サンプルテストの場合には、パイソンとKSテストを実行する:

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

最初の値であるとテスト統計値、第2の値はp値です。 p値が95未満(5%の有意水準)の場合、これは、2つのサンプル分布が同一であることをNull-Hypotheseは拒否できないことを意味します。

1つのサンプルのKSテストのために、ここでは、例えば:http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kstest.html#scipy.stats.kstest

このテストは、あなたが与えられた確率分布にあなたの経験分布の適合度をテストすることができます。