我试图用Python(scipy)替换Python脚本中的一些rpy2代码。在这种情况下,我需要将Kruskal-Wallis测试(R:kruskal.test()
)替换为(Python:scipy.stats.kruskal
)。在
scipy.stats.kruskal
仅在比较整数/浮点时返回类似的H统计和p值。但是,我在应用以字符串表示的组时遇到了一些困难。在
以下是数据的子样本:
y = [4.33917022422, 2.96541899883, 6.70475220836, 9.19889096119, 2.14087398016,
5.39520023918, 1.58443224287, 3.59625224078, 4.01998599966, 2.58058624352]
x = ['High_O2', 'High_O2', 'High_O2', 'High_O2', 'Low_O2',
'Low_O2', 'Low_O2', 'Low_O2', 'Mid_O2', 'Mid_O2']
在R中,只需键入:
^{pr2}$在Python(2.7)中使用scipy(0.17)执行相同的操作:
from scipy import stats
stats.kruskal(y,x)
但是,当使用scipy时,我得到非常低的p值(p<e-07)
和非常高的H-统计(26)
,这是不正确的。我试图用x
替换{0,1,2}
列表,但没有任何改进。在
我该如何告诉scipy在排名过程中将x
视为一组?在
传递给
scipy.stats.kruskal
的每个非关键字参数都被视为一组单独的y值。通过将x
作为参数之一,kruskal
试图将标签字符串视为第二组y值。字符串将被转换为NaNs(这应该会引发一个RuntimeWarning
)。在相反,您需要按标签对
y
值进行分组,然后将它们作为separate输入数组传递给kruskal
。例如:相关问题 更多 >
编程相关推荐