teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

コード修正と図を追加

2020/02/09 05:07

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -15,11 +15,14 @@
15
15
  import seaborn as sns
16
16
  import numpy as np
17
17
 
18
+ print(sns.__version__) # 0.9.0
19
+
18
20
  fig, (ax1, ax2) = plt.subplots(1,2)
19
21
  sns.distplot([0.1,0.1,0.1,0.2], ax=ax1)
20
22
  sns.distplot([1,1,1,2], ax=ax2)
21
23
  plt.show()
22
24
  ```
25
+ ![イメージ説明](b21987c25312e51379c8b08e76485e73.png)
23
26
 
24
27
  曲線の意味
25
28
  -----

2

全面的に回答修正

2020/02/09 05:07

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -2,28 +2,35 @@
2
2
 
3
3
  正直「確率密度」とは何かなどが~~いまいち~~ほぼほぼ理解できていないのですが、`Prasann Barot`さんの回答をgoogle翻訳した結果を引用します。
4
4
 
5
- > ANS->密度プロットのy軸は、カーネル密度推定の確率密度関数です。ただし、これは確率ではなく確率密度であると指定するように注意する必要があります。違いは、確率密度とは、x軸上の単位あたりの確率です。実際の確率に変換するには、x軸上の特定の間隔の曲線の下の領域を見つける必要があります。やや紛らわしいことに、これは確率ではなく確率密度であるため、y軸は1より大きい値を取ることができます。密度プロットの唯一の要件は、曲線下の総面積が1つに統合されることです。
5
+ > ANS->密度プロットのy軸は、カーネル密度推定の確率密度関数です。ただし、これは確率ではなく確率密度であると指定するように注意する必要があります。違いは、確率密度とは、x軸上の単位あたりの確率です。実際の確率に変換するには、x軸上の特定の間隔の曲線の下の領域を見つける必要があります。やや紛らわしいことに、これは確率ではなく確率密度であるため、y軸は1より大きい値を取ることができます。
6
6
 
7
- つまり`y`軸は確率密度を示す値ですが、描かれた曲線と`x`軸とを囲む領域の**面積が`1=100%`になるように補正、正規化された値**だということのようです。
7
+ つまり`y`軸は確率密度を示す値ですが、描かれた曲線と`x`軸とを囲む領域の**面積が`データ値の出現個数の総数`になるように補正、正規化された値**だということのようです。
8
8
  これは以下のようなコードにて簡単な図を描くことで確かめられます。
9
9
 
10
10
  以下の図において右側は`x`値が左側の`10`倍であるため`y`軸の値は`1/10`になっています。
11
- またざっと目視で縦軸軸の値を掛算して、曲線下の面積が`1`であることが分かります。
11
+ またざっと目視で曲線xで囲まれた領域の面積を求めてみます。
12
+ どちらも約`1.25`となり、実際の出現個数の総数`4`と、少し離れた値になっていますが、これは推定の仕方、`distplot`でデフォルトで使用している確率密度関数の性質に起因するものです。
12
13
  ```python
13
14
  import matplotlib.pyplot as plt
14
15
  import seaborn as sns
16
+ import numpy as np
15
17
 
16
- fig, (ax1, ax2) = plt.subplots(1, 2)
18
+ fig, (ax1, ax2) = plt.subplots(1,2)
19
+ sns.distplot([0.1,0.1,0.1,0.2], ax=ax1)
17
- sns.distplot([0.1, 0.2], ax=ax1)
20
+ sns.distplot([1,1,1,2], ax=ax2)
18
- sns.distplot([1,2], ax=ax2) # x値が↑の10倍
19
21
  plt.show()
20
22
  ```
21
- ![イメージ説明](b701910409f67cf6a9ae45b91697686a.png)
22
23
 
23
24
  曲線の意味
24
25
  -----
25
- この図の曲線([確率密度関数](https://ja.wikipedia.org/wiki/%E7%A2%BA%E7%8E%87%E5%AF%86%E5%BA%A6%E9%96%A2%E6%95%B0))を用いると、与えられたデータ群`[0.1,0.2]`以外のデータ値の出現確率を推定することができます。
26
+ この図の曲線([確率密度関数](https://ja.wikipedia.org/wiki/%E7%A2%BA%E7%8E%87%E5%AF%86%E5%BA%A6%E9%96%A2%E6%95%B0))を用いると、与えられたデータ群以外のデータ値の出現確率(個数)を推定することができます。
26
- たとえば左側の図において`x=0.05`というデータ値の出現確率は以下によって求めることができます。
27
+ たとえば左側の図において`x=0.075`というデータ値の出現確率(個数)は以下によって求めることができます。
27
28
 
28
- 今`x`値から上に直線を伸ばして曲線とそれに交わった点の`y`軸の値を見ます。この場合は約`2`になります。
29
+ 今`x`値から上に直線を伸ばして曲線とそれに交わった点の`y`軸の値を見ます。この場合は約`10`になります。
29
- これに`x=0.05`を掛けて`0.1=10%`という値が`x=0.05`の出現確率となります。
30
+ これに`x=0.075`を掛けて`0.75`という値が`x=0.075`の出現確率(個数)となります。
31
+ ただ、直感的にはもう少し大きな値になるのが自然そうで、あまり当てにならない感じもします。
32
+
33
+ ということで`Prasann Barot`さんの回答の続き
34
+ > 密度プロットの唯一の要件は、曲線下の総面積が1つに統合されることです。私は一般に、密度プロットのy軸を、異なるカテゴリ間の相対的な比較の値としてのみ考える傾向があります。
35
+
36
+ という回答になっているのかと思います。

1

追記

2020/02/09 01:31

投稿

8524ba23
8524ba23

スコア38352

answer CHANGED
@@ -18,4 +18,12 @@
18
18
  sns.distplot([1,2], ax=ax2) # x値が↑の10倍
19
19
  plt.show()
20
20
  ```
21
- ![イメージ説明](b701910409f67cf6a9ae45b91697686a.png)
21
+ ![イメージ説明](b701910409f67cf6a9ae45b91697686a.png)
22
+
23
+ 曲線の意味
24
+ -----
25
+ この図の曲線([確率密度関数](https://ja.wikipedia.org/wiki/%E7%A2%BA%E7%8E%87%E5%AF%86%E5%BA%A6%E9%96%A2%E6%95%B0))を用いると、与えられたデータ群`[0.1,0.2]`以外のデータ値の出現確率を推定することができます。
26
+ たとえば左側の図において`x=0.05`というデータ値の出現確率は以下によって求めることができます。
27
+
28
+ 今`x`値から上に直線を伸ばして曲線とそれに交わった点の`y`軸の値を見ます。この場合は約`2`になります。
29
+ これに`x=0.05`を掛けて`0.1=10%`という値が`x=0.05`の出現確率となります。