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 のこのエラーに関するドキュメントが見つかりません。