【初心者向け】正規分布(Normal Distribution)とは何か？

#確率密度(<font color="blue">Probability Density</font>)とは何か？

**パラメーター**（<font color="blue">Parameter</font>）が**平均**（<font color="blue">Average</font>）<font color="green">=0</font>,**標準偏差**(<font color="blue">SD=Standard Deviation</font>)<font color="green">=1</font>の場合の**標準正規分布**（<font color="blue">Standard Normal Distribution</font>）が以下。
![20191002191518.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/6c5d8379-3e9f-fe6b-8423-e690769d9f03.png)

```R
#確率密度関数（PDF=Probability Density Function）
f1<-function(x){dnorm(x,mean=0, sd=1)}
plot(f1,xlim=c(-5,5),ylim=c(0,1),col=rgb(1,0,0),main="Standard Normal Distribution",xlab="X",ylab="Normal Distribution")

par(new=T) #上書き

#累積分布関数（CDF=Cumulative Distribution Function）
f2<-function(x){pnorm(x,mean=0, sd=1)}
plot(f2,xlim=c(-5,5),ylim=c(0,1),col=rgb(0,0,1),main="",xlab="",ylab="")

#凡例
legend("topleft", legend=c("PDF=Probability Density Function","CDF=Cumulative Distribution Function"), lty=c(1,1), col=c(rgb(1,0,0),rgb(0,0,1)))
```
**pythonの場合**
[【Pyrhon演算処理】確率密度空間と累積分布空間①記述統計との狭間](https://qiita.com/ochimusha01/items/28b68c8783fb3d3a719d)
![image.png](https://camo.qiitausercontent.com/cb718bd24282d3ef9b70464741ede11230910369/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3539373737322f37663937656363362d623634632d663735352d653336622d6566636339623938336631612e706e67)

#正規分布の基本的性質

- **確率密度関数**では**平均値**と**最頻値**と**中央値**が一致する（<font color="blue">標準偏差=1の時のそれは0.3989423</font>）。**累積分布関数**では中央が<font color="green">x=0</font>となる（<font color="blue">y=0.5</font>）。
- 「<font color="red">パラメーター</font>」である**平均値**を中心に左右対称となる。（<font color="blue">直線x=μに関して対称</font>）
x軸が漸近線である。
- 「<font color="red">パラメーター</font>」である**分散**（<font color="blue">標準偏差</font>）が大きくなると、**確率密度関数**では曲線の山は低くなり、左右に広がって平らになる。**累積分布関数**では傾きが小さくなり幅も広がる。**分散**が小さくなると**確率密度関数**では山が高くなり、より尖った形となる。**累積分布関数**では傾きが大きくなり幅が狭まる。

###確率密度関数（<font color="blue">PDF=Probability Density Function</font>）
![20191002213058.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/30ec1385-83c3-aca9-07fc-5897a5c5081a.png)

```R
#確率密度関数（μ=0, σ2=0.4）
f1<-function(x){dnorm(x,mean=0, sd=0.4)}
plot(f1,xlim=c(-5,5),ylim=c(0,1),col=rgb(0,0,1),main="Probability Density Function(PDF)",xlab="X",ylab="Normal Distribution")

par(new=T) #上書き

#確率密度関数（μ=0, σ2=1.0）
f1<-function(x){dnorm(x,mean=0, sd=1.0)}
plot(f1,xlim=c(-5,5),ylim=c(0,1),col=rgb(1,0,0),main="",xlab="",ylab="")

par(new=T) #上書き

#確率密度関数（μ=0, σ2=4.0）
f1<-function(x){dnorm(x,mean=0, sd=4.0)}
plot(f1,xlim=c(-5,5),ylim=c(0,1),col=rgb(1,1,0),,main="",xlab="",ylab="")

par(new=T) #上書き 

#確率密度関数（μ=-2, σ2=0.7）
f1<-function(x){dnorm(x,mean=-2, sd=0.7)}
plot(f1,xlim=c(-5,5),ylim=c(0,1),col=rgb(0,1,0),,main="",xlab="",ylab="")

#凡例
legend("topright", legend=c("μ=0, σ2=0.4","μ=0, σ2=1.0","μ=0, σ2=4.0","μ=-2, σ2=0.7"), lty=c(1,1,1,1), col=c(rgb(0,0,1),rgb(1,0,0),rgb(1,1,0),rgb(0,1,0)))
```
**pythonの場合**
[【Pyrhon演算処理】確率密度空間と累積分布空間①記述統計との狭間](https://qiita.com/ochimusha01/items/28b68c8783fb3d3a719d)
![image.png](https://camo.qiitausercontent.com/1a5c3cdeab91c04d927f5f3223a925aa6696f638/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3539373737322f36303034323562632d393535652d646631332d623434392d6166636535383338393739612e706e67)

###累積分布関数（<font color="blue">CDF=Cumulative Distribution Function</font>）
![20191002213657.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/7bdd088c-9569-d01d-8b95-c0d991d3b1de.png)

```R
#累積分布関数（μ=0, σ2=0.4）
f1<-function(x){pnorm(x,mean=0, sd=0.4)}
plot(f1,xlim=c(-5,5),ylim=c(0,1),col=rgb(0,0,1),main="Cumulative Distribution Function(CDF)",xlab="X",ylab="Normal Distribution")

par(new=T) #上書き

#累積分布関数（μ=0, σ2=1.0）
f1<-function(x){pnorm(x,mean=0, sd=1.0)}
plot(f1,xlim=c(-5,5),ylim=c(0,1),col=rgb(1,0,0),main="",xlab="",ylab="")

par(new=T) #上書き

#累積分布関数（μ=0, σ2=4.0）
f1<-function(x){pnorm(x,mean=0, sd=4.0)}
plot(f1,xlim=c(-5,5),ylim=c(0,1),col=rgb(1,1,0),,main="",xlab="",ylab="")

par(new=T) #上書き 

#累積分布関数（μ=-2, σ2=0.7）
f1<-function(x){pnorm(x,mean=-2, sd=0.7)}
plot(f1,xlim=c(-5,5),ylim=c(0,1),col=rgb(0,1,0),,main="",xlab="",ylab="")

#凡例
legend("bottomright", legend=c("μ=0, σ2=0.4","μ=0, σ2=1.0","μ=0, σ2=4.0","μ=-2, σ2=0.7"), lty=c(1,1,1,1), col=c(rgb(0,0,1),rgb(1,0,0),rgb(1,1,0),rgb(0,1,0)))
```
**pythonの場合**
[【Pyrhon演算処理】確率密度空間と累積分布空間①記述統計との狭間](https://qiita.com/ochimusha01/items/28b68c8783fb3d3a719d)
![image.png](https://camo.qiitausercontent.com/f04a1ce6725e0125015737e45fed526ab8e4f924/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3539373737322f62366335353265392d653761352d376137662d623139642d3236363065666562303239392e706e67)
ちなみに**標準正規分布**は積分して面積を求めると結果が<font color="green">1</font>となります。これを<font color="green">100%状態</font>と考え、その時点の分布のx座標を求めるのが**確率密度概念**（<font color="blue">Probability Density Concept</font>）となる訳です。

```R
integrate(dnorm,-Inf,Inf)
1 with absolute error < 9.4e-05
```
この概念に従って統計言語Rの<font color="green">qnorm</font>**関数**は第一引数に**確率**を受けて、**確率密度**を返し、<font color="green">pnorm</font>**関数**は第一引数に**確率密度**を受けて、**確率**を返します。

```R
#確率点（quantile）計算、引数=確率,平均,標準偏差、返り値=確率密度
qnorm(0.95,0,1)
[1] 1.644854

#累積分布（cdf）、引数=確率密度,平均,標準偏差、返り値=確率
pnorm(1.6448,0,1)
[1] 0.9499945

#積分による検証
integrate(dnorm , -Inf, 1.6448)
0.9499945 with absolute error < 8.6e-08
```
![20191002221153.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/0157d3ca-57c4-f6b0-0257-3b1f2ec5d9d2.png)

```R
#確率密度関数（μ=0, σ2=1）
f0<-function(x){dnorm(x,mean=0, sd=1)}
plot(f0,xlim=c(-4,4),ylim=c(0,0.4),main="Probability Density Function(PDF)",xlab="X",ylab="Normal Distribution")

#塗りつぶし
x0 <- seq(-5, 1.6448, length=50 ) # x範囲を50分割
y0 <- dnorm(x0)# x座標に対応する曲線上の値（y座標）
xvals <- c(x0, 1.6448)
yvals <- c(y0, 0)
polygon( xvals, yvals, col=rgb(1,0,0))

#文字追加
text( 0, 0.2, "95%" )
text(2,0.1, "1.64" ) 
```

###qqnorm関数

そのデータが**正規分布**に従っているかどうかをチェックするには、<font color="green">qqnorm</font>**関数**を用います。この関数に、データを与えると、対象データの**順序標本**（<font color="blue">昇順に並べたデータ</font>）と、**正規分布から選ばれた同数の順序分位点**に対してプロットした散布図を作ります。
![20191002223338.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/b471da4d-46d7-98c8-5fff-2573d04da765.png)

```R
#統計言語Rによる作図例
x<-rnorm(100,mean=0, sd=1)

#qqnorm(データ名) Q－Qプロットを描画する
qqnorm(x)

#qqline(データ名） 完全な正規分布に従うときの予想線lwd=n 線の太さ（デフォルトは1）col="色名" 1:黒 2:赤 3:青 4:緑 5:水色 6:茶
qqline(x, lwd=2, col="red" )
```

#大数の法則（<font color="blue">LLN=Law of Large Numbers</font>）に従った収束(<font color="blue">Convergence</font>)が起こった結果の顕現(<font color="blue">Appearance</font>)としての確率密度関数と累積分布関数。

ところで**確率密度関数**（<font color="green">PDF=Probability Density Function</font>）とは、**度数分布**（<font color="blue">Frequency Distribution</font>）を表すグラフの一つである**ヒストグラム**（<font color="blue">Histogram</font>）上において**大数の法則**（<font color="blue">LLN=Law of Large Numbers</font>）に従った**収束**(<font color="blue">Convergence</font>)が起こった結果の**顕現**(<font color="blue">Appearance</font>)といえそうなのです。
![20191002222245.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/a5010157-2ada-bc54-08c8-8ed65f1403e2.gif)

```R
#確率密度関数（PDF=Probability Density Function）の集約過程
PDF<-function(x){rnorm(x,mean=0, sd=1)}
Probability_Density_Function<-function(x){
hist(PDF(x),col=rgb(0,1,0))
rug(PDF(x))
}

#アニメーション
library("animation")
Time_Code=c(1,3,5,7,10,25,50,75,100,250,500,750,1000,2500,5000,7500,10000,25000,50000,75000,100000)
saveGIF({
for (i in Time_Code){
　Probability_Density_Function(i)
}
}, interval = 0.1, movie.name = "PDF01.gif")
```

<font color="green">N=100</font>の場合（<font color="blue">揺らぎが激しい</font>）
[頻度ポリゴンを描く関数 hist2d() (パッケージ：gplots)](https://www.rdocumentation.org/packages/gplots/versions/3.0.1.1/topics/hist2d)

```R
z_axis<-rnorm(100,mean=0, sd=1)
x_axis<-rnorm(100,mean=0, sd=1)
y_axis<-rnorm(100,mean=0, sd=1)
SND100 <- data.frame(X=x_axis, Y=y_axis,Z=z_axis)
```
X軸-Y軸
![20191003013721.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/1f7f4b56-5b96-8e99-f2a2-ad2ead1a5657.gif)

```R
library(gplots)
SND_hist2d<-function(x){

# 遠近法プロット (persp) のためのデータをhist2d() を使用して作成
h2d <- hist2d(SND100$X, SND100$Y, show=FALSE, same.scale=TRUE, nbins=c(20,30))
# 遠近法プロット (persp) 描画
persp( h2d$x, h2d$y, h2d$counts,
ticktype="detailed", theta=x, phi=30,
expand=0.5, shade=0.5, col="cyan", ltheta=-30,main="SND with hist2d()",xlab="x",ylab="y",zlab="counts")
}

#アニメーション
library("animation")
Time_Code=seq(0,350,length=36)
saveGIF({
for (i in Time_Code){
　SND_hist2d(i)
}
}, interval = 0.1, movie.name = "SND_hist2d.gif")
```
X軸-Z軸
![20191003041114.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/70effa71-1554-8a50-2495-415be86d79d7.gif)

```R
library(gplots)
SND_hist2d<-function(x){

# 遠近法プロット (persp) のためのデータをhist2d() を使用して作成
h2d <- hist2d(SND100$X, SND100$Z, show=FALSE, same.scale=TRUE, nbins=c(20,30))
# 遠近法プロット (persp) 描画
persp( h2d$x, h2d$y, h2d$counts,
ticktype="detailed", theta=x, phi=30,
expand=0.5, shade=0.5, col="cyan", ltheta=-30,main="SND with hist2d()",xlab="x",ylab="z",zlab="counts")
}

#アニメーション
library("animation")
Time_Code=seq(0,350,length=36)
saveGIF({
for (i in Time_Code){
　SND_hist2d(i)
}
}, interval = 0.1, movie.name = "SND_hist2d.gif")
```

Y軸-Z軸
![20191003041436.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/86b2799e-7413-d0de-ea76-a69e0dc82913.gif)

```R
library(gplots)

SND_hist2d<-function(x){
# 遠近法プロット (persp) のためのデータをhist2d() を使用して作成
h2d <- hist2d(SND100$Y, SND100$Z, show=FALSE, same.scale=TRUE, nbins=c(20,30))
# 遠近法プロット (persp) 描画
persp( h2d$x, h2d$y, h2d$counts,
ticktype="detailed", theta=x, phi=30,
expand=0.5, shade=0.5, col="cyan", ltheta=-30,main="SND with hist2d()",xlab="y",ylab="z",zlab="counts")
}

#アニメーション
library("animation")
Time_Code=seq(0,350,length=36)
saveGIF({
for (i in Time_Code){
　SND_hist2d(i)
}
}, interval = 0.1, movie.name = "SND_hist2d.gif")
```

<font color="green">N=100000</font>の場合（<font color="blue">ほとんど揺らがない</font>）
![20191003051742.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/2a47e27f-a365-3565-5a35-d09a5719e5d6.gif)


**標準正規分布**のデータ生成（<font color="blue">N=100000</font>）

```R
x_axis<-rnorm(100000,mean=0, sd=1)
y_axis<-rnorm(100000,mean=0, sd=1)
SND100000 <- data.frame(X=x_axis, Y=y_axis)
```

**標準正規分布**（<font color="blue">N=100000</font>）の描画

```R
library(gplots)

SND100000_hist2d<-function(x){
# 遠近法プロット (persp) のためのデータをhist2d() を使用して作成
h2d <- hist2d(SND100000$X,SND100000$Y, show=FALSE, same.scale=TRUE, nbins=c(20,30))
# 遠近法プロット (persp) 描画
persp( h2d$x, h2d$y, h2d$counts,
ticktype="detailed", theta=x, phi=30,
expand=0.5, shade=0.5, col="cyan", ltheta=-30,main="SND with hist2d()",xlab="x",ylab="y",zlab="counts")
}

#アニメーション
library("animation")
Time_Code=seq(0,350,length=36)
saveGIF({
for (i in Time_Code){
　SND100000_hist2d(i)
}
}, interval = 0.1, movie.name = "SND100000_hist2d.gif")
```
<font color="green">まぁ一言で言うとこういう世界観の話…</font>
[【初心者向け】「三角不等式(Triangle Inequality)」の体感方法？](https://qiita.com/ochimusha01/items/325717eef47b1cbeadb1)
![20200110140517.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/9051df9b-048e-f1ae-65c3-be6100bfc5cd.png)
![r05.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/cc97af67-f7cc-cedb-28a6-cf002c4c1e21.gif)


一方、**累積分布関数**とは**経験分布関数**（<font color="blue">Empirical distribution function</font>）が**大数の法則**（<font color="blue">LLN=Law of Large Numbers</font>）に従った**収束**(<font color="blue">Convergence</font>)を起こした結果の**顕現**(<font color="blue">Appearance</font>)といえそうなのです。
<font color="green">＊要するに累積分布関数も経験分布関数もある意味、無数のステップ関数の集合と規定可能？　おや、ディラックのデルタ関数が仲間にして欲しそうな目付きでこちらを見ています。仲間に加えますか？</font>
![20191002195731.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/72e46148-73d8-d19f-e21f-3d4360a62ac0.gif)

**累積分布関数**（<font color="blue">CDF=Cumulative Distribution Function</font>）の収束過程

```R
CDF<-function(x){rnorm(x,mean=0, sd=1)}
Cumulative_Distribution_Function<-function(x){
plot.ecdf(CDF(x))
}

#アニメーション
library("animation")
Time_Code=c(1,3,5,7,10,25,50,75,100,250,500,750,1000,2500,5000,7500,10000,25000,50000,75000,100000)
saveGIF({
for (i in Time_Code){
　Cumulative_Distribution_Function(i)
}
}, interval = 0.1, movie.name = "CDF01.gif")
```

考え方としては**確率密度関数**を積分すると**累積分布関数**、逆に**累積分布関数**を微分すると**確率密度関数**になる様です。

#pythonへの移行(<font color=red>順次</font>)

とりあえず以下はほとんど元記事の引き写しです。
[1. Pythonで学ぶ統計学　2. 確率分布[scipy.stats徹底理解]](https://qiita.com/y_itoh/items/c388ff82360906240daf)

##確率密度関数(<font color=blue>PDF=Probability Density Function</font>)

```python
import sympy as sp
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt

# 等差数列を生成
X = np.arange(start=-4, stop=4, step=0.1)

# pdfで確率密度関数を生成
norm_pdf = stats.norm.pdf(x=X, loc=0, scale=1) # 期待値(平均)=0, 標準偏差(分散)=1 

# 可視化
plt.plot(X, norm_pdf)
plt.xlabel("確率変数X", fontsize=13)
plt.ylabel("確率密度pdf", fontsize=13)
plt.show()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/d023f02d-f05d-2b48-a174-273aa862c013.png)

5%~95%の信頼区間設定

```python
import sympy as sp
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt

# 等差数列を生成
X = np.arange(start=-4, stop=4, step=0.1)

# pdfで確率密度関数を生成
norm_pdf = stats.norm.pdf(x=X, loc=0, scale=1) # 期待値(平均)=0, 標準偏差(分散)=1 

# ppfで累積分布関数05％に当たる変数を取得
q_05 = stats.norm.ppf(q=0.05, loc=0, scale=1) 
print('累積分布関数05％点の確率変数：', q_05)
# pdfで当該変数の確率密度を取得
v_05 = stats.norm.pdf(x=q_05, loc=0, scale=1)
print('累積分布関数05％点の確率密度：', v_05)

# ppfで累積分布関数95％に当たる変数を取得
q_95 = stats.norm.ppf(q=0.95, loc=0, scale=1) 
print('累積分布関数95％点の確率変数：', q_95)
# pdfで当該変数の確率密度を取得
v_95 = stats.norm.pdf(x=q_95, loc=0, scale=1)
print('累積分布関数95％点の確率密度：', v_95)

x1=np.arange(start=np.round(q_05,decimals=1),stop=np.round(q_95,decimals=1),step=0.1)
x0=np.concatenate((
    [q_05],
    x1,
    [q_95,q_05])) 
y0=np.concatenate((
    [0],
    stats.norm.pdf(x=x1, loc=0, scale=1),
    [0,0])) 

# 可視化
plt.plot(X, norm_pdf,color="blue")
plt.fill(x0,y0,color="skyblue",alpha=0.5)
plt.xlabel("確率変数X", fontsize=13)
plt.ylabel("確率密度pdf", fontsize=13)
plt.show()
```

```python
累積分布関数05％点の確率変数： -1.6448536269514729
累積分布関数05％点の確率密度： 0.10313564037537128
累積分布関数95％点の確率変数： 1.6448536269514722
累積分布関数95％点の確率密度： 0.10313564037537139
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c0c30e8a-13ea-bf0c-b72a-07cd9e7d95b8.png)

##累積分布関数(<font color=blue>CDF=Cumulative Distribution Function</font>)

```python
import sympy as sp
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt

# 等差数列を生成
X = np.arange(start=-4, stop=4, step=0.1)

# cdfで累積分布関数を生成
norm_cdf = stats.norm.cdf(x=X, loc=0, scale=1) # 期待値(平均)=0, 標準偏差(分散)=1 

# 可視化
plt.plot(X, norm_cdf)
plt.xlabel("確率変数X", fontsize=13)
plt.ylabel("累積分布関数cdf", fontsize=13)
plt.show()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/007ea018-3189-1fcc-a443-82246c75c306.png)

75%までの累積分布関数

```python
import sympy as sp
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt

# 等差数列を生成
X = np.arange(start=-4, stop=4, step=0.1)

# cdfで累積分布関数を生成
norm_cdf = stats.norm.cdf(x=X, loc=0, scale=1) # 期待値(平均)=0, 標準偏差(分散)=1 

# cdfで累積分布関数75％に当たる変数を取得
q_75 = stats.norm.ppf(q=0.75, loc=0, scale=1) 
print('累積分布関数75％点の確率変数：', q_75)
# cdfで当該変数の確率密度を取得
v_75 = stats.norm.cdf(x=q_75, loc=0, scale=1)
print('累積分布関数75％点の確率密度：', v_75)

x1=np.arange(start=-4,stop=np.round(q_75,decimals=1),step=0.1)
x0=np.concatenate((
    [-4],
    x1,
    [q_75,-4])) 
y0=np.concatenate((
    [0],
    stats.norm.cdf(x=x1, loc=0, scale=1),
    [0,0])) 

# 可視化
plt.plot(X, norm_cdf)
plt.fill(x0,y0,color="skyblue",alpha=0.5)
plt.xlabel("確率変数X", fontsize=13)
plt.ylabel("累積分布関数cdf", fontsize=13)
plt.show()
```

```python
累積分布関数75％点の確率変数： 0.6744897501960817
累積分布関数75％点の確率密度： 0.75
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/e63607da-6a14-f9a0-6b73-4821e267d77e.png)

全く同一のパラメータによる確率密度関数の計算結果

```python
import sympy as sp
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib.pyplot as plt

# 等差数列を生成
X = np.arange(start=-4, stop=4, step=0.1)

# cdfで累積分布関数を生成
norm_cdf = stats.norm.pdf(x=X, loc=0, scale=1) # 期待値(平均)=0, 標準偏差(分散)=1 

# cdfで累積分布関数75％に当たる変数を取得
q_75 = stats.norm.ppf(q=0.75, loc=0, scale=1) 
print('確率密度関数75％点の確率変数：', q_75)
# cdfで当該変数の確率密度を取得
v_75 = stats.norm.pdf(x=q_75, loc=0, scale=1)
print('確率密度関数75％点の確率密度：', v_75)

x1=np.arange(start=-4,stop=np.round(q_75,decimals=1),step=0.1)
x0=np.concatenate((
    [-4],
    x1,
    [q_75,-4])) 
y0=np.concatenate((
    [0],
    stats.norm.pdf(x=x1, loc=0, scale=1),
    [0,0])) 

# 可視化
plt.plot(X, norm_cdf)
plt.fill(x0,y0,color="skyblue",alpha=0.5)
plt.xlabel("確率変数X", fontsize=13)
plt.ylabel("確率密度関数pdf", fontsize=13)
plt.show()
```

```python
確率密度関数75％点の確率変数： 0.6744897501960817
確率密度関数75％点の確率密度： 0.317776572684107
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/b6ed63f9-5aaa-722e-7979-d4f810f5fe83.png)

##QQプロット
[【統計学】Q-Qプロットの仕組みをアニメーションで理解する。](https://qiita.com/kenmatsu4/items/59605dc745707e8701e0)

>教科書的な説明をすると、「**Q-Qプロットとは得られたデータと理論分布を比較し、その類似度を調べるためのグラフ**」となります。類似していればプロットした点が直線に並ぶ、そうです。

[さまざま分布のQQプロットを描画してみる](https://qiita.com/tmitani/items/3d366fdc49f642e11b72)

```python
import math as n
import numpy as np 
import scipy.stats as stats
import matplotlib.pyplot as plt

def qqplot(dist):
    plt.hist(dist, bins=30)
    plt.show()
    stats.probplot(dist, dist="norm", plot=plt)
    plt.show()
```
###正規分布
正規分布に従う乱数は、当然QQプロット上に一直線に並びます。

```python
qqplot(np.random.randn(10000))
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/96787ded-8544-0802-af61-a54dfa501f5b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/2b4b5c37-1aec-0980-512f-2408d7699108.png)

###一様分布（<font color=blue>Uniform distribution</font>)
中央から遠ざかるほど、正規分布と比べた場合の裾の重さ(確率分布の裾がガウス分布のように指数関数的に減衰せず、それよりも緩やかに減衰する)が際立ちます。
[一様分布](https://staff.aist.go.jp/t.ihara/uniform.html)

```python
qqplot(np.random.rand(10000))
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/c4eadf7d-febf-b6cc-efff-6a3f94535e07.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/ec49e199-e00e-49ea-5493-d29afc42b0d4.png)

###混合ガウス分布（<font color=blue>GMM=Gaussian Mixture Model</font>)
[混合ガウス分布（GMM）の意味と役立つ例 - 具体例で学ぶ数学](https://mathwords.net/gmm)
＊＊クラスター分析＊＊や**EMアルゴリズム**への入口。
[EMアルゴリズム - Wikipedia](https://search.yahoo.co.jp/search?ei=UTF-8&fr=mcafeess1&p=EM%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0)
[混合正規分布モデル(GMM)とEMアルゴリズム](http://www.allisone.co.jp/html/Notes/Mathematics/statistics/gmm/index.html)
[EMアルゴリズム徹底解説](https://qiita.com/kenmatsu4/items/59ea3e5dfa3d4c161efb)

```python
dist = [np.random.normal(-3,1) if np.random.randint(2) else np.random.normal(3,1) for _ in range(10000)]
qqplot(dist)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/3b01f904-dede-d85c-9d5a-4bece45ddbd2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/75317196-25f2-d78c-1811-ec94d044192d.png)

```python
dist = [np.random.normal(-5,1) if np.random.randint(3) 
   else np.random.normal(3,5) for _ in range(10000)]
qqplot(dist)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/29ecd760-5d30-40f8-be2a-026a005d3a9b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/d0ed6427-c21c-095b-59e3-baa13f6b2ae9.png)

###Beta分布(<font color=blue>β-distribution<font>)
[ベータ分布 - Wikipedia](https://ja.wikipedia.org/wiki/%E3%83%99%E3%83%BC%E3%82%BF%E5%88%86%E5%B8%83)
[ベータ分布の意味と平均・分散の導出 | 高校数学の美しい物語](https://manabitimes.jp/math/1267)

>ベータ分布は「コイン投げにおける表が出る確率の予測分布」という解釈ができます。

* 表が出る確率xxが不明であるコインを何回か投げ、表がmm回，裏がnn回出たとする。
* この時「**表が出る確率の予測値**」は、大雑把にパラメータが(a,b)=(m+1,n+1)であるベータ分布に従うと考える事が出来る。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/8486cdf6-f8ee-8186-1792-8b8c6c817ab3.png)

* (a,b)=(1,1) の時、ベータ分布は青い直線のように一様分布となる。つまり，m=n=0の時（そもそもコインを投げていないとき）は「**情報が全く無いのでxxは一様分布に従う**」と解釈される。
* (a,b)=(2,3)(a,b)=(2,3)の時、ベータ分布は赤い曲線の様になる。つまりm=1,n=2の時は「**表が出る確率は$\frac{1}{3}$に近そうだけど，試行回数が少ないので$\frac{1}{3}$からは遠い値かもしれない**」と解釈される。
* (a,b)=(4,7)の時、ベータ分布は緑の曲線の様になる。つまりm=3,n=6の時は「**表が出る確率は$\frac{1}{3}$に近そうで、さきほどより試行回数が多いのでより自信を持って$\frac{1}{3}$に近いと言える**」と解釈される。

>こうした全体像は、より正確は「**事前分布を一様分布とし，尤度が二項分布**（コイン投げ）**であるときの事後分析がベータ分布になる**」と表現されます。

```python
qqplot(np.random.beta(0.5,0.5,10000))
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/895362da-fee9-c5f8-5a7d-57bfc9ee8810.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/1e77fb94-9478-a7e2-002f-993bf0785f71.png)

###t分布(<font color=blue>t-distribution<font>)
[t分布 - Wikipedia](https://ja.wikipedia.org/wiki/T%E5%88%86%E5%B8%83)

>連続確率分布の一つであり、正規分布する母集団の平均と分散が未知で標本サイズが小さい場合に平均を推定する問題に利用される。また2つの平均値の差の統計的有意性を検討するt検定で利用される。この分布はνによるが、元の正規分布の母標準偏差σにはよらないという重要な性質を持っている。自由度 ν が ∞（無限大）に近づくにつれ、t分布は正規分布に近づく。

**裾が重い**(確率分布の裾がガウス分布のように指数関数的に減衰せず、それよりも緩やかに減衰する)分布の代表例の一つ。

```python
qqplot(stats.t.rvs(5, size=100000))
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/1235cb8c-e068-dd85-fb43-565a177f9eb8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/6d6b9a56-bc3a-b7bc-4005-189d92ee3133.png)

###対数正規分布(<font color=blue>Log-Normal Distribution<font>)
[対数正規分布 - Wikipedia](https://ja.wikipedia.org/wiki/%E5%AF%BE%E6%95%B0%E6%AD%A3%E8%A6%8F%E5%88%86%E5%B8%83)

>確率変数Yが正規分布に従う時$e^Y$が従う分布をいう。あくまで「**正規分布の対数**」ではなく「**対数を取ると正規分布になる**」点に注意。

確率密度関数
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/633b7a67-b986-165f-fa38-fe5cc71cd810.png)
累積分布関数
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/7311d25e-05bc-4c13-55ff-eaf23612177e.png)

[対数正規分布の例と平均，分散 | 高校数学の美しい物語](https://manabitimes.jp/math/1297)

>各人が持っている資産の分布は対数正規分布っぽいと言われています。これを（少し強引ですが）説明してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/43dd8ea0-40c4-ba59-74c8-f6e5668851bb.png)

* 人間は最初みんな資産をCだけ持っている。人生のとあるイベントiによって資産は$e^{Y_i}$倍される。ただし$Y_i$は確率変数である。
* イベント1からnまで起こった後の資産は$Ce^{Y_1+Y_2+\cdots+Y_n}$である。
* 各$Y_i$がどのような分布に従うかは分からないが（長い時間経過したとき資産が減る人も増える人も同じくらいいるだろうということで）$Y_1+Y_2+\cdots +Y_n$の期待値は0と考える。
* よって中心極限定理よりnがそれなりに大きければ$Y=Y_1+Y_2+\cdots+Y_n$は正規分布に従うと考えられる。つまり，資産$Ce^Yは対数正規分布に従う。

>なお，対数正規分布は裾が重い分布であり「**お金持ちがけっこう多い**」ことを表しています。

そういえば$e^Y=(1+\frac{Y}{n})^n$で、これは「出目の数がnで、それぞれの出現確率が均等に$\frac{1}{n}のサイコロをn回振った場合$」に対応するのでした。ちなみに球状座標系への対蹠の概念追加から出発する**オイラーの多面体定理**$Vertex（頂点数）-Edge(辺数）＋Face(面数)$によって「**出目の数がnで、それぞれの出現確率が均等に$\frac{1}{n}$のサイコロ**」は「**正二面体**(コイン)」「**正四面体**」「**正六面体**」「**正八面体**」「**正十二面体**」「**正二十面体**」「（辺長無限小、辺数無限大の）**球**」の7種類しか存在しない事が明らかになっています。
[【オイラーの多面体定理と正多面体】とある「球面幾何学」の出発点…](https://qiita.com/ochimusha01/items/5f8dbf33bac5b7227a11)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F597772%2Ffe7a0a07-fc3f-c8fc-418b-ef57c8d8438e.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=5f959037ec8d18f2a24f65e77e7cce11)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fo%252Fochimusha01%252F20201121%252F20201121223022.gif%3Fixlib%3Drb-1.2.2%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D3f3105fa287092825b39b75fa7a36f21?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=54e1688127dec878f58461ec6d247c25)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20201129%2F20201129055848.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=61e634a0808fc8df078f8c1ff744232c)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210125%2F20210125160959.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=63f3be7d9ee3e2411b0d1d2a2cbcf9c3)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fo%252Fochimusha01%252F20210125%252F20210125162938.gif%3Fixlib%3Drb-4.0.0%26auto%3Dformat%26gif-q%3D60%26q%3D75%26s%3Dc537d6648d806c18a199c8628fff3ea3?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=11943feee24090ad422d1d638fc49e1d)
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fochimusha01%2F20210125%2F20210125154750.gif?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=cf4bd4b0db7cbba1a95b5830f243475e)

```python 
qqplot(np.exp(np.random.normal(100,0.5,10000)))
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/56a4d186-f1cd-4bfb-27cf-d56d03e1ab1a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/12b058b8-4c25-9688-bb3c-ccadf3062cf9.png)

そういえばR時代には「**分布の裾の重さ**」と「(CosθやSinθの形で現れる)**水平線状曲線**」の相似が気になって円分布データをQQプロットに放り込んだのです。

```python
X = np.linspace(start=-1, stop=1, num=50,endpoint=True)
Y=np.sqrt(1-X**2)

plt.plot(X, Y,marker = 'o',color="blue")
plt.show()
#qqplot(Y)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/f26b75a3-5082-538b-9bc1-292900878c23.png)

```python
X = np.linspace(start=-1, stop=1, num=50,endpoint=True)
Y=np.sqrt(1-X**2)

#plt.plot(X, Y,marker = 'o',color="blue")
#plt.show()
qqplot(Y)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/2fbfc9f0-707c-0485-524b-3f01c0296cb6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/fa908b1b-11ee-786e-553a-beb059ed7544.png)

ここに登場する「**円状分布**」なる概念は相関係数の楕円性に由来すます。線形代数における固有値や固有ベクトルの概念とも関わってくる要所といえましょう。
[【Python演算処理】行列演算の基本④大源流における記述統計学との密接な関連性?](https://qiita.com/ochimusha01/items/d36169ad13872a34ebc6)
![image,gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fo%252Fochimusha01%252F20201218%252F20201218180039.gif%3Fixlib%3Drb-4.0.0%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D978776231763907e23755df7e2ea2d54?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=524789b60a6419f9c6fd9582ca8d003d)

ところで「**円状分布**」には、以下の概念とも相似性が見て取れるのです。

###誤差関数(<font color=blue>Error Function</font>)

```python
X = np.linspace(start=-np.pi, stop=np.pi, num=50,endpoint=True)
y0=[]
for nm in range(len(X)):
    y0.append(n.erf(X[nm]))
Y=np.array(y0)

plt.plot(X, Y,marker = 'o',color="blue")
plt.show()
#qqplot(Y)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/bf18ac08-a31f-e9d0-94d1-069b4ab6602d.png)

```python
X = np.linspace(start=-np.pi, stop=np.pi, num=50,endpoint=True)
y0=[]
for nm in range(len(X)):
    y0.append(n.erf(X[nm]))
Y=np.array(y0)

#plt.plot(X, Y,marker = 'o',color="blue")
#plt.show()
qqplot(Y)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/ffa7224c-4e89-2101-7351-80f3cc5910db.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/10ba7861-d6a9-cc1b-e369-6d83c85f74b3.png)

###相補誤差関数(<font color=blue>Complementary Error Function</font>)

```python
X = np.linspace(start=-np.pi, stop=np.pi, num=50,endpoint=True)
y0=[]
for nm in range(len(X)):
    y0.append(n.erfc(X[nm]))
Y=np.array(y0)

plt.plot(X, Y,marker="o",color="blue")
plt.show()
#qqplot(Y)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/35a22d46-5bd9-104b-0316-f9213d5a0b5a.png)

```python
X = np.linspace(start=-np.pi, stop=np.pi, num=50,endpoint=True)
y0=[]
for nm in range(len(X)):
    y0.append(n.erfc(X[nm]))
Y=np.array(y0)

#plt.plot(X, Y,marker="o",color="blue")
#plt.show()
qqplot(Y)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/3174da05-73f1-e2ef-b0af-e6580fed3c1e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/6046b6c5-0278-9e8d-1d6b-1326488e0896.png)

ちなみにELFC(x)=1-ERF(x)なのでそれぞれをX軸とY軸に取るとこうなります。

```python
a = np.linspace(start=-np.pi, stop=np.pi, num=50,endpoint=True)
x0=[]
for nm in range(len(a)):
    x0.append(n.erf(a[nm]))
X=np.array(x0)
y0=[]
for nm in range(len(a)):
    y0.append(n.erfc(a[nm]))
Y=np.array(y0)

plt.plot(X, Y,marker = 'o',color="blue")
plt.show()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597772/ec2fb444-cb6d-898b-5913-462b2277fa4a.png)

より具体的には…

* **円状尺**に**円状尺**自身を射影すると「<font color=purple>半面のみをこちら側に向けた</font>」**球面尺**が現れる(円周→対蹠の射影)。<br>[【初心者向け】複素共役のアニメーション表示について。](https://qiita.com/ochimusha01/items/e0bb2789a420d3317cf1)<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%252F0%252F597772%252F0aeed895-bafb-002c-82f5-2565c3145d80.gif%3Fixlib%3Drb-4.0.0%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D9c8d8453f6ce61ac2c748d6ca4f6767f?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=14940e160895ee4b4d78faa01e89bdfa)<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%252F0%252F597772%252F98cb3b85-8775-d5ac-4f21-5608fbb7db13.gif%3Fixlib%3Drb-4.0.0%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D83a6f15e8cefb79e080b4f29e08d1cbd?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=f5d96b63415e038c040516a7a53b0a6a)<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%252F0%252F597772%252F161ed342-36aa-8db1-c463-f1ea040eb6d9.gif%3Fixlib%3Drb-4.0.0%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D9de8d6135190f76a29d43e1262604aa4?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=51b404a356befc2e991abacabc56a33a)
* 同じ**円状尺**に**誤差関数**の値を射影すると「(ブラックホールの重力レンズ効果の様に)<font color=purple>裏側まで見通せる</font>」**球面尺**が現れる(円周→円周の射影)。<br>[【数理考古学】誤差関数(ERF)と相補誤差関数 (ERFC)。](https://qiita.com/ochimusha01/items/ee8b32e4b2cc7ce4acb0)<br>![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fstaging-qiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn-ak.f.st-hatena.com%252Fimages%252Ffotolife%252Fo%252Fochimusha01%252F20201113%252F20201113111114.gif%3Fixlib%3Drb-4.0.0%26auto%3Dformat%26gif-q%3D60%26q%3D75%26w%3D1400%26fit%3Dmax%26s%3D6b7145475501685a5a44fdf7949c31d0?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&w=1400&fit=max&s=b32f512412c5f27045c9fcdc17785558)
* ただし人間の主観的視覚は(生得的にそれを誤差として切り捨てる方向に進化してきたので)両者の違いをほぼに認識出来ない。


とりあえず以下続報…