计算 python 中的均值和方差
Calculating mean and variance in 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)
您可以使用列表来存储所有输入。
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)
你的方差公式是错误的。大家可以找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 ', 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
。您可以使用 online calculator.
轻松检查样本方差
我有这段代码可以在您输入一组数字时计算均值和方差,但我的方差与应有的不符。我的方差公式是否以某种方式关闭或者我的代码中可能存在一些错误?
我的输出:
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)
您可以使用列表来存储所有输入。
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)
你的方差公式是错误的。大家可以找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 ', 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
。您可以使用 online calculator.