Chcę wykreślić aproksymację funkcji gęstości prawdopodobieństwa na podstawie próbki, którą posiadam; Krzywa, która naśladuje zachowanie histogramu. Mogę mieć próbki tak duże, jak chcę.Wykreślanie gęstości prawdopodobieństwa przez próbkę z matplotlibem
Odpowiedz
Jeśli chcesz wykreślić dystrybucji, i wiesz, definiują ją jako funkcję, i wykreślić ją jako tak:
import numpy as np
from matplotlib import pyplot as plt
def my_dist(x):
return np.exp(-x ** 2)
x = np.arange(-100, 100)
p = my_dist(x)
plt.plot(x, p)
plt.show()
Jeśli nie masz dokładną dystrybucję w postaci funkcja analityczna, być może wygenerować dużą próbkę, wziąć histogram i jakoś wygładzić dane:
import numpy as np
from scipy.interpolate import UnivariateSpline
from matplotlib import pyplot as plt
N = 1000
n = N//10
s = np.random.normal(size=N) # generate your data sample with N elements
p, x = np.histogram(s, bins=n) # bin it into n = N//10 bins
x = x[:-1] + (x[1] - x[0])/2 # convert bin edges to centers
f = UnivariateSpline(x, p, s=n)
plt.plot(x, f(x))
plt.show()
można zwiększyć lub zmniejszyć s
(współczynnik wygładzania) w UnivariateSpline
f wywołanie działania w celu zwiększenia lub zmniejszenia wygładzania. Na przykład, używając dwóch otrzymasz:
która nie pomaga w moim przypadku. Już napisałem funkcję pobierania próbek i nie jest ona dokładna dla próbek o rozmiarze jednym powiedzmy! – Cupitor
Następnie myślę, że powinieneś edytować swoje pytanie, aby było bardziej zrozumiałe. To odpowiada na twoje pytanie zakładając, że "masz dystrybucję". – askewchan
Dziękuję. Ale pojawia się następujący błąd: Podnieś ValueError ("tablice x i y muszą mieć równą długość wzdłuż" ValueError: tablice x i y muszą być równej długości wzdłuż osi interpolacji – Cupitor
Co musisz zrobić, to użyć gaussian_kde z pakietu scipy.stats.kde.
podane swoje dane można zrobić coś takiego:
from scipy.stats.kde import gaussian_kde
from numpy import linspace
# create fake data
data = randn(1000)
# this create the kernel, given an array it will estimate the probability over that values
kde = gaussian_kde(data)
# these are the values over wich your kernel will be evaluated
dist_space = linspace(min(data), max(data), 100)
# plot the results
plt.plot(dist_space, kde(dist_space))
Gęstość jądra może być skonfigurowany do woli i może obsługiwać dane N-wymiarowych z łatwością. Pozwoli to również uniknąć zniekształceń spline, które można zobaczyć na działce podanej przez askewchan.
Szukam podobnego rozwiązania. Mam już zestaw danych, ale nie wiem, co to ma dystrybucji, więc próbuję wykreślić funkcję rozkładu prawdopodobieństwa za pomocą Pythona, a ja nie wiem, jak to wykreślić. Każda pomoc jest w tym przypadku doceniana. –
@SitzBlogz Powiedzmy, że twój zestaw danych nazywa się 'data', a następnie po prostu usuń linię' data = randn (1000) 'w odpowiedzi @EnricoGiampieri i gotowe! –
- 1. Szybsze przekształcanie funkcji gęstości prawdopodobieństwa w Pythonie
- 2. Wykreślanie znaczników czasu (godzina/minuta/sekunda) z Matplotlibem
- 3. Oszacowanie gęstości prawdopodobieństwa sumy jednolitych zmiennych losowych w Pythonie
- 4. Jak wykreślić funkcję gęstości prawdopodobieństwa dla dopasowanego modelu miksowania Gaussa w ramach uczenia się przez scikit?
- 5. Wykreślanie predefiniowanych funkcji gęstości za pomocą ggplot i R
- 6. Tworzenie wykresu równania z matplotlibem
- 7. Funkcja gęstości prawdopodobieństwa z papieru, zaimplementowana przy użyciu C++, nie działa zgodnie z przeznaczeniem
- 8. funkcja gęstości prawdopodobieństwa z histogramu w pythonie dla dopasowania do innego histrogramu
- 9. Implementacja wielowymiarowej funkcji gęstości prawdopodobieństwa gaussowskiej dla> 2 wymiarów w C++
- 10. Czas wydruku w języku Python z Matplotlibem
- 11. Połączyć obraz i działkę z Pythonem Matplotlibem
- 12. Notacja prawdopodobieństwa
- 13. panda dokumentuje próbkę ponownie
- 14. Wykreślanie strzałek z gnuplotem
- 15. Jak zrobić losową próbkę z Internetu?
- 16. Rozłóż wykresy gęstości z ggplot
- 17. jak radzić sobie z asymptotą/nieciągłością z Matplotlibem
- 18. Biorąc pod uwagę zmienną losową z funkcją gęstości prawdopodobieństwa f (x), jak obliczyć oczekiwaną wartość tej zmiennej losowej w R?
- 19. Usuń dodaną próbkę Zdrowia App
- 20. W jaki sposób pymc reprezentuje poprzednią funkcję rozkładu i prawdopodobieństwa?
- 21. Wykreślanie wyników kde w ggtern
- 22. Generowanie rozkład prawdopodobieństwa
- 23. Wydajny sposób próbkowania z różnych wektorów prawdopodobieństwa
- 24. Obliczanie pochodnej funkcji gęstości skumulowanej w Pythonie
- 25. Bokeh - Wykreślanie danych z przerwami
- 26. Obliczanie gęstości linii w buforze z rastra
- 27. python: wykreślanie histogramu z linią funkcyjną na górze
- 28. Obliczanie gęstości ekranu Androida:
- 29. Jak uzyskać wykres gęstości gęstości R przy użyciu D3.js?
- 30. Teoria prawdopodobieństwa i planowanie projektu
Jaka jest twoja próbka? Czy jest to dystrybucja, czy rzeczywiste dane? – askewchan
Nie rozumiem, jak ktoś mógłby głosować na to pytanie ?! Mam na myśli na podstawie tego, co ??? – Cupitor
zwykle na [SO] ludzie będą głosować pytania, które są natychmiast jasne, a także pokazują próbę przez pytającego, aby odpowiedzieć na własne pytanie. "Co próbowałeś?" Zwykle komentarze w dół towarzyszą komentarzom, więc nie jestem pewien, dlaczego tak się nie stało w tym przypadku. – askewchan