0

AB テストをサポートする python/rpy2 コードがいくつかあります。これは、通常、変動値 (ドルでの寄付) の 2 つのリストで Wilcox テストを正常に実行します。ただし、次のエラーがスローされる場合があります。

File "/usr/lib/python2.6/dist-packages/rpy2/robjects/__init__.py", line 423, in __call__
res = super(RFunction, self).__call__(*new_args, **new_kwargs)
rinterface.RRuntimeError: Error in wilcox.test.default(numeric(0), numeric(0)) : 
not enough (finite) 'x' observations

これがコードです。rs は mysql クエリの結果です。amount の値はすべて 1 から 1000 までの非 null ですが、ほとんどすべて 5 から 50 です。

a1 = []
a2 = []
r = robjects.r
for row in rs: 
    if row['banner'] == bans[1]:
        a1.append(row['amount'] )
    else:
        a2.append( row['amount'] )
v1 = robjects.FloatVector(a1)
v2 = robjects.FloatVector(a2)
wilcox_result =  r['wilcox.test'](v1, v2) 
print  "Wilcox test of means p= %.6f" % wilcox_result[2][0] # the p-value

私の腹筋テストの約60%で動作します。しかし、残りの部分でこのエラーが発生します。エラーの原因となっている可能性のあるデータのパターンに気づいていません。また、rpy2 のこのエラーに関するドキュメントが見つかりません。

4

1 に答える 1

1

例外は、RRuntimeErrorR からのエラー メッセージを報告しています。

wilcox.test.default(numeric(0), numeric(0)) のエラー: 不十分な (有限) 'x' 観測値

これは、テストの 40% (60% の成功を報告しているため) で a1 または a2 (両方の場合もある) に数値がないことを意味します (if len(a1)==0 or len(a2)==0問題を追跡するためにテストできる長さ 0 のベクトル、またはすべての値が NA、Infinite、または NaN の場合)

于 2012-11-29T10:23:10.587 に答える