出于某种原因,我的下面的代码没有给我正确的解决方案来解决x = [7,6,8,4,2,7,6,7,6,5]的样本方差。解决方案应该是3.067,但我一直得到11.044,我不知道为什么。有人可以帮忙吗?
def var_method_0(x):
n = len(x) # Number of samples
mean=sum(x)/n
variance=sum([((mean-i)**2) for i in range(n)])/(n-1)
return variance
答案 0 :(得分:4)
试试这个:
def var_method(lst):
n = len(lst)
mean = sum(lst) / float(n)
return sum((mean - x) ** 2 for x in lst) / float(n - 1)
我修了两件事:
range
,而是超过数字列表的实际值除此之外,我还进行了一些清理和重命名,以使代码更简洁。现在它按预期工作:
var_method([7, 6, 8, 4, 2, 7, 6, 7, 6, 5])
=> 3.066666666666667