パラメーター(parameter)が平均(Average)=0,標準偏差(Standard Deviation, SD)=1の場合の標準正規分布(Standard Normal Distribution)は以下。
統計言語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)
統計言語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)
統計言語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
統計言語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関数を用います。この関数に、データ変数名を与えると、対象データの順序標本(昇順に並べたデータ)と、正規分布から選ばれた同数の順序分位点に対してプロットした散布図を作ります。
統計言語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")
N=100の場合(揺らぎも激しい)
N=100000の場合(ほとんど揺らがない)
一方、累積分布関数とは経験分布関数(
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")