为什么用 pymc.Uniform("stds",0,100) 计算的均匀分布的标准偏差每次都不同?
我认为标准差是用这个公式“(100-0)/2√3”计算的,所以我认为只有一个值具有一个均匀分布。
pymc.Uniform 在做什么?如果你知道关于 pymc.Uniform 的信息,请教我。谢谢!
为什么用 pymc.Uniform("stds",0,100) 计算的均匀分布的标准偏差每次都不同?
我认为标准差是用这个公式“(100-0)/2√3”计算的,所以我认为只有一个值具有一个均匀分布。
pymc.Uniform 在做什么?如果你知道关于 pymc.Uniform 的信息,请教我。谢谢!
如果数据没有变化,标准偏差应该每次输出相同的值。
(标准差的基本分解)https://www.mathsisfun.com/data/standard-deviation-formulas.html
我对 pymc 函数了解不多,但如果可以,我强烈建议使用 numpy 的标准差函数。
https://docs.scipy.org/doc/numpy/reference/generated/numpy.std.html
它使用起来非常简单且直观。我自己在几个项目中使用过它,并没有注意到标准偏差的变化。抱歉,我无法在 pymc 方面为您提供帮助,但我希望这会有所帮助。
您知道,如果您在区间 [0,100] 中模拟 N 个均匀分布的观测值,您的标准差值将收敛到相同的值
但从频率论者的观点来看,标准差是对模拟观察的计算,而不是概率分布。这就是为什么您可以观察到来自同一分布的样本数据集中的标准差之间的差异。
服从均匀分布的随机变量的标准差为
(b-a)^2 / 12
但是样本数据集的标准偏差的估计是用这样的公式完成的(看看维基页面)
1/(n-1) * sum( (x_i - avg(X))^2 for i in 1...N )
因此,尝试增加您模拟的点数,您应该会看到 stds 之间的差异减少
对不起,我犯了一个巨大的错误。我认为 pymc.Uniform("stds",0,100) 会做一些类似计算均匀分布的标准偏差的事情。但它只是进行均匀分布,并将其中之一作为名为“stds”的值。谢谢您的回答!