我正在尝试创建一个计算此公式的函数:
公式非截图:
距离=西格玛*((观察 - 预期)** 2 /预期)
这是我目前的代码:
def distance(observed, expected):
num = (observed - expected)**2
den = (expected)
dist = sigma * (num/den)
return dist
我不知道如何计算sigma,所以我感谢任何帮助/反馈!
谢谢!
答案 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