Wykres gęstości wykorzystuje się do zaprezentowania rozkładu zmiennej numerycznej. Jest bardzo zbliżony do histogramu.
Wykorzystuje oszacowanie gęstości jądra, aby pokazać funkcję gęstości prawdopodobieństwa zmiennej. Głównie polega to na przedstawieniu bardziej płynnego rozkłady poprzez wygładzenie szumu. Dlatego możemy myśleć, że wykres gęstości to wygładzona wersja histogramu. Piki wykresu gęstości pomagają wyświetlić, gdzie wartości są skoncentrowane w przedziale.
Wykresy gęstości służą do badania rozkładu jednej lub kilku zmiennych. Sprawdzanie rozkładu zmiennych jeden po drugim jest prawdopodobnie pierwszym zadaniem, które powinieneś zrobić, gdy otrzymasz nowy zestaw danych. Dostarcza dużą ilość informacji. Istnieje kilka kształtów dystrybucji, oto ilustracja 6 najczęstszych:
![](http://www.miroslawmamczur.pl/wp-content/uploads/2019/10/różne-gęstości.png)
Główną zaletą wykresów gęstości w porównaniu z histogramami jest to, że lepiej określają kształt rozkładu, ponieważ nie wpływa na nie liczba używanych pojemników (każdy słupek użyty w typowym histogramie). Histogram składający się tylko z 4 przedziałów nie dałby wystarczająco wyraźnego kształtu dystrybucji, tak jak zrobiłby to histogram 20-bin. Jednak w przypadku wykresów gęstości nie stanowi to problemu.
Warto również pobawić się argumentem odpowiadającym za wygładzenie (bandwith) by dokładniej zgłębić rozkład danych.
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv('../data/pokemon.csv') #https://www.kaggle.com/rounakbanik/pokemon#pokemon.csv
f, axs = plt.subplots(3,2,figsize=(15,10))
i = 1
for bw in [0.5,1,2,5,10,20]:
plt.subplot(3, 2, i)
ax = sns.kdeplot(df['sp_attack'], shade=True, bw=bw, color = 'red').set_title(f'parametr bandwith:{bw}')
i = i+1
![](http://www.miroslawmamczur.pl/wp-content/uploads/2019/10/bw.png)
I pamiętajcie, że jak najbardziej można porównać rozkłady zmiennych – jednak nie starajcie się umieścić więcej niż 3 na jednym rysunku 🙂
sns.kdeplot(df['hp'], shade=True, bw=5, color = 'gray')
sns.kdeplot(df['sp_attack'], shade=True, bw=5, color = 'red').set_title('Porównanie rozkładów');
![](http://www.miroslawmamczur.pl/wp-content/uploads/2019/10/porownanie.png)
Przypomnienie o dystrybuancie
Mówiąc o gęstości warto przypomnieć sobie czym jest dystrybuanta:
![](http://www.miroslawmamczur.pl/wp-content/uploads/2019/10/dystrybuanta.png)
Brzmi skomplikowanie. A jest to prostsze niż się wydaje, bo dystrybuanta to po prostu skumulowany wykres gęstości.
sns.kdeplot(df['hp'], shade=True, bw=5, color='gray', cumulative=True)
sns.kdeplot(df['sp_attack'], shade=True, bw=5, color = 'red', cumulative=True).set_title('Dystrybuanta');
![](http://www.miroslawmamczur.pl/wp-content/uploads/2019/10/dystrybuanta_plot.png)
pozdrawiam Was serdecznie,
![](http://www.miroslawmamczur.pl/wp-content/uploads/2019/07/podpis_Mirek.png)
Pingback: #024 Wykres ridgeline (ang. ridgeline plot) - Mirosław Mamczur
Pingback: #007 Histogram (histogram) - Mirosław Mamczur
Pingback: Wartość Shapley'a - interpretacja modeli blackbox - Mirosław Mamczur
Pingback: #005 wykres skrzypcowy (Violin Plot) - Mirosław Mamczur