Python Scipy 截断指数分布

Moh*_*min 1 python scipy

我需要构造一个截断指数随机变量,范围在 5 到 7 之间,速率参数等于 0.76。我正在使用 scipy.stats.truncexpon,loc=5,scale=1/0.76。我不确定如何指定上限。有任何想法吗?

unu*_*tbu 5

import scipy.stats as stats
import matplotlib.pyplot as plt

lower, upper, scale = 5, 7, 1/0.76
X = stats.truncexpon(b=(upper-lower)/scale, loc=lower, scale=scale)
data = X.rvs(10000)

fig, ax = plt.subplots()
ax.hist(data, normed=True)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


stats.truncexpon的子类的实例rv_continuous。该类rv_continuous具有定义分布支持的下限和上限的参数abtruncexpona参数固定为 0:

truncexpon = truncexpon_gen(a=0.0, name='truncexpon')
Run Code Online (Sandbox Code Playgroud)

因此默认情况下truncexpon的支持是从0b根据文档

truncexpon.pdf(x, b, loc, scale)truncexpon.pdf(y, b) / scale与完全相同y = (x - loc) / scale

因此,y0bxlocb*scale + loc。因此,要使xlowerupper,让loc = lowerb = (upper-lower)/scale