web-dev-qa-db-ja.com

Seaborn DistplotのY軸とは何ですか?

いくつかの幾何学的に分散したデータがあります。私はそれを見てみたいとき、私は使用します

sns.distplot(data, kde=False, norm_hist=True, bins=100)

結果は写真です:

Plot 1a

ただし、ビンの高さの合計は1にはなりません。つまり、y軸には確率が表示されず、別の値になります。代わりに使用する場合

weights = np.ones_like(np.array(data))/float(len(np.array(data)))
plt.hist(data, weights=weights, bins = 100)

ビンの高さの合計が1になると、y軸は確率を示します。

Plot 1b

ここでより明確に見ることができます:リストがあるとします

l = [1, 3, 2, 1, 3]

2つの1、2つの3、1つの2があるので、それぞれの確率は2/5、2/5、1/5です。シーボーンヒストリプロットを3つのビンで使用する場合:

sns.distplot(l, kde=False, norm_hist=True, bins=3)

我々が得る:

Plot 2a

ご覧のとおり、1番目と3番目のビンの合計は0.6 + 0.6 = 1.2であり、すでに1より大きいため、y軸は確率ではありません。使用するとき

weights = np.ones_like(np.array(l))/float(len(np.array(l)))
plt.hist(l, weights=weights, bins = 3)

我々が得る:

enter image description here

y軸は確率であり、予想どおり0.4 + 0.4 + 0.2 = 1です。

これらの2つのケースのビンの量は、各ケースで使用される両方の方法で同じです。幾何学的に分散したデータの場合は100ビン、3つの可能な値を持つ小さな配列lの場合は3ビン。したがって、ビンの量は問題ではありません。

私の質問は:norm_hist = Trueで呼び出されるseaborn distplotでは、y軸の意味は何ですか?

26
Mister Twister

ドキュメント から:

norm_hist:bool、オプション

Trueの場合、ヒストグラムの高さはカウントではなく密度を示します。これは、KDEまたは近似密度がプロットされる場合に暗示されます。

したがって、ビンの幅も考慮する必要があります。つまり、ビンの高さの合計だけでなく、曲線の下の面積を計算する必要があります。

15
IonicSolutions

X軸はヒストグラムのように変数の値ですが、y軸は正確に何を表しますか?

ANS->密度プロットのy軸は、カーネル密度推定の確率密度関数です。ただし、これは確率ではなく確率密度であると指定するように注意する必要があります。違いは、確率密度とは、x軸上の単位あたりの確率です。実際の確率に変換するには、x軸上の特定の間隔で曲線の下の領域を見つける必要があります。少々紛らわしいことに、これは確率密度であり確率ではないため、y軸は1より大きい値を取ることができます。密度プロットの唯一の要件は、曲線下の総面積が1つに統合されることです。一般に、密度プロットのy軸は、異なるカテゴリ間の相対的な比較のための値としてのみ考える傾向があります。

https://towardsdatascience.com/histograms-and-density-plots-in-python-f6bda88f5ac の参照から

0
Prasann Barot