正規分布、カイ二乗分布、t分布、F分布

 正規分布、カイ二乗分布、t分布、F分布について説明します。Rコード付きです。

要約

 中心極限定理によって、平均は正規分布に従います。

 こうして正規分布が生まれます。

 その正規分布からカイ二乗分布が作れます。

 これらから、t分布とF分布が作れます。

正規分布

(1)中心極限定理

 中心極限定理によれば

$$母平均μで母分散\sigma^2(有限)の独立同一分布に従う$$

$$n個の確率変数Xの平均\overline{X}は$$

$$nが十分に大きいとき$$

$$母平均\mu、母分散\frac{\sigma^2}{n}の正規分布に従います$$

 このとき、確率変数Xの分布がどのような分布でも、中心極限定理は成り立ちます。

(2)分布

 正規分布は母平均と母分散を指定すると、分布が一つに定まります。確率変数Xが、母平均A、母分散Bの正規分布に従うことを

$$X 〜 N(A, B)$$

と書きます。下図の緑はN(5, 1)です。赤はN(10, 4)です。正規分布は「釣鐘型」「ベルカーブ」と言われますが、その理由がわかるでしょう。

(3)標準正規分布

 よく言及される正規分布が、標準正規分布です。標準正規分布は、母平均0、母分散1の正規分布です。

$$標準正規分布:N(0,1)$$

 標準正規分布は、次のような分布です。

 標準正規分布では、上側確率が確定します。例えば、X=1.96より大きくなる確率は0.025で、赤の面積で表せます。X=0では、上側確率は0.5です。

カイ二乗分布

(1)定義

 自由度kのカイ二乗分布とは、独立な標準正規分布N(0, 1)に従うZ1〜Zkの和をカイχ二乗

$$\chi^2=Z_1^2+Z_2^2+Z_3^3+\cdots+Z_k^2$$

としたとき、このカイ二乗が従う確率分布です。

(2)分布

 自由度1と2のとき、自由度3以降では、形状がかなり異なります。

 自由度が大きくなると、次のようになります。

t分布

(1)定義

 t分布とは

$$Z:標準正規分布N(0,1)に従う$$

$$Y_k:自由度kのカイ二乗分布に従う$$

$$ZとY_kは独立$$

で、つぎのようにtを定義したとき

$$t_k=\frac{Z}{\sqrt{\frac{Y_k}{k}}}$$

このtが従う分布を自由度kのt分布と言います。

(2)分布

 t分布は、標準正規分布と似た分布です。自由度kが大きいと、標準正規分布に近似できることが知られています。下図でも、自由度10の赤の分布は、黒の標準正規分布とかなり似ています。

F分布

(1)定義

 F分布とは

$$U_{k_1}:自由度k_1のカイ二乗分布に従う$$

$$V_{k_2}:自由度k_2のカイ二乗分布に従う$$

$$U_{k_1}とV_{k_2}は独立$$

で、つぎのようにFを定義したとき

$$F=\frac{  \frac{U_{k_1}}{ k_1 } }{   \frac{V_{k_2}}{ k_2 }   }$$

このtが従う分布を自由度(k1, k2)のF分布と言います。

(2)分布

 自由度(1, 10)、(2, 10)、(3, 10)のF分布は以下の通りです。↓

 自由度(10, 10)、(20, 10)、(30, 10)のF分布は以下の通りです。↓

 自由度(100, 100)、(300, 300)、(500, 500)のF分布は以下の通りです。↓

付録:Rコード

 シミュレーションは、R言語を用いて行いました。R言語については「しまうまのRでデータ分析入門」をご覧ください。

 美しい図示のため、パッケージとしてggplot2を用いました。

#パッケージ
library(ggplot2) 

 正規分布↓

