首页 > 解决方案 > 在python中计算均值和方差

问题描述

当您输入一组数字时,我有这段代码可以计算均值和方差,但我的方差与应有的不同。我的方差公式是否以某种方式关闭,或者我的代码中可能有一些错误?

我的输出:

Input a positive number: 1
mean is  1.0 variance is  0

Input a positive number: 2
mean is  1.5 variance is  0.125

Input a positive number: 3
mean is  2.0 variance is  0.3958333333333333

正确的输出:

Input a positive number: 1
mean is  1.0 variance is  0

Input a positive number: 2
mean is  1.5 variance is  0.5

Input a positive number: 3
mean is  2.0 variance is  1
mean = 0
variance = 0
x = 0
n = 0
while x >= 0:
    x = float(input('Input a positive number: '))  # user input for code
    n += 1
    if x < 0:
        break

    if n == 1:  # Added this if statement to avoid dividing by 0
        mean = x
        print('mean is ', mean, 'variance is ', variance)
    else:
        mean = mean + ((x-mean)/n)  # formula for calculating mean
        variance = (((n-2)/(n-1)) * variance) + (((mean-x)**2)/n)  # formula for calculating variance
        print('mean is ', mean, 'variance is ', variance)

标签: pythonvariance

解决方案


你的方差公式是错误的。你可以在这里找到公式以便更好地理解,我在这里不做解释。

mean = 0
variance = 0
x = 0
n = 0
while x >= 0:
    x = float(input('Input a positive number: '))  # user input for code
    n += 1
    if x < 0:
        break

    if n == 1:  # Added this if statement to avoid dividing by 0
        mean = x
        print('mean is ', mean, 'variance is ', variance)
    else:
        mean = mean + ((x-mean)/n)  # formula for calculating mean
        
        variance = (((n-2)/(n-1)) * variance) + (((x-mean)*(x-pre_mean))/(n-1))  # formula for calculating variance
        print('mean is ', mean, 'variance is ', variance)
    pre_mean = mean

输出:

Input a positive number: 1
mean is  1.0 variance is  0
Input a positive number: 2
mean is  1.5 variance is  0.5
Input a positive number: 3
mean is  2.0 variance is  1.0
Input a positive number: 4
mean is  2.5 variance is  1.6666666666666665

你给了一个错误的测试用例,

Input a positive number: 3
mean is  2.0 variance is  0.1

在这里,方差将1 not 0.1您可以使用在线计算器轻松检查样本方差。


推荐阅读