迭代在循环蟒蛇

迭代在循环蟒蛇

问题描述:

我正在Python代码用于查找曼 - 惠特尼U统计样品超过20迭代在循环蟒蛇

在这个过程中较大的,如果有样品的排名关系整数和十进制值为行列的标准偏差公式如下:

enter image description here

我特别是具有与所述求和部分的麻烦。

在这里,“t_i是共享等级i的主体的数量,并且k是(不同的)等级的数量。”

我有行列的以下数组:

ranks = [ 7. 8. 12. 11. 9. 10. 1. 3. 4.5 2. 6. 4.5]

现在,我已经写了下面的函数来计算方程的所述Σ部:

sigma = 0 
for i in range(1, np.amax(ranks)): 
    num = ranks.count(i)**3 - ranks.count(i) 
    denom = (n1+n2)*((n1+n2)-1) 
    sigma += num/denom 

然而,这是不正确的,因为当我从i到k求和时,我正在看整数。我不考虑十进制值,如4.5。

我该如何解决这个问题?

+2

你忘了这里的一些东西:'denom =(n1 + n2)((n1 + n2)-1)'? ;) – alfasin

+1

遍历*秩*,而不是一个范围。 I.e'对于队伍来说:' –

+0

哦,哎呀,你说得对。修正了错字@alfasin +1 – Jonathan

它看起来像最初你试图循环范围[1, max(ranks)]范围内的所有整数,这不是总和正在做的事情。总和遍历队列中的每个唯一元素并聚合该元素的某个转换。

这是一个更直接的方法。我没有处理索引,而是遍历元素本身。 t i将收集的第i个元素独特元素rank。每个元素都将被考虑。它们不会影响它们是否是整数:

for ti in set(ranks): 
     num = ranks.count(ti)**3 - ranks.count(ti) 
     denom = (n1+n2)*((n1+n2)-1) 
     sigma += num/denom 
+1

你的第一个例子很好,但是你的第二个例子不是很好; '因为我在范围内(len(someseq)):'是对recidivist C程序员的反模式;它在各方面都变得越来越慢,并且变得越来越乏味。 – ShadowRanger

+0

我知道,但问题让我以整数索引的方式思考:-(我展示这两个,因为我认为你必须了解索引方式,看看它是如何对应于图像中的总和 –

+0

@ LucasKot-Zaniewski但是,如果队伍中有重复,例如,我有两个“4.5”的实例,当我在队伍中进行测试时,难道不会只计算4.5次两次? – Jonathan