e^(正态分布变量)的Python乘积不等于1.0?
平均值为0的正态分布变量之和的平均值为零。这很有效。e与均值为0的正态分布变量的幂的乘积应为1。但是当我在Python中这样做时,我得到了一个高于1的产品。对此有何解释e^(正态分布变量)的Python乘积不等于1.0?,python,statistics,distribution,normal-distribution,Python,Statistics,Distribution,Normal Distribution,平均值为0的正态分布变量之和的平均值为零。这很有效。e与均值为0的正态分布变量的幂的乘积应为1。但是当我在Python中这样做时,我得到了一个高于1的产品。对此有何解释 sumProduct = 0.0 iterations = 100000 for j in range(iterations): product = 1.0 for i in range(10): normalVar = numpy.random.normal(0.0, 0.1)
sumProduct = 0.0
iterations = 100000
for j in range(iterations):
product = 1.0
for i in range(10):
normalVar = numpy.random.normal(0.0, 0.1)
product *= math.exp(normalVar)
sumProduct += product
print sumProduct/iterations # Outputs 1.05
它不应该输出1.0吗?产品变量的预期值应为1.0,所有产品变量的平均值应为1.0。那么为什么它输出1.05呢?(更改迭代次数和标准偏差会更改输出,但它始终大于一)。谢谢你的帮助 对数正态变量的平均值为exp(mu+1/2 sigma^2),其中mu和sigma是相关正态分布的参数。在这种情况下,相关的正态分布是变量“乘积”的对数分布,其mu=10乘以0.0,sigma^2=10乘以0.1^2=0.1。因此,对数正态变量的平均值为exp(0.0+1/2乘以0.1)=exp(0.05),约为1.05 对数正态变量的平均值为exp(mu+1/2 sigma^2),其中mu和sigma是相关正态分布的参数。在这种情况下,相关的正态分布是变量“乘积”的对数分布,其mu=10乘以0.0,sigma^2=10乘以0.1^2=0.1。因此,对数正态变量的平均值为exp(0.0+1/2乘以0.1)=exp(0.05),约为1.05 将
math.exp()
移出循环,它会减少错误:math.exp(sum(numpy.random.normal(0.0,0.1)for i in xrange(trials))
感谢Blender。但是如果我需要在整个循环中使用乘积,比如当I==2,然后当I==3,等等,该怎么办。。。?当你说error时,这是舍入错误还是代码中的错误?一般来说,E[f(X)]≠ f(E[X])
。指数函数是一类函数,它告诉我们,f(E[x])将math.exp()
从循环中移出,它应该减少错误:math.exp(sum(numpy.random.normal(0.0,0.1)对于x范围内的i(trials))
感谢Blender。但是如果我需要在整个循环中使用乘积,比如当I==2,然后当I==3,等等,该怎么办。。。?当你说error时,这是舍入错误还是代码中的错误?一般来说,E[f(X)]≠ f(E[X])
。指数函数是一类函数,它告诉我们f(E[x])