我试图了解是否有内置的python函数来计算对数正态均值和方差。我只需要这些信息,然后将其输入scipy.stats.lognorm
,以覆盖直方图顶部的图。
简单地使用numpy.mean
和numpy.std
似乎不是正确的想法,因为对数正态均值和方差是特定的,并且与numpy方法完全不同。在Matlab中,他们有一个名为lognstat
的方便函数,它返回对数正态分布的均值和方差,我似乎无法在Python中找到类似的方法。编写一个解决方案很容易,但我想知道这个方法是否存在于库中。感谢。
答案 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.stats
或scikits-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 参数。