从python Scipy中的连续三角形分布绘制

时间:2015-07-31 12:13:37

标签: python numpy scipy

如何使用xmode=0lower limit=-1从连续的三角形分布中绘制并获取特定值upper limit=1的CDF。我无法理解如何设置参数。我希望在numpyp.random.triangular(left=-1, mode=0, right=1)中相当于执行Scipy

我尝试了以下但我不确定这是否是我所追求的。

scipy.stats.triang.cdf([-1,-0.5,0,0.5,1], c=0.5, loc=-1, scale=2)并获得了array([ 0, 0.125, 0.5, 0.875, 1.])这似乎是正确的。

我不能为什么

scipy.stats.triang.expect(func=lambda x: x, c = 0.5, loc=0.5, scale=1)

正在生成错误消息

_argcheck() missing 1 required positional argument: 'c'

虽然提供了c参数。

1 个答案:

答案 0 :(得分:1)

看起来你的CDF功能参数是正确的。一般情况下,如果您left使用了moderightnumpy.random.triangular,则可以使用

将这些参数转换为scipy.stats.triang
c = (mode - left) / (right - left)
loc = left
scale = right - left

expect方法的参数可能令人困惑。你试过这个:

scipy.stats.triang.expect(func=lambda x: x, c = 0.5, loc=0.5, scale=1)

正确的电话是

In [91]: triang.expect(lambda x: x, (0.5,), loc=0.5, scale=1)
Out[91]: 1.0

第二个参数是一个包含形状参数的元组,在本例中是形状元组(c,)。形状参数没有单独的关键字参数。

要从宽度为2的中心为0的三角形分布中绘制样本,请使用rvs scipy.triang方法,c=0.5loc=-1和{{1} }。例如,以下绘制了10个样本:

scale=2