8

我试图了解是否有内置的 python 函数来计算对数正态均值和方差。我只需要这些信息,然后将其输入到scipy.stats.lognorm覆盖在直方图顶部的绘图中。

简单地使用numpy.meanandnumpy.std似乎不是正确的想法,因为对数正态均值和方差是特定的并且与 numpy 方法完全不同。在 Matlab 中,他们有一个方便的函数lognstat,称为返回对数正态分布的均值和方差,我似乎无法在 Python 中找到类似的方法。编写解决方法很容易,但我想知道这个方法是否存在于库中。谢谢。

4

3 回答 3

6

不管它值多少钱,lognstatmatlab 中所做的一切都是这样的:

import numpy as np

def lognstat(mu, sigma):
    """Calculate the mean of and variance of the lognormal distribution given
    the mean (`mu`) and standard deviation (`sigma`), of the associated normal 
    distribution."""
    m = np.exp(mu + sigma**2 / 2.0)
    v = np.exp(2 * mu + sigma**2) * (np.exp(sigma**2) - 1)
    return m, v

scipy.stats在or中可能有它的功能scikits-statsmodels,但我不知道它是临时的。无论哪种方式,这只是几行代码。

于 2012-04-03T21:33:30.783 回答
0

(目前我的笔记本上没有 rpy 安装,所以我无法尝试)

您可以考虑安装Rpy,它是 R 的 python 接口。

然后你也许可以使用这个 R 函数http://rss.acs.unt.edu/Rdoc/library/stats/html/Lognormal.html

于 2012-04-03T20:59:47.360 回答
0

相当于乔金顿答案的python将是:

from scipy.stats import lognorm

# Mean of normal distribution
mu = 0
# Standard Deviation of normal distribution
sigma = 1

mean, var, *rest = lognorm.stats(sigma, moments='mvsk', scale=np.exp(mu))

其中mean 和 var分别是 lognorm distribution的 loc 和 scale参数。

于 2019-12-20T15:58:32.610 回答