在线统计Python:方差计算不正确

问题描述 投票:0回答:2

SOF,我是Python的新手,我在网上发现了很多信息,但是在计算平均值,方差等时我要求使用列表,我不能这样做。我没有问题计算用户输入的平均值,但方差是关闭的。

根据我的理解,方差是“数字”和“均值”“平方”之间的差异。也许问题出在那里?我不确定是否诚实,这是我的最后一招,如果你能以任何方式提供帮助,我将非常感激,我也对如何编写我的代码有任何建议。

谢谢!

我的代码到目前为止:

n = input("Enter Number ")
n = int (n)
average = 0

sum = 0

for num in range(0,n+1,1):
        sum = sum + num;

mean = (sum *1.0/ n)

variance = 0

for num in range(n+1):
     sum = (num- mean)**2         

variance = (sum*1.0) 

print("Mean is: ",mean , "Variance is: ",variance)
python mean variance
2个回答
0
投票

首先,方差不仅仅是数均方差,它是所有数均方差除以n(或n-1)的总和

计算方差的范围应从1开始:range(1,n+1)

var=0
for num in range(1,n+1):
     var = var +(num- mean)**2         

现在方差可以通过两种方式计算:除以nn-1,从而给出两个不同的答案

variance1 = (var*1.0) /n
variance2 = (var*1.0) /(n-1)

例如:对于n = 10,variance1 = 8.25,variance2 = 9.166666666666666

在计算样本方差时使用n,在计算样本方差时使用n-1

其他详细信息:此外,如果您的步长值为1,则使用range时,无需指定。使用range(0,n+1)而不是range(0,n+1,1)

避免对均值和方差使用相同的变量sum,因为它只会导致与公式混淆。


0
投票

range(n+1)给出了一个从0到n开始的列表。但你从1 - n需要它,所以使用range(1, n+1)

sum = 0
for num in range(1,n+1):
 sum += (num- mean)**2 
variance = sum/n

旁注:这里有一个内置的qazxsw poi库。

© www.soinside.com 2019 - 2024. All rights reserved.