2

私はいくつかのアルゴリズムを実行しましたが、結果を統計分析したいと考えていました。エラー率の平均を持つ 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-test の問題は var.equal ステートメントにあり、* SyntaxError: keyword can't be an expression (, line 1) が表示されることもわかりました。

追加の質問: numpy と Rpy2 を使用するためのより良い方法はありますか?

4

2 に答える 2

7

それが言うように:「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 ドキュメントを確認してください。


于 2012-03-08T07:26:04.050 に答える
0

Pythonでksテストを実行するには、2サンプルテストの場合、次のことができます

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

ここでxyは 2 つnupmy.arrayです。

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

最初の値は検定統計量で、2 番目の値は p 値です。p 値が 95 未満 (有意水準 5%) の場合、これは、2 つのサンプル分布が同一であるという帰無仮説を棄却できないことを意味します。

ks テストの 1 つのサンプルについては、たとえばここを参照してください

このテストでは、経験的分布の特定の確率分布への適合度をテストできます。

于 2013-10-06T07:20:26.370 に答える