是否有Python方法来计算对数正态均值和方差?

时间:2012-04-03 19:58:59

标签: python matlab statistics

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

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

3 个答案:

答案 0 :(得分:5)

无论它值多少,matlab中的所有lognstat都是这样的:

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.statsscikits-statsmodels中可能有一项功能,但我并未意识到这一点。无论哪种方式,它只是几行代码。

答案 1 :(得分:0)

(目前我的笔记本上没有rpy安装,所以我不能试试这个)

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

然后您可以使用此R函数http://rss.acs.unt.edu/Rdoc/library/stats/html/Lognormal.html

答案 2 :(得分: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))

均值和var 分别是lognorm分布的loc和scale 参数