2012-04-03 16 views
7

Estoy tratando de entender si hay una función incorporada en python para calcular la media lognormal y la varianza. Necesito esta información solo para luego alimentarla al scipy.stats.lognorm para un diagrama superpuesto encima de un histograma.¿Hay un método de Python para calcular la media lognormal y la varianza?

El simple uso de numpy.mean y numpy.std no parece ser la idea correcta, ya que la media lognormal y la varianza son específicas y bastante diferentes de los métodos numpy. En Matlab tienen una función práctica llamada lognstat que devuelve la media y la varianza de una distribución lognormal, y parece que no puedo rastrear un método análogo en Python. Es bastante fácil codificar una solución alternativa, pero me pregunto si este método existe en una biblioteca. Gracias.

Respuesta

5

Por si sirve de algo, todo lognstat en Matlab es la siguiente:

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 

Puede haber una función para él en scipy.stats o scikits-statsmodels, pero no estoy al tanto de ello. De cualquier manera, es solo un par de líneas de código.

+0

"' dada la media (mu) y la desviación estándar (sigma), de la distribución normal asociada. "Pero, ¿y si los datos originales no son una distribución normal? –

Cuestiones relacionadas