如何在python中执行sigma操作

时间:2017-03-08 04:14:22

标签: python algorithm math frequency

我正在尝试创建一个计算此公式的函数:

$$distance = \sum_x{\frac{(obs_x - exp_x)^2}{exp_x}}$$

公式非截图:

距离=西格玛*((观察 - 预期)** 2 /预期)

这是我目前的代码:

def distance(observed, expected):

    num = (observed - expected)**2
    den = (expected)
    dist = sigma * (num/den)

    return dist

我不知道如何计算sigma,所以我感谢任何帮助/反馈!

谢谢!

3 个答案:

答案 0 :(得分:0)

观察应该是数字列表

def distance(observed, expected):
    return sum((item - expected)**2*1.0/ expected for item in observed )

observed = [1,3,45,56,3,2,4,5,6,7]
expected = sum(observed)/len(observed)
print distance(observed,expected)

274.461538462

答案 1 :(得分:0)

这里的Sigma表示多个观察对和预期对的总和。

例如:

如果观察到是一个数字列表[1,1,3,3,...] 和预期是与观察值对应的预期值列表,例如[1.2,1.3,3.1,3.2 ...]

然后你需要找到各自距离的总和。

def distance(observed, expected):
    res = 0
    for o, e in zip(observed,expected):
        res += (o-e)**2/e

    return res

答案 2 :(得分:0)

Sigma是范围的总和,而不是乘法。 观察和预期必须是相同长度的数字列表。

def distance(observed, expected):
    sample_space_length = len(observed)
    distance = 0
    for x in range(sample_space_length):
        distance += ((observed[x] - expected[x]) ** 2) / expected[x]
    return distance