Ho montato un modello lognormale usando R con un set di dati. I parametri risultanti erano:
meanlog = 4.2991610
sdlog = 0.5511349
Vorrei trasferire questo modello su Scipy, che non avevo mai usato prima. Usando Scipy, sono stato in grado di ottenere una forma e una scala di 1 e 3,1626716539637488e + 90 - numeri molto diversi. Ho anche provato a usare exp di meanlog e sdlog ma continuo a ottenere un grafico bizzarro.
Ho letto tutti i documenti che posso su Scipy e sono ancora confuso su cosa significano i parametri di forma e scala in questo caso. Avrebbe senso codificare la funzione da solo? Questo sembra soggetto a errori, dato che sono nuovo di Scipy.
SCIPY Lognormal (BLU) vs. R Lognormal (ROSSO):
Qualche idea su quale direzione prendere? I dati si adattano molto bene al modello R, a proposito, quindi se sembra qualcosa d'altro in Python, sentiti libero di condividere.
Grazie!
Aggiornare:
Sto eseguendo Scipy 0.11
Ecco un sottoinsieme dei dati. Il campione effettivo è 38k +, con una media di 81.53627:
sottoinsieme:
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
In alternativa:
Sto lavorando a una funzione per acquisire il 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
Tuttavia, questo mi dà i seguenti numeri (ne ho provati diversi nel caso avessi confuso il significato di 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
qualche idea?
Aggiornare:
rileggere con il suggerimento "UPQuark":
forma, loc, scala (1.0, 50.03445923295007, 19.074457156766517)
La forma del grafico è molto simile, tuttavia, con il picco che si verifica intorno al 21.