尝试从 SciPy 的分布中抽取随机数,就像使用 stats.norm.rvs 一样。然而,我试图从我拥有的经验分布中获取数字 - 这是一个倾斜的数据集,我想将倾斜和峰度合并到我正在绘制的分布中。理想情况下,我只想调用 stats.norm.rvs(loc=blah,scale=blah,size=blah) ,然后除了均值和方差之外还设置偏斜和科特。范数函数采用由“mvsk”的某种排列组成的“时刻”参数,其中 s 和 k 代表偏斜和峰度,但显然所做的只是要求从 rv 计算 s 和 k,而我想首先建立 s 和 k 作为分布参数。
不管怎样,我无论如何都不是统计专家,也许这是一个简单或误导性的问题。将不胜感激任何帮助。
编辑:如果这四个矩不足以很好地定义分布,是否有其他方法可以绘制与经验分布一致的值,如下所示:https://i.stack.imgur.com/zia1r.png https://i.stack.imgur.com/zia1r.png
如果您不担心陷入分布的尾部,
并且数据是浮点数,那么
您可以从经验分布中采样。
- 对数据进行排序。
- 在数据前面加上 0。
- 令 N 表示该 data_array 的长度
- 计算 q=scipy.rand()*N
- idx=int(q); di=q-idx
- xlo=data_array[idx], xhi=data_array[idx+1];
- 返回 xlo+(xhi-xlo)*di
基本上,这是在经验 CDF 中进行线性插值以获得
随机变量。
两个潜在的问题是(1)如果你的数据集很小,你可能无法代表
分布良好,并且(2)你不会生成大于最大的值
您现有数据集中的一个。
为了超越这些,您需要查看参数分布,例如上面提到的伽玛分布。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)