方差函数方程的计算



我在这个代码中有一个错误,因为我想计算(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)

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

def my_var(L):
    mean = float(sum(L) / Len(L))
    numerator = 0
    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):
    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)

试试 numpy。

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

谢谢你@billy_ferguson。我已经修改了您的代码,它可以工作。请看我,我仍然是一个业余爱好者,但您能否替换浮点数和求和函数,并在此行中使用更简单的算术运算符作为 len(L( 和 += 均值 = 浮点数(总和(L(/len(L((

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)

最新更新