「諸概念の迷宮(Things got frantic)」用語集

本編で頻繁に使うロジックと関連用語のまとめ。

【推定統計情報倉庫】正規分布(Normal Distribution)の基本

パラメーターparameterが平均Average)=0,標準偏差(Standard Deviation, SD)=1の場合の標準正規分布Standard Normal Distribution)は以下。

f:id:ochimusha01:20191002191518p:plain

確率分布と乱数 

統計言語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)))

正規分布の基本的性質

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

正規分布(Normal Distribution) - Wikipedia

確率密度関数PDF=Probability Density Function

f:id:ochimusha01:20191002213058p:plain

統計言語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)))

積分布関数CDF=Cumulative Distribution Function

f:id:ochimusha01:20191002213657p:plain

統計言語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)))

ちなみに標準正規分布積分して面積を求めると結果が1となります。これを100%状態と考え、その時点の分布のx座標を求めるのが確率密度Probability Density)の概念です。
統計言語Rによる検証結果

integrate(dnorm,-Inf,Inf)
1 with absolute error < 9.4e-05

この考え方に従ってqnorm関数は第一引数に確率を受けて、確率密度を返し、pnorm関数は第一引数に確率密度を受けて、確率を返します。
統計言語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

f:id:ochimusha01:20191002221153p:plain

統計言語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関数を用います。この関数に、データ変数名を与えると、対象データの順序標本(昇順に並べたデータ)と、正規分布から選ばれた同数の順序分位点に対してプロットした散布図を作ります。

f:id:ochimusha01:20191002223338p:plain

統計言語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" )

ところで確率密度関数PDF=Probability Density Function)は、度数分布Frequency Distribution)を示すグラフの一つであるヒストグラムhistogram)が大数の法則Law of Large Numbers=LLN)に従って収束した結果でもあります。

確率密度関数(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")

f:id:ochimusha01:20191002222245g:plain
N=100の場合揺らぎも激しい
f:id:ochimusha01:20191003035231g:plain

N=100000の場合ほとんど揺らがない

f:id:ochimusha01:20191003051742g:plain

一方、累積分布関数とは経験分布関数
Empirical distribution function)が大数の法則Law of Large Numbers=LLN)に従って収束した結果でもあります。

積分布関数(CDF=Cumulative Distribution Function)の集約過程

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")

f:id:ochimusha01:20191002195731g:plain

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