Statistics 方差函数方程的计算

Statistics 方差函数方程的计算,statistics,Statistics,这段代码中有一个错误,因为我想计算(x1)和(x2)列表中的值之间的方差。有什么建议吗 def my_var(L): s = 0 t = 0 u = 0 for i in range(0, len(L)): s += L[i] t = s/len(L) u += ((L[i]-t)*(L[i]-t)) return u / len(L) x1 = [1, 3, 4, -3, 8] x2 = [1, -4, 7

这段代码中有一个错误,因为我想计算(x1)和(x2)列表中的值之间的方差。有什么建议吗

def my_var(L):
    s = 0
    t = 0
    u = 0
    for i in range(0, len(L)):
        s += L[i]
        t = s/len(L)
        u += ((L[i]-t)*(L[i]-t))
    return u / len(L)
x1 = [1, 3, 4, -3, 8]
x2 = [1, -4, 7, 2]
v1 = my_var(x1)
v2 = my_var(x2)
print(v1)
print(v2)
试试numpy

import numpy as np
x1 = [1, 3, 4, -3, 8]
x2 = [1, -4, 7, 2]
v1 = np.var(x1)
v2 = np.var(x2)

根据我学习概率和统计数据的方式,你做了很多错误的事情。您需要计算平均值,然后求和每个值减去平均值的平方。最后取那个分子,除以样本量(n-1)的1

不使用总和:

def my_var(L):
    my_sum = 0
    mean = 0
    numerator = 0
    for i in range(0, len(L)):
        my_sum += L[i]
    mean = float(my_sum / len(L))
    for i in range(0, len(L)):
        numerator += (L[i]-mean)**2
    return numerator / (len(L) - 1)
x1 = [1, 3, 4, -3, 8]
x2 = [1, -4, 7, 2]
v1 = my_var(x1)
v2 = my_var(x2)
print(v1)
print(v2)

谢谢你,比利·弗格森。我已经修改了你的代码,它可以工作了。对不起,我还是个业余爱好者,但你能不能替换浮点和求和函数,并使用更简单的算术运算符,如len(L)和+=在这行中,mean=float(sum(L)/len(L))


谢谢你的帮助,但是我想用一种简单的方法来解决这个问题,我想我在这行中遇到了一个问题u+=((L[I]-t)*(L[I]-t))非常感谢你的帮助,但仍然不起作用。事实上,我很理解这个方程,正如你首先提到的,我必须计算每个值和平均值之间的差平方和的平均值(不是-1)。当我签入我的代码,直到t=s/len(L)它工作。但下一行中的问题肯定是u+=((L[i]-t)*(L[i]-t))。如果您能修改这部分,我将非常感谢您的帮助。您的问题是,您在发布的示例中计算错误。你的
t
应该是x-bar(平均值),而不是那样。你有一些基本的缺陷,所以除了完全重写之外,任何东西都是错误的。我编辑这篇文章是为了修正我的错误。不要这样做。非常糟糕。你在一个不变的循环中重复同样的事情。你可以通过在列表L上循环并用
+=
求和来计算总和,但是sum是一个内置的语言工具,所以我相信它是标准python构建的。这是什么编程语言?是Python吗?请在你的问题上加上使用的语言。要更新您的问题,请单击帖子下的“”链接。非常感谢。
def my_var(L):
    my_sum = 0
    mean = 0
    numerator = 0
    for i in range(0, len(L)):
        my_sum += L[i]
    mean = float(my_sum / len(L))
    for i in range(0, len(L)):
        numerator += (L[i]-mean)**2
    return numerator / (len(L) - 1)
x1 = [1, 3, 4, -3, 8]
x2 = [1, -4, 7, 2]
v1 = my_var(x1)
v2 = my_var(x2)
print(v1)
print(v2)
def my_var(L):
    mean = 0
    numerator = 0
    for i in range(0, len(L)):
        mean = float(sum(L) / len(L))
        numerator += (L[i]-mean)**2
    return numerator / len(L)
x1 = [1, 3, 4, -3, 8]
x2 = [1, -4, 7, 2]
v1 = my_var(x1)
v2 = my_var(x2)
print(v1)
print(v2)