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 ', mean, 'variance is ', variance)
解决方案
你的方差公式是错误的。你可以在这里找到公式以便更好地理解,我在这里不做解释。
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
。您可以使用在线计算器轻松检查样本方差。
推荐阅读
- sql - SQL server - 使用预先指定的聚合函数聚合每一列 - 动态
- java - Android registerOnSharedPreferenceChangelistener 仅在此之后触发了几次不起作用
- python - 从 python 调用 Matlab 的 ODE45
- javascript - 将不可变数组从字符串转换为数字
- three.js - 将纹理更改为 glb 文件
- dialogflow-es - 在 Dialogflow 中添加一段时间后数据丢失 是存储问题还是服务器问题?
- terraform - Terraform 远程执行配置程序失败并显示“bash:权限被拒绝”
- java - Java:解决未经检查的调用
- jquery - 从弹出表单返回字符串值
- matplotlib - 带总和的绘图函数