我有一些python / rpy2代码支持AB测试,通常在两个浮动值列表(以美元计算的捐款)上成功运行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
它约占我ab测试的60%。但在其余部分给出了这个错误。我没有注意到数据中可能导致错误的任何模式。我找不到关于rpy2的这个错误的任何文档。
答案 0 :(得分:1)
RRuntimeError
异常报告来自R的错误消息。
这是:
wilcox.test.default(numeric(0),numeric(0))中的错误: 不够(有限)'x'观察
这意味着在40%的测试中(因为你报告成功率为60%)a1或a2(可能两者都是)没有任何数值(长度为0的向量,你可以使用{{ 1}}跟踪问题,或者所有值都是NAs,Infinite或NaN)