Biorąc pod uwagę średnią i wariancję, czy istnieje proste wywołanie funkcji, które wykreśli rozkład normalny?
python
matplotlib
user1220022
źródło
źródło
%matplotlib inline
aby fabuła sięscipy.stats.norm.pdf(x, mu, sigma)
zamiastmlab.normpdf(x, mu, sigma)
math
skoro już zaimportowałeśnumpy
i możesz go użyćnp.sqrt
?math
do operacji skalarnych, ponieważ na przykładmath.sqrt
jest o ponad wielkość szybsza niżnp.sqrt
podczas pracy na skalarach.Myślę, że nie ma funkcji, która robi to wszystko w jednym wywołaniu. Jednak funkcję gęstości prawdopodobieństwa Gaussa można znaleźć w
scipy.stats
.Najprostszy sposób, jaki mogłem wymyślić, to:
Źródła:
źródło
norm.pdf
nanorm(0, 1).pdf
. Ułatwia to dostosowanie się do innych przypadków / zrozumienie, że generuje to obiekt reprezentujący zmienną losową.Zamiast tego używam seaborn, używam wykresu porostu ze średnią = 5 std = 3 z 1000 wartości
Otrzymasz normalną krzywą rozkładu
źródło
Odpowiedź Unutbu jest poprawna. Ale ponieważ nasza średnia może być większa lub mniejsza od zera, nadal chciałbym to zmienić:
do tego :
źródło
Jeśli wolisz zastosować podejście krok po kroku, możesz rozważyć następujące rozwiązanie
źródło
Właśnie wróciłem do tego i musiałem zainstalować scipy, ponieważ matplotlib.mlab dał mi komunikat o błędzie
MatplotlibDeprecationWarning: scipy.stats.norm.pdf
podczas próbowania powyższego przykładu. Więc próbka jest teraz:źródło
Uważam, że ważne jest ustawienie wysokości, dlatego stworzyłem tę funkcję:
Gdzie
sigma
jest odchylenie standardowe,h
to wysokość imid
jest to średnia.Oto wynik przy różnych wysokościach i odchyleniach:
źródło
możesz łatwo uzyskać cdf. więc pdf przez cdf
źródło