我有一个范围为[0,1000]的numpy数组,并且具有lambda_x的指数分布,我想将此numpy数组转换为具有不同的指数分布lambda_y的数组。如何找到执行此映射的函数?
试图使用反函数,但是没有用。
def inverse(X, lambd):
"""Inverse of exponential distribution """
return -np.log(1-X)/lambd
应该像获取原始指数X并乘以λx /λy来产生Y那样缩放它们一样简单。
一种众所周知的机制是通过inverse transform sampling生成指数。该页面上的第二个示例显示,如果生成的U在0和1之间均匀分布(其中100 * U对应于分布的百分位数),并使用公式-ln(1-U)/λ对其进行转换,将获得速率为λ的指数。如果λ是λx,则将产生X分布;如果λ是λy,则将产生Y分布。因此,对于给定的百分位数,按lambda的比例进行重新缩放会从一个转换为另一个。