首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定范围内的偏态分布

给定范围内的偏态分布
EN

Stack Overflow用户
提问于 2021-10-06 18:09:32
回答 1查看 89关注 0票数 0

我需要为给定的范围(例如: low= 1,high =10)和size = 100生成一个倾斜分布。stats.skewnorm可以产生偏斜分布,但它不接受下界和上界的参数。谁能帮帮我。

代码语言:javascript
复制
def skewed_data(low, high, number):
    skew_parameter = 5
    data = skewnorm.rvs(skew_parameter, loc=1, scale=1, size=number)
    data = np.round(data,0).astype(int)
    return data

result_data = skewed_data(1, 10,100)

bins = np.linspace(0, 10, 10)
plt.hist(response, bins, alpha=1, label='histogram')
plt.legend(loc='upper right')
plt.show()

结果数据的直方图如下所示(所有结果数据都在1到5之间,而我希望它分布在1到10之间,并向右倾斜。

EN

回答 1

Stack Overflow用户

发布于 2021-10-06 19:22:31

有很多不对称的分布,事实上是无限的。如果你想要一个在最小和最大值上有保证的,一个简单且容易生成的可能性是triangular distribution。通过指定最小、最大和模式(最可能的结果)来参数化三角形。除了min和max之间的中点之外,mode的任何值都将产生偏斜度。如果希望结果右偏于1和10之间,请分别使用像1、10和3这样的值作为最小、最大和模式。

三角分布可以通过random modulenumpy获得。

如果三角形分布对您来说过于分段线性和尖端,另一种选择可能是beta distribution。Beta是在范围0,1上定义的,因此您需要缩放和移位才能获得其他范围。

测试版可以通过numpy/scipy获得。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69470685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档