首页 > 解决方案 > 从不同的指数分布生成新的指数分布

问题描述

我有一个在 [0,1000] 范围内的 numpy 数组,它具有 lambda_x 的指数分布,我想将此 numpy 数组转换为具有不同指数分布 lambda_y 的数组。如何找到执行此映射的函数?

尝试使用反函数,但没有用。

def inverse(X, lambd):
    """Inverse  of exponential distribution """
    return -np.log(1-X)/lambd

标签: pythonnumpyscipystatisticsdistribution

解决方案


它应该像获取原始指数X并通过乘以 λ xy来缩放它们以产生Y一样简单。

一种众所周知的机制是通过逆变换采样生成指数。该页面上的第二个示例显示,如果您生成均匀分布在 0 和 1 之间的 U(其中 100*U 对应于分布的百分位数)并使用公式 -ln(1 - U) / λ 转换它们,您将得到速率为 λ 的指数。如果 λ 是 λ x它会产生你的X分布,如果 λ 是 λ y它会产生Y分布。因此,对于给定的百分位数,按 lambda 的比率重新缩放将从一个转换为另一个。


推荐阅读