python - 使用两种方法计算方差在Python中返回不同的结果

标签 python math variance

我想使用两种不同的方法计算离散值分布的方差,以证明它们返回相同的结果:

1. σ**2 = <j**2> - <j>**2
2. σ**2 = <(Δj)**2> = Σ(Δj)**2 *P(j)

这是我的代码:

j = [14,15,16,22,24,25]
Nj = [1,1,3,2,2,5]
N = sum(Nj)

Pj = [Nj[i]/N for i in range(len(j))]

j_mean = sum(Pj[i]*j[i] for i in range(len(j)))
j_sqmean = sum(Pj[i]*j[i]**2 for i in range(len(j)))

var1 = j_mean**2 - j_sqmean
var2 = sum((j[i]-j_mean)*Nj[i] for i in range(len(j)))

print(var1,var2)

由于某种原因 var1 != var2 是结果,我无法弄清楚我的代码哪里出了问题。

最佳答案

你的两个公式都是错误的。将其更改为:

var1 = j_sqmean -j_mean**2 
var2 = sum((j[i]-j_mean)**2 * Pj[i] for i in range(len(j)))

print(var1,var2)
# 18.571428571428555 18.57142857142857

关于python - 使用两种方法计算方差在Python中返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57730548/

相关文章:

python - 如何创建与其自身具有 ManyToMany 关系的 Elixir 类

javascript - 给定一个外盒和内盒,确定内盒的位置

math - 生成三角/六角坐标 (xyz)

machine-learning - 高偏差或方差? - SVM 和奇怪的学习曲线

r - 在 R 中计算 T2 统计量

python - 为什么我不能正确使用 theano.tensor.argmax 和 theano.tensor.mean

python datetime,将工作日缩写转换为数字?

python - 按特定逻辑对嵌套列表进行排序 - Python

java - 查找可能的组合数