Is there a Python method to calculate lognormal mean and variance?

matlab, python, statistics

Solution

For whatever it's worth, all `lognstat` in matlab does is this:

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

There may be a function for it in `scipy.stats` or `scikits-statsmodels`, but I'm not aware of it offhand. Either way, it's just a couple of lines of code.

Problem

I am trying to understand if there is a built in python function to calculate the lognormal mean and variance. I require this information only to then feed it into `scipy.stats.lognorm` for a plot overlaid on top of a histogram. Simply using the `numpy.mean` and `numpy.std` does not seem to be the correct idea, as the lognormal mean and variance are specific and quite different than the numpy methods. In Matlab they have a handy function called `lognstat` that returns the mean and variance of a lognormal distribution, and I can't seem to track down an analogous method in Python. It is easy enough to code a work around, but I am wondering if this method exists in a library. Thanks.

Original source