回答編集履歴

3

コード修正と図を追加

2020/02/09 05:07

投稿

can110
can110

スコア38262

test CHANGED
@@ -32,6 +32,10 @@
32
32
 
33
33
 
34
34
 
35
+ print(sns.__version__) # 0.9.0
36
+
37
+
38
+
35
39
  fig, (ax1, ax2) = plt.subplots(1,2)
36
40
 
37
41
  sns.distplot([0.1,0.1,0.1,0.2], ax=ax1)
@@ -41,6 +45,8 @@
41
45
  plt.show()
42
46
 
43
47
  ```
48
+
49
+ ![イメージ説明](b21987c25312e51379c8b08e76485e73.png)
44
50
 
45
51
 
46
52
 

2

全面的に回答修正

2020/02/09 05:07

投稿

can110
can110

スコア38262

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

1

追記

2020/02/09 01:31

投稿

can110
can110

スコア38262

test CHANGED
@@ -39,3 +39,19 @@
39
39
  ```
40
40
 
41
41
  ![イメージ説明](b701910409f67cf6a9ae45b91697686a.png)
42
+
43
+
44
+
45
+ 曲線の意味
46
+
47
+ -----
48
+
49
+ この図の曲線([確率密度関数](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]`以外のデータ値の出現確率を推定することができます。
50
+
51
+ たとえば左側の図において`x=0.05`というデータ値の出現確率は以下によって求めることができます。
52
+
53
+
54
+
55
+ 今`x`値から上に直線を伸ばして曲線とそれに交わった点の`y`軸の値を見ます。この場合は約`2`になります。
56
+
57
+ これに`x=0.05`を掛けて`0.1=10%`という値が`x=0.05`の出現確率となります。