使用Python和Rpy2进行统计测试(Kolmogorov和T检验)
问题内容:
我已经运行了一些算法,并希望对结果进行一些统计分析。我有两个向量的错误率平均值。
使用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检验的问题在于var.equal语句,它给了我 * SyntaxError:关键字不能是表达式(第1行)。
额外的问题:是否有更好的方法来处理numpy和Rpy2?
问题答案:
如它所说:“ 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文档中有关功能的更多信息。