在线统计 Python:方差计算不正确
Online Statistics Python: Variance is not calculating correctly
SOF,
我是 Python 的新手,我在网上找到了很多信息,但是它要求在计算均值、方差等时使用列表,而我做不到。我在计算用户输入的平均值时没有问题,但方差已关闭。
根据我的理解,方差是 'number' 与其 'mean' 'squared' 之间的差异。也许问题出在那里?老实说,我不确定,这是我最后的手段,如果你能以任何方式提供帮助,我将不胜感激,我也愿意接受任何关于我如何编写代码的建议。
谢谢!
到目前为止我的代码:
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)
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
旁注:这些有一个内置的 statistics
库。
首先,方差不仅仅是均方数,它是所有均方数的总和除以n(或n-1)
计算方差的范围应该从1开始:range(1,n+1)
var=0
for num in range(1,n+1):
var = var +(num- mean)**2
现在 可以通过两种方式计算方差:除以 n
或 n-1
从而给出两个不同的答案
variance1 = (var*1.0) /n
variance2 = (var*1.0) /(n-1)
例如:对于 n=10,方差 1=8.25 和方差 2=9.166666666666666
n
用于计算总体方差,n-1
用于计算样本方差。
其他详细信息:
此外,如果您的步长值为 1,则使用 range
时,无需指定。使用 range(0,n+1)
而不是 range(0,n+1,1)
避免对均值和方差使用相同的变量 sum
,因为这只会导致公式混淆。
def mean(n):
sum = 0
i = 0
for i in range(len(n)):
sum += n[i]
i += 1
avg = sum/len(n)
return avg
def var(*n):
y = []
sum = 0
i = 0
for item in n:
y.append(item)
for i in range(len(y)):
sum += (y[i] - mean(y))**2
i += 1
variance = sum/len(y)
return variance
SOF, 我是 Python 的新手,我在网上找到了很多信息,但是它要求在计算均值、方差等时使用列表,而我做不到。我在计算用户输入的平均值时没有问题,但方差已关闭。
根据我的理解,方差是 'number' 与其 'mean' 'squared' 之间的差异。也许问题出在那里?老实说,我不确定,这是我最后的手段,如果你能以任何方式提供帮助,我将不胜感激,我也愿意接受任何关于我如何编写代码的建议。
谢谢!
到目前为止我的代码:
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)
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
旁注:这些有一个内置的 statistics
库。
首先,方差不仅仅是均方数,它是所有均方数的总和除以n(或n-1)
计算方差的范围应该从1开始:range(1,n+1)
var=0
for num in range(1,n+1):
var = var +(num- mean)**2
现在 可以通过两种方式计算方差:除以 n
或 n-1
从而给出两个不同的答案
variance1 = (var*1.0) /n
variance2 = (var*1.0) /(n-1)
例如:对于 n=10,方差 1=8.25 和方差 2=9.166666666666666
n
用于计算总体方差,n-1
用于计算样本方差。
其他详细信息:
此外,如果您的步长值为 1,则使用 range
时,无需指定。使用 range(0,n+1)
而不是 range(0,n+1,1)
避免对均值和方差使用相同的变量 sum
,因为这只会导致公式混淆。
def mean(n):
sum = 0
i = 0
for i in range(len(n)):
sum += n[i]
i += 1
avg = sum/len(n)
return avg
def var(*n):
y = []
sum = 0
i = 0
for item in n:
y.append(item)
for i in range(len(y)):
sum += (y[i] - mean(y))**2
i += 1
variance = sum/len(y)
return variance