Eu ajustei um modelo lognormal usando R com um conjunto de dados. Os parâmetros resultantes foram:
meanlog = 4.2991610
sdlog = 0.5511349
Gostaria de transferir esse modelo para o Scipy, que nunca usei antes. Usando o Scipy, consegui obter uma forma e escala de 1 e 3,1626716539637488e + 90 - números muito diferentes. Eu também tentei usar o exp do meanlog e sdlog, mas continuo obtendo um gráfico bizarro.
Eu li todos os documentos que posso no scipy e ainda estou confuso sobre o significado dos parâmetros de forma e escala neste caso. Faria sentido codificar a função eu mesmo? Isso parece propenso a erros, pois sou novo no scipy.
SCIPY Lognormal (AZUL) vs. R Lognormal (VERMELHO):
Alguma idéia de qual direção tomar? A propósito, os dados se encaixam muito bem com o modelo R; portanto, se parecer com algo mais em Python, fique à vontade para compartilhar.
Obrigado!
Atualizar:
Estou executando o Scipy 0.11
Aqui está um subconjunto dos dados. A amostra real é 38k +, com uma média 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:
Estou trabalhando em uma função para capturar o 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
No entanto, isso me deu os números a seguir (tentei vários no caso de estar entendendo o significado de sdlog e 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
Alguma ideia?
Atualizar:
reexecutando com a sugestão "UPQuark":
forma, loc, escala (1.0, 50.03445923295007, 19.074457156766517)
A forma do gráfico é muito semelhante, no entanto, com o pico acontecendo em torno de 21.