寻找分布的均值
Finding the mean of a distribution
我的代码生成了多个分布(我只在下面绘制了一个以使其更清晰)。 Y 轴 - 这里表示概率密度函数,X 轴 - 是一个简单的值数组。
更详细。
Y = [0.02046505 0.10756612 0.24319883 0.30336375 0.22071875 0.0890625 0.015625 0 0 0]
并且 X 是使用 np.arange(0,10,1) = [0 1 2 3 4 5 6 7 8 9]
生成的
我想找到这个分布的平均值(即曲线在 X 轴上达到峰值的位置,而不是 Y 值的平均值。我知道如何使用 numpy 包 np.mean 来找到 Y 的平均值但这不是我需要的。
肉眼看来,这里的平均值大约是 x=3,但我想用代码生成它以使其更准确。
任何帮助都会很棒。
根据定义,平均值(实际上是随机变量的期望值 x
,但由于您有 PDF,您可以使用期望值)是 sum(p(x[j]) * x[j])
,其中 p(x[j])
是 x[j]
处的 PDF 值。您可以将其实现为如下代码:
>>> import numpy as np
>>> Y = np.array(eval(",".join("[0.02046505 0.10756612 0.24319883 0.30336375 0.22071875 0.0890625 0.015625 0 0 0]".split())))
>>> Y
array([0.02046505, 0.10756612, 0.24319883, 0.30336375, 0.22071875,
0.0890625 , 0.015625 , 0. , 0. , 0. ])
>>> X = np.arange(0, 10)
>>> Y.sum()
1.0
>>> (X * Y).sum()
2.92599253
所以(近似)答案是 2.92599253
。
我的代码生成了多个分布(我只在下面绘制了一个以使其更清晰)。 Y 轴 - 这里表示概率密度函数,X 轴 - 是一个简单的值数组。
更详细。
Y = [0.02046505 0.10756612 0.24319883 0.30336375 0.22071875 0.0890625 0.015625 0 0 0]
并且 X 是使用 np.arange(0,10,1) = [0 1 2 3 4 5 6 7 8 9]
我想找到这个分布的平均值(即曲线在 X 轴上达到峰值的位置,而不是 Y 值的平均值。我知道如何使用 numpy 包 np.mean 来找到 Y 的平均值但这不是我需要的。
肉眼看来,这里的平均值大约是 x=3,但我想用代码生成它以使其更准确。
任何帮助都会很棒。
根据定义,平均值(实际上是随机变量的期望值 x
,但由于您有 PDF,您可以使用期望值)是 sum(p(x[j]) * x[j])
,其中 p(x[j])
是 x[j]
处的 PDF 值。您可以将其实现为如下代码:
>>> import numpy as np
>>> Y = np.array(eval(",".join("[0.02046505 0.10756612 0.24319883 0.30336375 0.22071875 0.0890625 0.015625 0 0 0]".split())))
>>> Y
array([0.02046505, 0.10756612, 0.24319883, 0.30336375, 0.22071875,
0.0890625 , 0.015625 , 0. , 0. , 0. ])
>>> X = np.arange(0, 10)
>>> Y.sum()
1.0
>>> (X * Y).sum()
2.92599253
所以(近似)答案是 2.92599253
。