用python计算均值和方差

用python计算均值和方差,python,variance,Python,Variance,我有这个代码来计算均值和方差,当你输入一组数字,但我的方差是偏离它应该是什么。我的方差公式是不正确的还是代码中可能有错误 我的输出: 输入一个正数:1 平均值为1.0,方差为0 输入一个正数:2 平均值为1.5,方差为0.125 输入一个正数:3 平均值为2.0,方差为0.3958333 正确输出: 输入一个正数:1 平均值为1.0,方差为0 输入一个正数:2 平均值为1.5,方差为0.5 输入一个正数:3 平均值为2.0,方差为1 mean=0 方差=0 x=0 n=0 当x>=0时: x

我有这个代码来计算均值和方差,当你输入一组数字,但我的方差是偏离它应该是什么。我的方差公式是不正确的还是代码中可能有错误

我的输出:

输入一个正数:1
平均值为1.0,方差为0
输入一个正数:2
平均值为1.5,方差为0.125
输入一个正数:3
平均值为2.0,方差为0.3958333
正确输出:

输入一个正数:1
平均值为1.0,方差为0
输入一个正数:2
平均值为1.5,方差为0.5
输入一个正数:3
平均值为2.0,方差为1
mean=0
方差=0
x=0
n=0
当x>=0时:
x=浮点(输入('输入一个正数:')#用户输入代码
n+=1
如果x<0:
打破
if n==1:#添加此if语句以避免除以0
平均值=x
打印('均值为',均值为',方差为',方差为')
其他:
平均值=平均值+((x-平均值)/n)#计算平均值的公式
方差=((n-2)/(n-1))*方差)+((均值x)**2)/n)#方差计算公式
打印('均值为',均值为',方差为',方差为')

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

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 ", mean, " variance is ", var)
x=0
数据=[]
当x>=0时:
x=浮点(输入('输入一个正数:')#用户输入代码
如果x<0:
打破
data.append(x)
N=len(数据)
平均值=总和(数据)/N
var=0
如果N>1:
a=[x-数据中x的平均值]
a=[x**2代表a中的x]
var=总和(a)/(N-1)
打印(“均值为”,均值为,“方差为”,var)

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

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: 3
mean is  2.0 variance is  0.1

这里,方差将
1而不是0.1
。您可以使用

python2或python3轻松检查样本方差?您无法基于之前的方差值计算方差值,至少不能这样。问题是,方差公式取决于列表项的当前平均值,而先前的方差取决于先前的平均值。如果我错了,请纠正我。使用
np.mean
np.variance
。谢谢,这是我需要的。看来我的配方有点不合适。欢迎。谢谢
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