如何在Python中生成具有给定均值,方差,偏斜和峰度的分布?

Rem*_*i.b 9 python numpy distribution scipy

random.gauss(mu,sigma)

以上是允许从给定均值和方差的正态分布中随机抽取数字的函数.但是,我们如何从仅由两个第一时刻定义的正态分布中绘制值?

就像是:

random.gauss(mu,sigma,skew,kurtosis)

Ben*_*own 6

如何使用scipy?您可以从scipy.stats库中的连续分布中选择所需的分布。

通用伽玛函数具有非零的偏斜度和峰度,但是您需要做一些工作来弄清楚使用哪些参数来指定分布以获取特定的均值,方差,偏度和峰度。这是一些入门的代码。

import scipy.stats
import matplotlib.pyplot as plt
distribution = scipy.stats.norm(loc=100,scale=5)
sample = distribution.rvs(size=10000)
plt.hist(sample)
plt.show()
print distribution.stats('mvsk')
Run Code Online (Sandbox Code Playgroud)

这将显示平均值为100,方差为25的正态分布的10,000个元素样本的直方图,并打印分布的统计信息:

(array(100.0), array(25.0), array(0.0), array(0.0))

用广义伽马分布代替正态分布,

distribution = scipy.stats.gengamma(100, 70, loc=50, scale=10)
Run Code Online (Sandbox Code Playgroud)

您会得到统计数据[均值,方差,偏度,峰度] (array(60.67925117494595), array(0.00023388203873597746), array(-0.09588807605341435), array(-0.028177799805207737))


sda*_*zig 5

尝试使用这个:

http://statsmodels.sourceforge.net/devel/generated/statsmodels.sandbox.distributions.extras.pdf_mvsk.html#statsmodels.sandbox.distributions.extras.pdf_mvsk

给定一阶、二阶矩和偏斜以及 Fisher(过量)峰态的列表,返回高斯扩展 pdf 函数。

参数: mvsk : mu, mc2, skew, kurt 的列表

在我看来很好。该页面上有一个指向源的链接。

哦,这是另一个 StackOverflow 问题,它指向我那里: Apply kurtosis to a distribution in python

  • 有没有一种方便的方法从这个分布中提取值,而不仅仅是计算密度? (3认同)