微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中计算均值和方差

如何解决在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 ',variance)

解决方法

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

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 ',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。您可以使用online calculator.

轻松检查样本方差 ,

您可以使用列表存储所有输入。

x = 0
data = [] 
while x >= 0:
    x = float(input('Input a positive number: '))  # user input for code
    if x < 0:
         break

    data.append(x)        
    N = len(data)
    mean = sum(data) / N

    var = 0
    if N > 1:
        a = [x - mean for x in data]
        a = [x**2 for x in a]
        var = sum( a) / (N-1)
    
    print( "mean is "," variance is ",var)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。