使用Python和Rpy2进行统计测试(Kolmogorov和T-test)

使用Python和Rpy2进行统计测试(Kolmogorov和T-test),python,r,statistics,rpy2,Python,R,Statistics,Rpy2,我运行了一些算法,并希望对结果进行一些统计分析。我有两个向量,它们是错误率的平均值 有了R,用下面的线我就能得到所有东西 t.test(methodresults1,methodresults2,var.equal=FALSE,paired=FALSE,alternative="less") 因为我使用的是Python,所以我想使用Rpy2项目 我试过: import rpy2.robjects as R # methodresults1 and methodresults2 are num

我运行了一些算法,并希望对结果进行一些统计分析。我有两个向量,它们是错误率的平均值

有了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-test的问题在于var.equal语句,它给了我一个*SyntaxError:keyword不能是表达式(,第1行)

额外的问题:有没有更好的方法来使用numpy和Rpy2?

如它所说:“SyntaxError:keyword不能是表达式(,第1行)。”

在Python中,符号不能包含字符“”

有关更多详细信息,请查看



要使用python执行ks测试,在两个示例测试的情况下,您可以

>>> from scipy.stats import ks_2samp
>>> import numpy as np
>>> 
其中
x
y
是两个
numy.array

>>> ks_2samp(x, y)
(0.022999999999999909, 0.95189016804849658)
第一个值是测试统计数据,第二个值是p值。如果p值小于95(显著性水平为5%),这意味着您不能拒绝两个样本分布相同的无效假设

对于一个样本ks测试,请参见此处的示例:


这个测试可以让你测试经验分布与给定概率分布的拟合优度。

既然
var.equal
paired
在默认情况下都是假的,为什么还要给它们赋值呢?我明白你说的,这就是我目前使用的方法。例如,问题是,如果我想要var.equal=True。我不知道如何在Rpy中设置。我试过var_equal=True,'var.equal'=True,但没有效果。还有很多选项,比如var.equal(na.action,lower.tail…),我想使用。我如何定义y~x和rpy2之间的关系?大概是这样的:
>>> ks_2samp(x, y)
(0.022999999999999909, 0.95189016804849658)