He ajustado un modelo lognormal usando R con un conjunto de datos. Los parámetros resultantes fueron:
meanlog = 4.2991610
sdlog = 0.5511349
Me gustaría transferir este modelo a Scipy, que nunca he usado antes. Usando Scipy, pude obtener una forma y escala de 1 y 3.1626716539637488e + 90 - números muy diferentes. También intenté usar la exp del meanlog y sdlog, pero sigo obteniendo gráficos extraños.
He leído todos los documentos que puedo sobre scipy y todavía estoy confundido sobre lo que significan los parámetros de forma y escala en este caso. ¿Tendría sentido codificar la función yo mismo? Sin embargo, parece propenso a errores, ya que soy nuevo en scipy.
SCIPY Lognormal (AZUL) vs. R Lognormal (ROJO):
¿Alguna idea sobre qué dirección tomar? Los datos se ajustan muy bien con el modelo R, por cierto, por lo que si se ve como algo más en Python, siéntase libre de compartir.
¡Gracias!
Actualizar:
Estoy ejecutando Scipy 0.11
Aquí hay un subconjunto de los datos. La muestra real es 38k +, con una media de 81.53627:
Subconjunto:
x
[60, 170, 137, 138, 81, 140, 78, 46, 1, 168, 138, 148, 145, 35, 82, 126, 66, 147, 88, 106, 80, 54, 83, 13, 102, 54, 134, 34]
numpy.mean (x)
99.071428571428569
Alternativamente:
Estoy trabajando en una función para capturar el pdf:
def lognoral(x, mu, sigma):
a = 1 / (x * sigma * numpy.sqrt(2 * numpy.pi) )
b = - (numpy.log(x) - mu) ^ 2 / (2 * sigma ^ 2)
p = a * numpy.exp(b)
return p
Sin embargo, esto me da los siguientes números (probé varios en caso de que confundiera el significado de sdlog y meanlog):
>>> lognormal(54,4.2991610, 0.5511349)
0.6994656085799437
>>> lognormal(54,numpy.exp(4.2991610), 0.5511349)
0.9846125119455129
>>> lognormal(54,numpy.exp(4.2991610), numpy.exp(0.5511349))
0.9302407837304372
¿Alguna idea?
Actualizar:
volver a ejecutar con la sugerencia de "UPQuark":
forma, loc, escala (1.0, 50.03445923295007, 19.074457156766517)
Sin embargo, la forma del gráfico es muy similar, con el pico alrededor de 21.