用两种方法计算的方差 returns 不同的结果 Python
Variance calculated with two methods returns different results in Python
我想使用两种不同的方法计算离散值分布的方差,以证明它们 return 相同的结果:
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
我想使用两种不同的方法计算离散值分布的方差,以证明它们 return 相同的结果:
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