gpt4 book ai didi

python - 了解 numpy.random.lognormal

转载 作者:太空宇宙 更新时间:2023-11-03 20:28:12 27 4
gpt4 key购买 nike

我正在将 Matlab 代码(由其他人编写)翻译成 Python。

在 Matlab 代码的一部分中,变量 X_new 被设置为从对数正态分布中得出的值,如下所示:

% log normal distribution
X_new = exp(normrnd(log(X_old), sigma));

即从以log(X_old)为中心的正态分布中抽取一个随机值,并将X_new设置为e到这个值。

这段代码直接翻译成Python如下:

import numpy as np


X_new = np.exp(np.random.normal(np.log(X_old), sigma))

但是 numpy 包含一个可以直接采样的对数正态分布。

我的问题是,后面的代码行是否等同于上面的代码行?

X_new = np.random.lognormal(np.log(X_old), sigma)

最佳答案

我想我必须在这里回答我自己的问题。

来自 np.random.lognormal 的文档, 我们有

A variable x has a log-normal distribution if log(x) is normally distributed.

让我们将 Matlab 代码中的 X_new 视为随机变量 x 的特定实例。问题是,log(x) 这里是正态分布的吗?好吧,log(X_new) 就是 normrnd(log(X_old), sigma)。所以答案是肯定的。

现在让我们转到第二版 Python 代码中对 np.random.lognormal 的调用。 X_new 再次是我们可以称为 x 的随机变量的特定实例。 log(x) 这里是正态分布的吗?是的,它必须是,否则 numpy 不会调用此函数 lognormal。底层正态分布的均值是 log(X_old),与 Matlab 代码中的正态分布均值相同。

因此,问题中对数正态分布的所有实现都是等效的(忽略语言之间任何非常低级的实现差异)。

关于python - 了解 numpy.random.lognormal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35979585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com