Dopasowałem logarytmiczny model za pomocą R z zestawem danych. Wynikowymi parametrami były:
meanlog = 4.2991610
sdlog = 0.5511349
Chciałbym przenieść ten model do Scipy, z którego nigdy wcześniej nie korzystałem. Korzystając z Scipy, udało mi się uzyskać kształt i skalę 1 oraz 3.1626716539637488e + 90 - bardzo różne liczby. Próbowałem również użyć exp z meanlog i sdlog, ale nadal otrzymuję dziwny wykres.
Przeczytałem każdy dokument, który mogę na scipy i nadal jestem zdezorientowany co do znaczenia parametrów kształtu i skali w tym przypadku. Czy sensownie byłoby samemu kodować tę funkcję? To wydaje się być podatne na błędy, ponieważ jestem nowy w scipy.
SCIPY Lognormal (NIEBIESKI) vs. R Lognormal (RED):
Masz jakieś przemyślenia w jakim kierunku? Nawiasem mówiąc, dane są bardzo dobrze dopasowane do modelu R, więc jeśli wygląda na coś innego w Pythonie, możesz je udostępnić.
Dziękuję Ci!
Aktualizacja:
Używam Scipy 0.11
Oto podzbiór danych. Rzeczywista próbka wynosi 38k +, ze średnią 81.53627:
Podzbiór:
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
Alternatywnie:
Pracuję nad funkcją przechwytywania pliku 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
Daje mi to jednak następujące liczby (wypróbowałem kilka na wypadek pomieszania znaczenia sdlog i 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
jakieś pomysły?
Aktualizacja:
ponowne uruchomienie z sugestią „UPQuark”:
kształt, loc, skala (1.0, 50.03445923295007, 19.074457156766517)
Kształt wykresu jest jednak bardzo podobny, a szczyt ma miejsce około 21.