#正規分布
ggplot(data = data.frame(X = c(0, 20)), aes(x = X))+  #0から20を描画
  stat_function(fun = dnorm, args=list(mean=5, sd=1))+  #母平均5、標準偏差1=分散1
  geom_ribbon(data=data.frame(X=x<-seq(0,15,len=101), Y=dnorm(x,5,1)),aes(x=X, ymin=0, ymax=Y),fill="red",alpha=0.3)+
  stat_function(fun = dnorm, args=list(mean=10, sd=2))+  #母平均10、標準偏差2=分散4
  geom_ribbon(data=data.frame(X=x<-seq(0,15,len=101), Y=dnorm(x,10,2)),aes(x=X, ymin=0, ymax=Y),fill="green",alpha=0.3)+
  scale_x_continuous(limits = c(0, 15),breaks = seq(0,15,5))+ 
  scale_y_continuous(limits = c(0, 0.5),breaks = seq(0,0.5,0.1))+ 
  xlab("確率変数X") + 
  ylab ("確率密度") +
  ggtitle ("赤がN(5, 1)、緑がN(10, 4)") +
  theme_grey(base_family = "HiraKakuPro-W3")

 標準正規分布の上側確率↓

#上側確率の図示(標準正規分布)
a <- 0.025 #上側確率を設定
 
b <- 1- a #下側確率を求める
x <- qnorm(b) #を求める
ggplot(data = data.frame(X = c(-3, 3)), aes(x = X))+ #-3〜3の範囲
  stat_function(fun = dnorm)+ #標準正規分布の確率密度を描画
  geom_ribbon(data=data.frame(X=x<-seq(-3,x,len=101), Y=dnorm(x)),aes(x=X, ymin=0, ymax=Y),fill="green",alpha=0.3)+ 
  geom_ribbon(data=data.frame(X=x<-seq(x,   3,len=101), Y=dnorm(x)),aes(x=X, ymin=0, ymax=Y),fill="red",alpha=0.6)+
  scale_y_continuous(limits = c(0, 0.5),breaks = seq(0,0.5,0.1))

 カイ二乗分布↓

#カイ二乗分布
ggplot(data = data.frame(X = c(0, 50)), aes(x = X))+  #0から20を描画
  stat_function(fun = dchisq, args=list(df=1),col="black")+  #母平均1、標準偏差1
  stat_function(fun = dchisq, args=list(df=2),col="blue")+  #母平均1、標準偏差1
  stat_function(fun = dchisq, args=list(df=3),col="red")+  #母平均1、標準偏差1
  scale_y_continuous(limits = c(0, 0.1),breaks = seq(0,0.1,0.02))+ 
  xlab("確率変数X") + 
  ylab ("確率密度") +
  ggtitle ("黒は自由度1、青は自由度2、赤は自由度3のカイ二乗分布") +
  theme_grey(base_family = "HiraKakuPro-W3")

 t分布↓

#t分布
ggplot(data = data.frame(X = c(-4, 4)), aes(x = X))+  #0から20を描画
  stat_function(fun = dt, args=list(df=1),col="blue")+  #母平均1、標準偏差1
  stat_function(fun = dt, args=list(df=10),col="red")+  #母平均1、標準偏差1
  stat_function(fun = dnorm, args=list(mean =0, sd =1),col="black")+  #母平均1、標準偏差1
  scale_y_continuous(limits = c(0, 0.4),breaks = seq(0,0.5,0.1))+ 
  xlab("確率変数X") + 
  ylab ("確率密度") +
  ggtitle ("青は自由度1、赤は自由度10のt分布、黒は標準正規分布N(0, 1)") +
  theme_grey(base_family = "HiraKakuPro-W3")

 F分布↓

#F分布
ggplot(data = data.frame(X = c(0.5, 1.5)), aes(x = X))+  #0から20を描画
  stat_function(fun = df, args=list(df1=100, df=100),col="black")+  #母平均1、標準偏差1
  stat_function(fun = df, args=list(df1=300, df=300),col="blue")+  #母平均1、標準偏差1
  stat_function(fun = df, args=list(df1=500, df=500),col="red")+  #母平均1、標準偏差1
  scale_y_continuous(limits = c(0, 5),breaks = seq(0,5,1))+ 
  xlab("確率変数X") + 
  ylab ("確率密度") +
  ggtitle ("黒は自由度(100,100)、青は自由度(300,300)、赤は自由度(500,500)") +
  theme_grey(base_family = "HiraKakuPro-W3")

コメント欄 お気軽にコメントをお寄せください!

タイトルとURLをコピーしました