我有一些支持 AB 测试的 python/rpy2 代码,通常成功地在两个浮动值列表(以美元为单位的捐赠)上运行 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 查询的结果。金额值都是从 1 到 1000 的非空值——但几乎都是从 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% 的 ab 测试。但是在其余部分给出了这个错误。我没有注意到数据中可能导致错误的任何模式。而且我找不到任何关于 rpy2 错误的文档。