You are on page 1of 140

1

「データ解析のための数理統計入門」

–R のコード–

このファイルでは,本書で取り上げたデータや R で作成した図表や実行した数値計算のコード
が与えられています。R はとても便利なデータ分析ツールですし,もちろんフリーです。新たな
統計手法を組み込んだパッケージが常に更新されています。このファイルは自分で書いたコード
なので,あまり上手に書けていませんが,一応分析することができますので,参考にして下さい。
2

第 1 章 確率モデル

1.1 標本空間
1.2 確率
1.3 初等的な確率計算
階乗 n!, 場合の数 n Pm = n · (n − 1) · · · (n − m + 1), 組み合わせの数 n Cm = n!/{m!(n − m)!} は
次のようにして計算できる。
 

> n <- 10; m <- 3


> factorial(n) # 階乗
[1] 3628800
> prod((n-m+1):n) # 場合の数
[1] 720
> prod((n-m+1):n)/factorial(m) # 組み合わせの数
[1] 120
> choose(n,m) # 組み合わせの数
[1] 120
 

誕生日問題 n = 40 人の教室の中で同じ誕生日の人がいる事象を A とすると,A の確率は

365 × 364 × · · · × (365 − n + 1)


P(A) = 1 −
365n
となる。
 

> n <- 40
> 1- prod((365-n+1):365)/365^n
[1] 0.8912318
 

statistics の文字を適当に並べ替えると scitsitats や aciisssttt など様々な文字の組み合わせがで


きる。全部で何通りの組み合わせがあるだろうか。これは,10 個の文字の中から,a, c を 1 個ず
つ,i を 2 個,s, t を 3 個ずつ選ぶ場合の数で,多項係数を計算すればよい。

10!
= 50400
1!1!2!3!3!
 

> factorial(10)/(factorial(2)*factorial(3)*factorial(3))
[1] 50400
 
1.4. 条件付き確率とベイズの公式 3

1.4 条件付き確率とベイズの公式
1.5 事象の独立性
公平なサイコロを 4 回投げたとき,次の確率を求めよう。(1) 少なくとも 1 回は同じ目が出る事
象 A の確率, (2) 少なくても 1 回は 1 の目が出る事象 B の確率
(1) は誕生日問題と同様にして,P(A) = 1 − 6 × 5 × 4 × 3/64 = 0.722 と計算できる。(2) は,4
回すべて 1 以外の目がでる確率を 1 から引くとよいので P(B) = 1 − (5/6)4 = 0.518 となる。
 

> 1- 6*5*4*3/6^4
[1] 0.7222222
> 1-(5/6)^4
[1] 0.5177469
 
4

第 2 章 確率変数と確率分布

2.1 離散確率分布
2.1.1 離散確率変数

2.1.2 確率分布の平均と分散

2.1.3 ベルヌーイ分布
X をベルヌーイ確率変数とし P(X = 1) = p とおくと,0 < p < 1 であり,X の確率関数は
p(0) = 1 − p, p(1) = p と書ける。これは

p(x) = px (1 − p)1−x , x = 0, 1

と表される。これをベルヌーイ分布とよび,Ber(p) で表す。

2.1.4 2 項分布
‘成功確率’ が p のベルヌーイ試行を独立に n 回繰り返したときの ‘成功’ の回数を X で表す。X = k
となる確率は, q = 1 − p に対して
 n 
p(k) = pk q n−k , k = 0, 1, . . . , n (2.1.1)
k

と表される。この分布を 2 項分布とよび,Bin(n, p) で表す。


 

> n <- 10; p <- 0.2; x=4


> dbinom(x,n,p) # Bin(n,p)の確率関数 p(x)の値
[1] 0.08808038
> dbinom(c(0:10),n,p) # Bin(n,p)の確率関数 p(0), p(1), ..., p(10)の値
[1] 0.1073741824 0.2684354560 0.3019898880 0.2013265920 0.0880803840
[6] 0.0264241152 0.0055050240 0.0007864320 0.0000737280 0.0000040960
[11] 0.0000001024
> pbinom(x,n,p) # 累積分布関数 p(0)+p(1)+...+p(x)の値
[1] 0.9672065
> qbinom(0.5,n,p) # 分位点 F(x)=0.5
[1] 2
> qbinom(0.7,n,p) # 分位点 F(x)=0.7
[1] 3
> rbinom(5, n,p) # Bin(n,p)からの乱数
[1] 3 2 2 2 1
 
Bin(n, p) の確率関数を,x = 0, 1, . . . , 10 に対してグラフに表すには次のように記述すればよい。
2.1. 離散確率分布 5
 

> n <- 10; p <- 0.2


> plot(0:10, dbinom(0:10, n, p),type="h",ann=F,ylim=c(0,0.3),lwd=5)
 

0.30

0.30
0.25

0.25
0.20

0.20
0.15

0.15
0.10

0.10
0.05

0.05
0.00

0.00
0 2 4 6 8 10 0 2 4 6 8 10

図 2.1: 2 項分布の形状 (左) Bin(10, 0.2) (右) Bin(10, 0.5)

2.1.5 幾何分布と負の 2 項分布


独立なベルヌーイ試行を繰り返していく中で,初めて ‘成功’ するまでに要した ‘失敗’ の回数を
X とするとき,X の分布を幾何分布とよぶ。X は X = {0, 1, 2, . . .} 上に値をとり,k 回 ‘失敗’ す
る確率 p(k) = P(X = k) を求めてみる。‘成功’ を〇,‘失敗’ を×で表示すると,××××××〇
のように,最初に k 個の×が並び最後に必ず〇で終わるので,‘成功確率’ を p とすると,X の確
率関数は次のように書ける。
p(k) = q k p, k = 0, 1, 2, . . .
これが幾何分布の確率関数であり,Geo(p) で表す。
負の 2 項分布は幾何分布をより一般化したもので,独立なベルヌーイ試行を繰り返していく中
で,r 回 ‘成功’ するまでに要した ‘失敗’ の回数の分布である。‘失敗’ の回数を X とし,X = k と
なる確率を求めてみよう。‘成功’ を〇,‘失敗’ を×で表すと,最後は必ず〇で終わるので,××〇
×〇××× · · · 〇×〇のようになり,こうした並べ替えの個数は,合計 r + k − 1 個の中から × を
k 個選ぶ組み合わせの数になる。従って,X = k となる確率関数は
 r+k−1 
p(k) = pr q k , k = 0, 1, 2, . . . , (2.1.2)
k

と表される。この分布を負の 2 項分布とよび,N Bin(r, p) と書くことにする。


6 第 2 章 確率変数と確率分布
 

> r <- 1; p=0.2; x=2 # 幾何分布は NBin(1,p)に対応する


> dnbinom(x,r,p) # 幾何分布 Geo(p)の確率 p(2)の値
[1] 0.128
> dnbinom(c(0:5),r,p) # Geo(p)の確率関数 p(0), p(1), ..., p(5)の値
[1] 0.200000 0.160000 0.128000 0.102400 0.081920 0.065536
> pnbinom(4,r,p) # 累積分布関数 p(0)+p(1)+...+p(4)の値
[1] 0.67232
> qnbinom(0.5, r,p) # 分位点 F(x)=0.5
[1] 3
> rnbinom(5, r, p) # Geo(p)からの乱数
[1] 3 7 5 4 0
 
 

> r <- 3; p=0.5; x=2


> dnbinom(x,r,p) # 負の2項分布 NBin(r, p)の確率 p(2)の値
[1] 0.1875
> dnbinom(c(0:10),r,p) # 負の2項分布 NBin(r, p)の確率関数
p(0), p(1), ..., p(10)の値
[1] 0.125000000 0.187500000 0.187500000 0.156250000 0.117187500 0.082031250
[7] 0.054687500 0.035156250 0.021972656 0.013427734 0.008056641
> pnbinom(4,r,p) # 累積分布関数 p(0)+p(1)+...+p(4)の値
[1] 0.7734375
> qnbinom(0.5, r,p) # 分位点 F(x)=0.5
[1] 2
> rnbinom(5, r,p) # NBin(n,p)からの乱数
[1] 3 4 1 2 5
 
Geo(p), N Bin(r, p) の確率関数を,x = 0, 1, . . . , 10 に対してグラフに表すには次のように記述
すればよい。
 

> r <- 1; p <- 0.4 # 幾何分布 Geo(p)


> plot(0:10, dnbinom(0:10, r, p),type="h",ann=F,ylim=c(0,0.45),lwd=5)
> r <- 3; p <- 0.5 # 負の2項分布 NBin(r,p)
> plot(0:10, dnbinom(0:10, r, p),type="h",ann=F,ylim=c(0,0.2),lwd=5)
 
0.25
0.4

0.20
0.3

0.15
0.2

0.10
0.1

0.05
0.00
0.0

0 2 4 6 8 10 0 2 4 6 8 10

図 2.2: (左) 幾何分布 Geo(0.4) (右) 負の 2 項分布 N Bin(3, 0.5)


2.1. 離散確率分布 7

2.1.6 ポアソン分布
‘希な現象の大量観測’ において発生する個数の分布を表すのにポアソン分布が用いられる。例
えば,ある都市の1日に起こる交通事故の件数の分布や,ある都市で 1 年間に肺がんにより亡く
なる人数の分布をポアソン分布で表すことが多い。このような希な現象が起こる個数を X で表す
とき,確率関数が
λk −λ
p(k) = P(X = k) = e , k = 0, 1, 2, . . . , (2.1.3)
k!

で与えられる確率分布をポアソン分布とよび,P o(λ) で表す。ここで,λ(λ > 0) は強度もしくは


生起率と呼ばれるパラメータである。
 

> la <- 1; x= 2
> dpois(x, la) # ポアソン分布 Po(la)の確率 p(2)の値
[1] 0.1839397
> dpois(c(0:5),la) # ポアソン分布 Po(la)の確率関数 p(0), p(1), ..., p(5)の値
[1] 0.367879441 0.367879441 0.183939721 0.061313240 0.015328310 0.003065662
> ppois(2,la) # 累積分布関数 p(0)+p(1)+p(2)の値
[1] 0.9196986
> qpois(0.5,la) # 分位点 F(x)=0.5
[1] 1
> rpois(5,la) # Po(la)からの乱数
[1] 0 1 1 0 2
 
P o(λ) の確率関数を,x = 0, 1, . . . , 5 に対してグラフに表すには次のように記述すればよい。
 

> la <- 1
> plot(0:5, dpois(0:5, la),type="h",ann=F,ylim=c(0,0.4),lwd=5)
 
0.4

0.4
0.3

0.3
0.2

0.2
0.1

0.1
0.0

0.0

0 2 4 6 8 10 0 2 4 6 8 10

図 2.3: ポアソン分布 (左) P o(1) (右) P o(5)

ポアソン分布は ‘希な現象の大量観測’ によって発生する個数の分布であり,このことは 2 項分


布において p → 0, n → ∞ に対応する。np = λ が一定のもとで p → 0, n → ∞ とすると,2 項分
布 Bin(n, p) はポアソン分布 P o(λ) に収束する。この収束の様子をプロットして見るには,次のよ
うにすればよい。
8 第 2 章 確率変数と確率分布
 

> la <- 1
> n <- 5
> plot(0:10, dbinom(0:10, n, la/n),type="h",ann=F,ylim=c(0,0.5),lwd=5)
> n <- 10
> plot(0:10, dbinom(0:10, n, la/n),type="h",ann=F,ylim=c(0,0.5),lwd=5)
> n <- 100
> plot(0:10, dbinom(0:10, n, la/n),type="h",ann=F,ylim=c(0,0.5),lwd=5)
 

2.1.7 超幾何分布
壺の中に N 個の玉が入っていて,赤玉が M 個,白玉が N − M 個とする。この壺から無作為に
非復元抽出で K 個のボールを抽出したところ,X 個が赤いボールであったとする。これを表にま
とめると次のようになる。

抽出した玉 残された玉 合計
赤玉 X M −X M
白玉 K −X N −M −K +X N −M
合計 K N −K N

周辺の合計がすべて与えられているときの X の確率分布を超幾何分布とよび,確率関数は x =
0, 1, . . . , K に対して
 M  N − M . N 
P(X = x|N, M, K) = (2.1.4)
x K −x K

と書ける。この分布を hyperG(N, M, K) と書くことにする。


 

> N=10; M=5; K=3; x=2


> dhyper(x, M, N-M, K) # 超幾何分布 hyperG(N,M,K)の確率 p(2)の値
[1] 0.4166667
> dhyper(c(0:5), M, N-M, K) # 超幾何分布 hyperG(N,M,K)の確率関数
p(0), p(1), ..., p(5)の値
[1] 0.08333333 0.41666667 0.41666667 0.08333333 0.00000000 0.00000000
> phyper(x, M, N-M, K) # 累積分布関数 p(0)+p(1)+p(2)の値
[1] 0.9166667
> qhyper(0.5, M, N-M, K) # 分位点 F(x)=0.5
[1] 1
> rhyper(5, M,N-M, K) # hyperG(N,M,K)からの乱数
[1] 0 1 2 1 1
 

2.2 連続確率分布
2.2.1 連続確率分布と特性値

2.2.2 一様分布
区間 [a, b] 上の一様分布の確率密度関数は
2.2. 連続確率分布 9

(
1/(b − a), a ≤ x ≤ b
f (x) =
0, x < a or x > b

で与えられ,この分布を U (a, b) で表す。


 

> a <- 0; b <- 1; x <- 0.5


> dunif(x, a, b, log = FALSE) # U(a,b)の確率密度関数 f(x)
[1] 1
> punif(x, a, b, lower.tail = TRUE, log.p = FALSE) # U(a,b)の分布関数 F(x)
[1] 0.5
> qunif(0.3, a, b, lower.tail = TRUE, log.p = FALSE) # 分位点 F(x)=0.3
[1] 0.3
> runif(10, a, b) # U(a,b)からの乱数
[1] 0.4686087 0.6778475 0.1819827 0.4133453 0.1009621 0.5262477 0.9432818
[8] 0.6218158 0.7425638 0.3370912
 
U (a, b) の確率密度関数のグラフは次のようにして描くことができる。
 

> a <- 0; b <- 1


> curve(dunif(x, a, b), a-1, b+1,type="l",ann=F,lwd=2)
 

2.2.3 指数分布
正の実数直線上に値をもつ連続確率変数 X で,確率密度関数が

f (x) = λe−λx , x≥0 (2.2.1)

x < 0 については f (x) = 0, で与えられる分布を指数分布とよび,Ex(λ) で表す。ただし,λ は正


のパラメータである。
 

> la <- 2; x <- 1


> dexp(x, la, log = FALSE) # 指数分布 Ex(la)の確率密度 f(1)の値
[1] 0.2706706
> pexp(x, la, lower.tail = TRUE, log.p = FALSE) # 累積分布関数 F(1)の値
[1] 0.8646647
> qexp(0.5, la, lower.tail = TRUE, log.p = FALSE) # 分位点 F(x)=0.5
[1] 0.3465736
> rexp(5, la) # Ex(la)からの乱数
[1] 0.6686409 0.1810910 0.2450584 0.7502387 0.4418999
 
Ex(λ) の確率密度関数のグラフは次のようにして描くことができる。
 

> la <- 2
> curve(dexp(x, la), 0, 3,type="l",ann=F,lwd=2)
 
10 第 2 章 確率変数と確率分布

Ex(4)

1.2
1.0
0.8
0.6
0.4
Ex(1)

0.2
Ex(0.5)

0.0
0 1 2 3 4 5

図 2.4: 指数分布 Ex(0.5), Ex(1), Ex(4)

2.2.4 ガンマ分布
正の実数直線上に値をもつ連続確率変数 X で,確率密度関数が
1 n xo
f (x) = x α−1
exp − , x≥0 (2.2.2)
Γ(α)β α β

x < 0 については f (x) = 0, で与えられる分布をガンマ分布とよび,Ga(α, β) で表す。ただし,α,


β はそれぞれ形状母数,尺度母数とよばれる正のパラメータであり,Γ(α) はガンマ関数で
Z ∞
Γ(α) = uα−1 e−u du
0

で定義される。α = 1 のとき,Γ(1) = 1 となるのでガンマ分布 G(1, 1/λ) は指数分布 Ex(λ) にな


る。自然数 k に対してガンマ分布 Ga(k/2, 2) を自由度 k のカイ 2 乗分布とよび χ2k で表す。
 

> al <- 2; be <- 0.5; la <- 1/be; x=1;


> dgamma(x, al, la) # ガンマ分布 Ga(al, 1/la)の確率密度 f(1)の値
[1] 0.5413411
> pgamma(x, al, la) # 累積分布関数 F(1)の値
[1] 0.5939942
> qgamma(0.5, al, la) # 分位点 F(x)=0.5
[1] 0.8391735
> rgamma(5, al, la) # ガンマ分布 Ga(al, 1/la)からの乱数
[1] 0.5279659 3.3769181 1.8728981 0.8311184 0.7633680
 
Ga(α, 1/λ) の確率密度関数のグラフは次のようにして描くことができる。
 

> al <- 2; be <- 0.5; la <- 1/be


> curve(dgamma(x, al, la), 0, 5,type="l",ann=F,lwd=2)
 
2.2. 連続確率分布 11

0.8

0.8
0.6

0.6
Ga(0.5,1) Ga(2,0.5)

0.4

0.4
0.2 Ga(2,1) Ga(2,1)

0.2
Ga(5,1)
Ga(2,1.5)
0.0

0.0
0 2 4 6 8 10 0 2 4 6 8 10

図 2.5: ガンマ分布 (左) α = 0.5, 1, 5, β = 1 (右) α = 2, β = 0.5, 1, 1.5

2.2.5 正規分布
実数直線上に値をもつ連続確率変数 X で,確率密度関数が次の形の分布を正規分布もしくはガ
ウス分布とよび,N (µ, σ 2 ) で表す。

1 n (x − µ)2 o
f (x) = √ exp − , −∞ < x < ∞
2πσ 2σ 2

ただし,µ, σ は −∞ < µ < µ, σ > 0 であり,それぞれ平均,標準偏差とよばれるパラメータであ


る。µ = 0, σ = 1 のとき,N (0, 1) は標準正規分布とよばれ, その確率密度関数と分布関数を
Z x
1 −x2 /2
ϕ(x) = √ e , Φ(x) = ϕ(u)du
2π −∞

で表す。
 

> x <- 1
> dnorm(x) # 標準正規分布 N(0,1)の確率密度 f(1)の値
[1] 0.2419707
> pnorm(x) # 累積分布関数 F(1)の値
[1] 0.8413447
> qnorm(0.95) # 分位点 F(x)=0.95
[1] 1.644854
> qnorm(0.975) # 分位点 F(x)=0.975
[1] 1.959964
> qnorm(0.99) #分位点 F(x)=0.99
[1] 2.326348
> rnorm(10) # N(0,1)からの乱数
[1] 0.8925206 -0.6004978 -0.3743936 -2.4933510 -0.7745514 -0.5095009
[7] -0.6752795 0.5239521 -0.1395848 -0.7150889
 
12 第 2 章 確率変数と確率分布
 

> mu <- 2; sd <- 2; x <- 3


> dnorm(x, mu, sd) # 正規分布 N(mu,sd*sd)の確率密度 f(3)の値
[1] 0.1760327
> pnorm(x, mu, sd) # 累積分布関数 F(3)の値
[1] 0.6914625
> qnorm(0.95, mu, sd) # 分位点 F(x)=0.95
[1] 5.289707
> rnorm(10, mu, sd) # 正規分布 N(mu,sd*sd)からの乱数
[1] -0.71634460 2.50734870 0.57607152 1.65282759 0.03538592 5.16019197
[7] 3.67323532 2.18631816 0.90699422 1.87443838
 
N (0, 1) の確率関数をの確率密度関数のグラフは次のようにして描くことができる。
 

> curve(dnorm(x), -4, 4,type="l",ann=F,lwd=2)


 
N (µ, σ 2 ) の確率密度関数のグラフは次のようにして描くことができる。
 

> mu <- 2; sd <- 2


> curve(dnorm(x, mu, sd), -6, 10,type="l",ann=F,lwd=2)
 
0.4

0.4

N(0,1) N(0,1)
0.3
0.3

0.2
0.2

N(2,9)
0.1
0.1

N(−1,4)
0.0
0.0

−4 −2 0 2 4 −10 −5 0 5 10

図 2.6: (左) 標準正規分布 (右) 様々な正規分布

2.2.6 ベータ分布
区間 (0, 1) 上に値をもつ連続確率変数 X で,確率密度関数が
1
f (x) = xa−1 (1 − x)b−1 , 0<x<1
B(a, b)

x ≤ 0, x ≥ 1 については f (x) = 0, で与えられる分布をベータ分布とよび,Beta(a, b) で表す。た


だし,a, b は正のパラメータであり,B(a, b) はベータ関数で
Z 1
B(a, b) = ua−1 (1 − u)b−1 du
0
2.2. 連続確率分布 13

により定義される。a = b = 1 のときには一様分布 U (0, 1) となる。


 

> a<- 2; b <- 4; x <- 0.5


> dbeta(x, a, b, ncp=0, log = FALSE) # ベータ分布 Beta(a,b)の確率密度 f(0.5)の値
[1] 1.25
> pbeta(x, a, b, ncp=0, lower.tail = TRUE, log.p = FALSE) # 累積分布関数
F(0.5)値
[1] 0.8125
> qbeta(0.5, a, b, lower.tail = TRUE, log.p = FALSE) # 分位点 F(x)=0.5
[1] 0.3138102
> rbeta(10, a, b) # Beta(a,b)からの乱数
[1] 0.4212476 0.1135698 0.4004186 0.1888033 0.2634685 0.7670737 0.2733869
[8] 0.3082128 0.6350460 0.7259719
 
Beta(a, b) の確率密度関数のグラフは次のようにして描くことができる。
 

> a<- 2; b <- 4;


> curve(dbeta(x, a, b), 0, 1,type="l",ann=F,lwd=2)
> a<- 0.5; b <- 0.5;
> curve(dbeta(x, a, b), 0, 1,type="l",ann=F,lwd=2)
 
4

Beta(0.5,0.5) Beta(0.5,4) Beta(0.5,0.1)

Beta(6,6)
3

Beta(6,2)
2

Beta(2,2)
1

1
0

0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0

図 2.7: ベータ分布 (左) 対称な場合 (右) 非対称な場合

2.2.7 寿命分布とハザード関数
指数分布が寿命分布として利用されることを述べた。指数分布を離れて,一般に T が非負の連
続確率変数とし,その密度関数を f (t), 分布関数を F (t) とする。T を故障する時間とみなそう。t
まで動作している条件のもとで次の瞬間に故障する確率密度は

f (t)
h(t) = (2.2.3)
1 − F (t)

と書けて,ハザード関数もしくは故障率関数とよぶ。指数分布については,常に h(t) = λ で時間


t には無関係になる。即ち,t 時間作動していて次の瞬間故障する確率密度は一定で λ となり,故
障がランダムに起こることを意味している。
14 第 2 章 確率変数と確率分布

ハザード関数が時間の経過に関して一定というのは自然ではないように思われる。例えば時間
の経過とともに故障し易くなる場合や故障しなくなる場合には h(t) = abtb−1 , a > 0, b > 0, なる
ハザード関数が考えられる。この確率密度関数は

f (t|a, b) = abtb−1 exp{−atb }, t > 0, (2.2.4)

となる。これは,ワイブル分布とよばれ,生存解析の分野で基本となる分布である。これを形状
母数 α と尺度母数 β を用いて表すと
α  t α−1 n  t α o
f (t|α, β) = exp − , t > 0, (2.2.5)
β β β

と書ける。これを W eibull(α, β) で表す。

1
α = b, β=
a1/b
もしくは
1
a= , b=α
βα
のような対応関係がある。Rでは W eibull(α, β) = W eibull(b, 1/a1/b ) が用いられる。
 

> a <- 0.5; b <- 2.2; al <- b; be <- (1/a)^(1/b); x <- 2


> dweibull(x, al, be, log = FALSE) # ワイブル分布 Weibull(al, be)の確率密度
f(2)の値
[1] 0.2540282
> pweibull(x, al, be, lower.tail = TRUE, log.p = FALSE) # 累積分布関数 F(2)の値
[1] 0.8994798
> qweibull(0.5, al, be, lower.tail = TRUE, log.p = FALSE) # 分位点 F(x)=0.5
[1] 1.160058
> rweibull(10, al, be) # Weibull(al, be)からの乱数
[1] 0.8615391 1.0304525 0.5722444 0.5828394 0.5766116 0.9572010 0.9455804
[8] 2.0545060 1.7081049 1.1650551
 
W eibull(b, 1/a 1/b
) の確率密度関数のグラフは次のようにして描くことができる。
 

> a <- 0.5; b <- 2.2; al <- b; be <- (1/a)^(1/b)


> curve(dweibull(x, al, be), 0, 5,type="l",ann=F,lwd=2)
 

2.3 確率変数の関数の分布と変数変換
章末問題の中に登場する確率分布について
ロジスティック分布 確率密度関数が

e−x
f (x) = , −∞ < x < ∞
(1 + e−x )2

で与えられるとき,ロジスティック分布とよぶ。
2.3. 確率変数の関数の分布と変数変換 15
 

> mu <- 0; si <- 1; x <- 1 # 位置母数 mu, 尺度母数 si


> dlogis(x, mu, si, log = FALSE) # ロジスティック分布の確率密度 f(1)の値
[1] 0.1966119
> plogis(x, mu, si, lower.tail = TRUE, log.p = FALSE) # 累積分布関数 F(2)の値
[1] 0.7310586
> qlogis(0.95, mu, si, lower.tail = TRUE, log.p = FALSE) # 分位点 F(x)=0.95
[1] 2.944439
> rlogis(10, mu, si) # ロジスティック分布からの乱数
[1] 0.8908222 -0.7473196 -2.9604344 -2.6116858 -1.0465940 -1.9853346
[7] -0.9364065 -1.1763840 -1.0464116 0.7468420
 
ロジスティック分布の確率密度関数のグラフは次のようにして描くことができる。
 

> mu <- 0; si <- 1;


> curve(dlogis(x, mu, si), -6, 6,type="l",ann=F,lwd=2)
 

パレート分布 確率密度関数が

α/β
f (x) = , x > β, α > 0
(x/β)α+1

で与えられるとき,パレート分布とよぶ。分布関数は
 β α
F (x) = 1 −
x
であり,F (x) = q となる解は
β
x=
(1 − q)1/α
である。
 

> al <- 2; be <- 2


> dparet=function(x){(al/be)*(x/be)^(-al-1)*ifelse(x>be,1,0)} # パレート分布の
確率密度関数の定義
> dparet(3) # パレート分布の確率密度 f(3)の値
[1] 0.2962963
> pparet=function(x){(1-(be/x)^al)*ifelse(x>be,1,0)} # 累積分布関数の定義
> pparet(3) # 累積分布関数 F(3)の値
[1] 0.5555556
> qparet=function(x){be*(1-x)^(-1/al)} # 分位点の定義
> qparet(0.5) # 分位点 F(x)=0.5
[1] 2.828427
> U <- runif(10,0,1) # 一様乱数を生成
> qparet(U) # 一様乱数からパレート分布からの乱数を生成
[1] 3.560352 2.616151 4.464439 3.707679 2.003927 3.323752 2.101512 2.119312
[9] 3.172361 6.678169
 
パレート分布の確率密度関数のグラフは次のようにして描くことができる。
 

> curve(dparet(x), 0, 10,type="l",ann=F,lwd=2)


 
16 第 2 章 確率変数と確率分布

両側指数分布,ラプラス分布 確率密度関数が

1 n |x − µ| o
f (x) = exp − , −∞ < x < ∞
2σ σ
で与えられるとき,両側指数分布(ラプラス分布)とよぶ。
 

> mu <- 0; si <- 1


> ddexp=function(x){(2*si)^(-1)*exp(-abs(x-mu)/si)} # 両側指数分布の確率密度関
数の定義
> ddexp(0) # 両側指数分布の確率密度 f(0)の値
[1] 0.5
> pdexp=function(x){ifelse(x<= mu,exp((x-mu)/si)/2, (2-exp(-(x-mu)/2))/2)}
# 累積分布関数の定義
> pdexp(0) # 累積分布関数 F(0)の値
[1] 0.5
> pdexp(-1)
[1] 0.1839397
> pdexp(1)
[1] 0.8032653
> qdexp=function(x){ifelse(x<= 0.5,(mu+si*log(2*x)), (mu-si*log(2*(1-x))))}
# 分位点の定義
> qdexp(0.95) # 分位点 F(x)=0.95
[1] 2.302585
> U <- runif(10,0,1) # 一様乱数を生成
> qdexp(U) # 一様乱数から両側指数分布からの乱数を生成
[1] -0.5843792 -2.3810959 0.6977377 -0.6105382 -0.6200030 0.3190894
[7] 1.4121744 -1.3508418 -1.3292754 -0.8299039
 
両側指数分布の確率関数をの確率密度関数のグラフは次のようにして描くことができる。
 

> curve(ddexp(x), -6, 6,type="l",ann=F,lwd=2)


 

コーシー分布 確率密度関数が
1 1
f (x) = , −∞ < x < ∞
πσ 1 + (x − µ)2 /σ 2

で与えられるとき,コーシー分布とよぶ。
 

> mu <- 0; si <- 1; x <- 2


> dcauchy(x, mu, si) #確率密度 f(2)
[1] 0.06366198
> dcauchy(0, mu, si) #確率密度 f(0)
[1] 0.3183099
> pcauchy(x, mu, si) #分布関数 F(2)
[1] 0.8524164
> qcauchy(0.95, mu, si) #分位点
[1] 6.313752
> rcauchy(10, mu, si) #乱数
[1] 0.4029308 0.9615391 0.3661632 -0.3501705 -5.1084765 0.5773929
[7] -0.8942030 -1.0971021 -0.9525545 -0.6367204
 
コーシー分布の確率密度関数のグラフは次のようにして描くことができる。
2.3. 確率変数の関数の分布と変数変換 17
 

> mu <- 0; si <- 1


> curve(dcauchy(x, mu, si), -6, 6,type="l",ann=F,lwd=2)
 
18

第3章 2 変数の同時確率分布

3.1 離散確率変数
多次元の離散確率変数の代表例が多項分布である。これは 2 項分布を一般化した分布であり,例
えば m 個の面からなる多面体を n 回投げて 1 から m の面が出る回数を X1 , . . . , Xm とする。それ
ぞれの面の出る確率を p1 , . . . , pm とすると,p1 + · · · + pm = 1 であり,X1 + · · · + Xm = n である。
このとき (X1 , . . . , Xm ) の同時確率関数は次で与えられる。

n!
p(x1 , . . . , xm ) = px1 · · · pxmm (3.1.1)
x1 ! · · · xm ! 1

この分布を多項分布とよび M ultm (n, p1 , . . . , pm ) で表す。


 

> n <- 10; p <- c(0.2, 0.3, 0.5); x <- c(3,3,4)


> dmultinom(x, n, p, log = FALSE) # 確率関数
[1] 0.0567
> rmultinom(10, n, p) #乱数
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 2 2 2 2 3 0 1 2 2 2
[2,] 4 2 3 1 4 5 5 4 4 3
[3,] 4 6 5 7 3 5 4 4 4 5
 

3.2 連続確率変数
多次元の確率分布において最も重要な分布は多変量正規分布である。簡単のために 2 変量正規
分布を考えると,その同時確率密度関数は
 p −1
f (x, y) = 2πσX σY 1 − ρ2 (3.2.1)
h 1 n (x − µ )2 (y − µ )2 (x − µX )(y − µY ) oi
X Y
× exp − + − 2ρ
2(1 − ρ2 ) σX2
σY2 σX σY

で与えられる。
2 次元正規分布は,ベクトルと行列を用いると一般の m 次元へ拡張することができる。
       
X1 x1 µ1 σ11 · · · σ1m
       .. 
X =  ...  , x =  ...  , µ =  ...  , Σ =  ... . 
Xm xm µm σm1 · · · σmm

とおく。m 次元の確率変数 X の確率密度関数が


1 n 1 o
⊤ −1
f (x) = exp − (x − µ) Σ (x − µ) (3.2.2)
(2π)m/2 |Σ|1/2 2
3.3. 確率変数の独立性 19

で与えられるとき,これを平均ベクトル µ, 共分散行列 Σ の多変量正規分布とよび,Nm (µ, Σ) で


表す。ここで,|Σ| は Σ の行列式,Σ−1 は Σ の逆行列,(x − µ)⊤ = (x1 − µ1 , . . . , xm − µm ) は x − µ
の転置である。
! !
−1 4 −3
µ= , Σ=
5 −3 9
の2変量正規分布 N (µ, Σ) からの乱数を生成するには,mvtnormm のパッケージをインストール
し,libray(”mvtnorm”) として,そのパーケージを読み込む。
 

> library(mvtnorm) #パッケージを読み込む


> mu <- c(-1, 5); Si <- matrix(c(4, -3, -3, 9), 2,2)
> x <- c(0,0)
> dmvnorm(x, mu, Si) #確率密度の値
[1] 0.007092209
> rmvnorm(5, mu, Si) #乱数を生成
[,1] [,2]
[1,] -0.2502375 -2.95245031
[2,] -2.8849829 3.97755990
[3,] 0.2150237 4.40386902
[4,] 3.0107666 1.95502255
[5,] 1.2246472 -0.05984901
 

3.3 確率変数の独立性
3.4 条件付き分布
3.5 2 変数関数の変数変換

Box-Muller 変換 U1 と U2 を (0, 1) 上の一様分布からの独立な確率変数とし,R = −2 log U1 ,
Θ = 2πU2 とおく。このとき,X = R cos Θ, Y = R sin Θ は独立に分布し,それぞれ標準正規分布
に従う。この変換を利用して正規乱数を発生させてみる。
 

> n <- 10
> U1 <- runif(n, 0,1); U2 <- runif(n, 0, 1) #一様乱数を生成
> X1 <- sqrt(-2*log(U1))*cos(2*pi*U2)
> X2 <- sqrt(-2*log(U1))*sin(2*pi*U2)
> X <- c(X1, X2)
> X #正規乱数を出力
[1] -0.483767107 0.135314161 0.315902563 2.117356358 0.456102253
[6] -1.761534798 0.979759445 -1.082500551 1.051192740 0.063257293
[11] -0.201042501 -0.177732523 0.009269251 -1.552477100 -2.299075308
[16] -0.528171915 0.577788303 -1.326326657 -0.926174528 1.842317821
 
20

第 4 章 期待値と積率母関数

4.1 期待値の性質
4.2 共分散と相関係数
4.3 条件付き期待値
4.4 積率母関数と確率母関数
21

第 5 章 統計モデルとデータの縮約

5.1 順序統計量
確率変数 (X1 , X2 , X3 ) の同時確率密度関数が
Γ(β1 + β2 + β3 ) β1 −1 β2 −1 β3 −1
f (x1 , x2 , x3 ) = x y z (5.1.1)
Γ(β1 )Γ(β2 )Γ(β3 )
で与えられる分布をディリクレ分布とよぶ。ただし,0 < x1 , x2 , x3 < 1, x1 + x2 + x3 = 1 であり,
β1 , β2 , β3 は正の実数である。

(β1 , β2 , β3 ) = (4, 2, 3)
のディリクレ分布からの乱数を生成するには,MCMCpack のパッケージをインストールし,li-
bray(”MCMCpack”) として,そのパーケージを読み込む。
 

> library("MCMCpack")
> be <- c(4,2,3); x <- c(0.5,0.3,0.2)
> ddirichlet(x, be) #確率密度の値
[1] 5.04
> rdirichlet(5, be) #乱数の生成
[,1] [,2] [,3]
[1,] 0.1932511 0.21641332 0.5903356
[2,] 0.3682936 0.40210850 0.2295979
[3,] 0.2215522 0.15821464 0.6202331
[4,] 0.3326953 0.17534101 0.4919637
[5,] 0.6416890 0.07702533 0.2812857
 

5.2 十分統計量
5.3 階層的な確率モデル
有限混合モデル Y を離散確率変数とし fY (i) = P (Y = i) = pi , i = 1, . . . , k, p1 + · · · + pk = 1 を
満たすものとする。Y = i を与えたときの X の条件付き確率 (密度) 関数を fi (x) と書くと,X の
周辺確率 (密度) 関数は
fX (x) = p1 f1 (x) + · · · + pk fk (x) (5.3.1)
なる形の有限混合分布になる。例えば,大学入試の半年前に実施した模擬試験において, 全受験
者の成績分布を fX (x) とし,そのうち現役生の割合を p1 ,成績分布を f1 (x) とし, 浪人生の割合を
p2 , 成績分布を f2 (x) とする。この場合は k = 2 であり,fX (x) は 2 つの峰をもつ混合分布になる
ことが予想される。

X ∼ p ∗ N (µ, σ 2 ) + (1 − p) ∗ Cauchy(10, 1)
22 第5章 統計モデルとデータの縮約

のような混合分布からの乱数の発生については次のようにすればよい。µ = 2, σ = 1 とし,n = 20
個の乱数を生成している。
 

> p <- 0.9; n <- 20; mu <- -2; si <- 1


> U <- runif(n, 0, 1)
> mixnorm <- ifelse(U<p, si*rnorm(n)+mu, rcauchy(n)+10)
> mixnorm
[1] -0.3455407 -2.8948365 -2.1483714 15.1931762 -1.8094326 -3.5322613
[7] -3.3079824 -3.6555768 -2.5482910 -1.8547795 -1.0827145 -1.3846544
[13] -1.7922564 -3.1325318 -0.5699692 9.9672812 -3.5047466 -3.4014042
[19] -3.5150216 -2.4174011
 

正規尺度混合分布 Y を正の連続確率変数とし

X|Y ∼ N (µ, 1/Y ), Y ∼ g(y), y > 0 (5.3.2)

のような階層モデルを考えると,X の周辺確率密度関数は
Z ∞
1
√ y 1/2 e−(x−µ) y/2 g(y)dy
2
fX (x) = (5.3.3)
0 2π
と表される。これを正規尺度混合分布とよぶ。例えば,Y がガンマ分布 Ga(α, β) に従う場合が考
えられる。
 

> mu <- 0; al <- 3; be <- 2; n <- 20


> Y <- rgamma(n, al, 1/be)
> smixnorm <- rnorm(n, mu, 1/Y)
> smixnorm
[1] 0.03611982 0.26479758 -0.24270652 -1.01572550 0.30472601 -0.13319983
[7] -0.34102242 0.45661796 0.05141942 -0.17446910 0.32975575 -0.12890395
[13] 0.14085931 -0.26752046 -0.12016212 1.16925662 0.60021335 0.05295962
[19] -0.42006340 -0.52407826
 

複合ポアソン分布 非負の整数に対して確率をとる離散確率変数を N とし,その確率関数を g(n)


とする。また,X1 , X2 , . . . を独立な確率変数で Xi の確率 (密度) 関数を f (x) とし,N と独立であ
るとする。このとき, Xi のランダムな個数の和

SN = X 1 + · · · + X N

を考える。特に,Xi ∼ P o(λ), N ∼ P o(ν) とするときの SN の分布を複合ポアソン分布とよぶ。


 

> la <- 1; nu <- 5; n<- 10; compois <- numeric(n)


> N <- rpois(n, nu)
> for(i in 1:n){compois[i] <- sum(rpois(N[i], la))}
> compois
[1] 5 0 4 11 1 7 4 2 3 11
> N
[1] 3 1 3 11 2 5 3 3 3 7
 
5.4. ポアソン過程 23

5.4 ポアソン過程
時間とともに確率変数が変化する確率モデルを確率過程 (stochastic process) とよぶ。ポアソン
過程は時間軸上をランダムに起こる事象についての確率過程である。
時間区間 (0, t] に起こったランダムな事象の回数を Nt とする。

(λt)k
P(Nt = k) = e−λt , k = 0, 1, 2, . . .
k!
を満たすとき,パラメータ λ のポアソン過程 (Poisson process) とよぶ。
パラメータ λ のポアソン過程 {Nt , t ≥ 0} において,初めて事象が起こるまでに要した時間を R1
とし,一般に n − 1 番目の事象が起こってから n 番目の事象が起こるまでに要した時間を Rn と
する。
パラメータ λ のポアソン過程 {Nt , t ≥ 0} は次の性質をもつ。
(1) 任意の s < t に対して Nt − Ns ∼ P o(λ(t − s)) に従う。
(2) {Rn , n = 1, 2, . . .} は互いに独立に指数分布 Rn ∼ Ex(λ) に従う。
(3) Sn = R1 + · · · + Rn とおくと,Sn ∼ Ga(n, 1/λ) に従う。
(4) P(Sn ≤ t) = P(Nt ≥ n) が成り立つ。
 

> la <- 1/10; n <- 10


> t <- 0; poisp <- numeric(n)
> R <- rexp(n, la)
> for(i in 1:n){t <- t + R[i]; poisp[i] <- t}
> round(poisp,1)
[1] 10.6 18.4 24.8 42.4 42.5 49.0 56.6 65.2 67.5 74.7
 

対数正規分布 X が正規分布 N (µ, σ 2 ) に従うとき, Y = eX の分布を対数正規分布とよぶ。ガンマ


分布と並んで正の確率変数の代表的な確率分布である。µ = 0, σ = 1 のときの対数正規分布は次
のようにして計算できる。
 

> mu <- 0; sd <- 1; n <- 10; x <- 3


> dlnorm(x, mu, sd, log = FALSE)
[1] 0.07272826
> plnorm(x, mu, sd, lower.tail = TRUE, log.p = FALSE)
[1] 0.8640314
> qlnorm(0.5, mu, sd, lower.tail = TRUE, log.p = FALSE)
[1] 1
> rlnorm(n, mu, sd)
[1] 0.5595577 0.6216154 6.8083074 1.4753147 0.8009786 2.2823252 0.8956538
[8] 0.7792714 0.2805953 0.6025530
 
24

第 6 章 大数の法則と中心極限定理

6.1 標本平均と標本分散
6.2 大数の法則
大数の法則 n 個の確率変数 X1 , . . . , Xn は独立に分布し,共通の平均 µ と分散 σ 2 をもつとする。
P
X n = n−1 ni=1 Xi とおくとき,どんな正の定数 c に対しても,n → ∞ とするとき

P(|X n − µ| > c) → 0

となる。この性質を大数の法則とよぶ。
p の確率で表が出るコインを n 回投げたときの平均の収束の様子を調べる実験を行う。
 

> n <- 10; rbinom(1,n,p)/n


[1] 0.6
> n <- 100; rbinom(1,n,p)/n
[1] 0.73
> n <- 1000; rbinom(1,n,p)/n
[1] 0.692
> n <- 10000; rbinom(1,n,p)/n
[1] 0.6938
 
R1
一様乱数によるモンテカルロ積分 G = 0 (x + 1)−2 dx の値は G = 1/2 になるが,これを大数
の法則を用いて近似することを考える。U1 , . . . , Un を独立に一様分布 U (0, 1) に従う確率変数とし

1X
n
1
Gn =
n i=1 (Ui + 1)2

とおく。このとき大数の法則より Gn →p E[(U1 + 1)−2 ] = G に確率収束する。乱数を用いて積分


値を計算する方法をモンテカルロ積分とよぶ。シミュレーション実験で収束の様子を調べてみる。
 

> n <- 10; U <- runif(n, 0,1); mean(1/(U+1)^2)


[1] 0.4394326
> n <- 100; U <- runif(n, 0,1); mean(1/(U+1)^2)
[1] 0.4772188
> n <- 1000; U <- runif(n, 0,1); mean(1/(U+1)^2)
[1] 0.4989957
 

正規乱数によるモンテカルロ積分 標準正規分布の 4 次のモーメントの値をモンテカルロ積分で


R∞ √
求める実験をしてみよう。G = −∞ x4 e−x /2 dx/ 2π = 3 が真値である。独立に正規分布 N (0, 1)
2

Pn
に従う確率変数 X1 , . . . , Xn に対して Gn = n−1 i=1 Xi4 とおく。このとき大数の法則より Gn →p 3
に確率収束する。
6.3. 中心極限定理 25
 

> n <- 10; Z <- rnorm(n); mean(Z^4)


[1] 0.3401133
> n <- 100; Z <- rnorm(n); mean(Z^4)
[1] 3.270544
> n <- 10000; Z <- rnorm(n); mean(Z^4)
[1] 2.951415
 

6.3 中心極限定理
中心極限定理 確率変数 X1 , . . . , Xn が独立に同一の分布に従い,E[Xi ] = µ, Var(Xi ) = σ 2 とす
る。Xi の積率母関数が存在するとき
Z x
√ 1
√ e−u /2 du = Φ(x)
2
lim P( n(X − µ)/σ ≤ x) =
n→∞ −∞ 2π

が成り立つ。これを中心極限定理とよぶ。
中心極限定理は,n が大きいときには確率変数の和の分布が正規分布で近似できることを意味
する。2項分布はベルヌーイ確率変数の和の分布であるから,この分布が n の増大とともに正規
分布に近づくことを調べてみる。表が出る確率が 0.7 の偏ったコインを 5 回,20 回,40 回と投げ
ると,表の出る回数の分布はそれぞれ 2 項分布 Bin(5, 0.7), Bin(20, 0.7), Bin(40, 0.7) に従う。こ
れらを描くには次のようにすればよい。
 

plot(0:5,dbinom(0:5, 5, 0.7),type="h",ann=F,ylim=c(0,0.4),lwd=5)
plot(0:20,dbinom(0:20, 20, 0.7),type="h",ann=F,ylim=c(0,0.2),lwd=5)
plot(0:40,dbinom(0:40, 40, 0.7),type="h",ann=F,ylim=c(0,0.15),lwd=5)
 
0.20

0.15
0.4

0.15
0.3

0.10
0.10

Bin(5,0.7) Bin(20,0.7)
0.2

Bin(40,0.7)
0.05
0.05
0.1

0.00

0.00
0.0

0 1 2 3 4 5 0 5 10 15 20 0 10 20 30 40

図 6.1: n = 5, 20, 40 に対する Bin(n, 0.7) の形状

連続補正 確率変数 X が 2 項分布 Bin(n, p) に従うとする。整数 m1 , m2 が 0 ≤ m1 ≤ m2 ≤ n を


満たすとき,確率 P(m1 ≤ X ≤ m2 ) の近似値を中心極限定理を用いて求めることを考える。X は
ベルヌーイ分布に従う n 個の独立な確率変数の和で表されるので,n が大きいときには中心極限
26 第6章 大数の法則と中心極限定理
p
定理が適用できて (X − np)/ np(1 − p) は標準正規分布で近似できる。従って
 m − np   m − np 
2 1
P(m1 ≤ X ≤ m2 ) ≈ Φ p −Φ p
np(1 − p) np(1 − p)
のように近似することができる。しかし,m1 , m2 が整数であるから X = m1 , X = m2 で確率をもつ
ことになる。図 6.2 が示唆するように,m1 ≤ X ≤ m2 の確率を考えるより m1 −0.5 ≤ X ≤ m2 +0.5
の確率を求めた方が近似がよくなることが知られている。そこで

a b a b a−0.5 b+0.5

図 6.2: 正規近似の連続補正

 m + 0.5 − np   m − 0.5 − np 
2 1
P(m1 ≤ X ≤ m2 ) ≈ Φ p −Φ p (6.3.1)
np(1 − p) np(1 − p)

で近似する。これを連続補正とよぶ。サイコロを 120 回投げて 6 の目が 25 回以上で 30 回以下出る


正確な確率は P (25 ≤ Y120 ≤ 30) = 0.129 となるが,通常の正規近似では 0.1041,連続補正した正
規近似 (6.3.1) では 0.1306 となり,連続補正した方が近似がよいことがわかる。
 

> pbinom(30, 120, 1/6)-pbinom(24, 120, 1/6)


[1] 0.1289306
> a <- 120/6; b <- sqrt(120*5)/6
> pnorm((30-a)/b)-pnorm((25-a)/b)
[1] 0.1031827
> pnorm((30-a+0.5)/b)-pnorm((25-a-0.5)/b)
[1] 0.1301159
 

6.4 収束関連の事項

デルタ法 関数 h(·) は,その微分導関数 h′ (·) が連続で h′ (µ) ̸= 0 とする。 n(Un −µ) →d N (0, σ 2 )
ならば,次の分布収束が成り立つ。
√ 
n{h(Un ) − h(µ)} →d N 0, σ 2 {h′ (µ)}2 (6.4.1)

X1 , . . . , Xn が独立に Ber(θ) に従うとすると,中心極限定理より n(X − θ) →d N (0, θ(1 − θ))
となる。h(θ) = log{θ/(1 − θ)} = log θ − log(1 − θ) をロジットとよぶ。h(θ) の微分導関数は
1 1 1
h′ (θ) = + =
θ 1−θ θ(1 − θ)
6.4. 収束関連の事項 27

と書けるので,デルタ法を用いると,0 < θ < 1 に対して

√ n  X   θ o  1 
n log − log →d N 0,
1−X 1−θ θ(1 − θ)

となる。log(X/(1 − X)) の分布の様子は次のようにして調べることができる。


 

> n <- 30; p <- 2/3; K <- 10000;


> X <- rbinom(K, n, p)
> hist(sqrt(n)*(log(X/(n-X))-log(p/(1-p))))
 
28

第 7 章 正規分布から導かれる分布

7.1 カイ 2 乗分布,t-分布,F-分布
7.1.1 カイ 2 乗分布
カイ 2 乗分布 自然数 m に対して α = m/2, β = 2 であるガンマ分布 Ga(m/2, 2) を自由度 m の
カイ 2 乗分布とよび,χ2m で表す。その確率密度関数は (2.2.2) より次で与えられる。

1 n xo
f (x) = x m/2−1
exp − , x≥0
Γ(m/2)2m/2 2
 

> m <- 5; x <- 2


> dchisq(x, m)
[1] 0.1383692
> pchisq(x, m)
[1] 0.150855
> qchisq(0.95, m)
[1] 11.0705
> qchisq(0.95, 1)
[1] 3.841459
> qchisq(0.95, 2)
[1] 5.991465
> qchisq(0.95, 3)
[1] 7.814728
> rchisq(5, m)
[1] 10.536134 5.281048 1.838582 7.250694 5.046535
> curve(dchisq(x,m), 0,8, type="l",ann=F,lwd=2)
 
0.8
0.6

n=1
0.4

n=3
0.2

n=6
0.0

0 2 4 6 8 10

図 7.1: カイ乗分布の形状
7.1. カイ 2 乗分布,t-分布,F-分布 29

7.1.2 t-分布
t-分布 2 つの確率変数 Z と U が独立に分布し,Z ∼ N (0, 1),U ∼ χ2m に従うとする。
Z
T =p (7.1.1)
U/m

とおくとき,この確率分布を自由度 m のスチューデントの t-分布とよび,tm で表す。


 

> m <- 5; x <- 1


> dt(x,m)
[1] 0.2196798
> pt(x,m)
[1] 0.8183913
> qt(0.5, m)
[1] 0
> qt(0.95, m)
[1] 2.015048
> qt(0.975, m)
[1] 2.570582
> rt(5, m)
[1] 0.4795254 -0.5554810 -2.5294338 -0.9545661 -0.2960718
> curve(dt(x,m), -7,7, type="l",ann=F,lwd=2)
 
0.4

N(0,1)
0.3
0.2
0.1

t1
0.0

−6 −4 −2 0 2 4 6

図 7.2: t-分布と標準正規分布

7.1.3 F-分布
2 つの独立な確率変数 S と T について,S は χ2m に従い, T は χ2n に従うとする。このとき
S/m
Y =
T /n

とおくとき,Y の分布を自由度 (m, n) のスネデッカーの F-分布とよび,Fm,n で表す。


30 第7章 正規分布から導かれる分布
 

> m <- 4; n <- 10; x <- 1


> df(x, m,n)
[1] 0.4553496
> pf(x, m,n)
[1] 0.548445
> qf(0.5, m,n)
[1] 0.8988171
> qf(0.025, m,n)
[1] 0.1130725
> qf(0.975, m,n)
[1] 4.468342
> rf(5, m,n)
[1] 0.6768057 0.2630864 0.2385569 0.6146316 2.0684624
> curve(df(x,m,n), 0, 10, type="l",ann=F,lwd=2)
 
0.8
0.6
0.4
0.2
0.0

0 2 4 6 8 10

図 7.3: F-分布の形状

7.2 標本平均と不偏分散の確率分布
確率変数 X1 , . . . , Xn は独立で正規分布 N (µ, σ 2 ) に従うとする。このとき次の性質が成り立つ。
(1) X と V 2 は独立である。
(2) X ∼ N (µ, σ 2 /n)
(3) (n − 1)V 2 /σ 2 ∼ χ2n−1
Pn
従って, i=1 (Xi − X)2 /σ 2 = (n − 1)V 2 /σ 2 は自由度 n − 1 のカイ 2 乗分布 χ2n−1 に従い,T =
(X − µ)/V は tn−1 -分布に従う。
31

第 8 章 パラメータの推定

8.1 推測統計の考え方
8.2 パラメトリック・モデルの例
例 7.1 正規分布の当てはめ 男子大学生 50 人の身長のデータのヒストグラムと正規分布 N (µ, σ 2 )
への当てはめについては次のようにする。
 

> tall <- c(170,173,175,170,172,165,167,168,172,174,


+ 168,170,173,178,173,163,172,173,179,172,
+ 168,167,168,174,167,180,171,181,177,170,
+ 170,175,169,175,173,171,172,176,176,167,
+ 173,172,168,168,171,170,176,173,170,185)
> summary(tall)
Min. 1st Qu. Median Mean 3rd Qu. Max.
163.0 169.2 172.0 172.0 174.0 185.0
> var(tall)
[1] 17.95918
> sd(tall)
[1] 4.237828
> hist(tall)
> curve(dnorm(x, 172, 4.2378),labels=NULL,ylim=c(0,0.095), xlim=c(155,190),
xlab="",ylab="")
 

Histogram of x Histogram of x
20

0.08
15

0.06
Frequency

10

0.04
5

0.02
0.00
0

160 165 170 175 180 185 155 160 165 170 175 180 185 190

図 8.1: 身長データのヒストグラム (左), N (172, 17.6) の形状 (右)

例 7.2 指数分布の当てはめ 時間間隔のデータを 50 個のヒストグラムと指数分布 Ex(λ) への当


てはめについては次のようにする。
32 第8章 パラメータの推定
 

> time <- c(3.1, 11.1, 7.2, 19.5, 28.9, 80.6, 22.1, 7.1,
+ 10.8, 10.8, 16.9, 12.7, 0.3, 28.0, 0.3, 8.6, 14.1, 30.8,
+ 1.6, 1.0, 4.3, 75.1, 2.6, 1.6, 9.5, 6.0, 8.7, 39.2,
+ 19.7, 15.8, 29.6, 32.9, 26.7, 7.9, 23.5, 12.2, 18.0, 11.7,
+ 54.9, 63.2, 8.6, 12.0, 2.9, 47.1, 15.4, 15.7, 18.9, 42.3, 12.4, 15.3)
> summary(time)
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.300 8.075 13.400 19.384 25.900 80.600
> var(time)
[1] 341.8095
> sd(time)
[1] 18.48809
> hist(time)
> curve(dexp(x, 1/19.334, log = FALSE),labels=NULL, ylim=c(0,0.05), xlim=c
(0,100),xlab="",ylab="")
 

Histogram of crime Histogram of crime

0.05
35
30

0.04
25

0.03
20
15

0.02
10

0.01
5

0.00
0

0 20 40 60 80 100 0 20 40 60 80 100

1
図 8.2: 犯罪データのヒストグラム (左), Ex( 19.334 ) の形状 (右)

例 7.3 ポアソン分布の当てはめ
東京都 2022 年 6 月の 1 日当たりの交通事故による死亡数のデータ度数分布が次で与えられる。
30 日間のデータなので,n = 30 となる。

死亡数 0 1 2 3 4 5
観測度数 22 7 1 0 0 0
期待度数 22.2 6.7 1.0 0.1 0.0 0.0

標本平均と標本分散は x = 0.3, s2 = 0.28 であり,両者が近い値をとるのでポアソン分布の当ては


まりが良さそうである。X がポアソン分布 P o(λ) に従うとき E[X] = λ であるから,λ を標本平均
x = 0.3 で推定することにする。ポアソン分布 P o(0.3) の確率から期待度数を求めてみる。例えば,
X = 0 の期待度数は P o(0.3) の X = 0 での確率に n = 30 を掛けたもの P(X = 0) × n として求ま
り,計算すると 22.2 となる。以下同様にして期待度数の数値が求まる。
8.3. 推定方法 33
 

> (0*22+1*7+2*1)/30 平均%


[1] 0.3
> (0^2*22+1^2*7+2^2*1)/30-(0.3)^2 分散%
[1] 0.2766667
> dpois(0,0.3)*30 期待度数%p(0)*30
[1] 22.22455
> dpois(1,0.3)*30 期待度数%p(1)*30
[1] 6.667364
> dpois(2,0.3)*30 期待度数%p(2)*30
[1] 1.000105
> dpois(3,0.3)*30 期待度数%p(3)*30
[1] 0.1000105
 

8.3 推定方法
8.3.1 モーメント法
ガンマ分布 X がガンマ分布 Ga(α, β) に従うときには,E[X] = αβ, E[X 2 ] = α(α + 1)β 2 となる。
P
X1 , . . . , Xn が Ga(α, β) に従う独立な確率変数のとき,E[X], E[X 2 ] をそれぞれ X, n−1 ni=1 Xi2 で
置き換えると,連立方程式 (
X = αβ,
1
Pn 2 2
n i=1 Xi = α(α + 1)β

Pn
b, βb とし,S 2 = n−1
が得られる。この解を α i=1 (Xi bβb2 ,X = α
− X)2 とおくと,S 2 = α bβb と書け
るので
2
X S2
b=
α , βb =
S2 X

と表される。これらが α, β のモーメント推定量になる。
例 7.2 の時間間隔データを用いたときの,モーメント推定量の値は次のようになる。
 

> n <- 50
> xo <- mean(time)
> s2 <- var(time)*(n-1)/n
> al <- xo^2/s2
> be <- s2/xo
> al
[1] 1.1217
> be
[1] 17.28092
 
b = 1.12, βb = 17.28 となるので,指数分布 Ex(λ) を想定した場合と若干異なるが,α の推定値が
α
1 に近いことは指数分布への当てはめが良さそうであることを示唆している。

8.3.2 最尤法
MLE 尤度関数もしくは対数尤度関数を最大にする θ を最尤推定量とよび,MLE で表す。すな
34 第8章 パラメータの推定

b が最尤推定量とは次の式を満たす解のことをいう。
わち,θ

b = max L(θ)
L(θ)
θ

θ = (θ1 , . . . , θk ) であるから,最尤推定量の定義から,連立方程式


L(θ1 , . . . , θk |x) = 0, i = 1, . . . , k,
∂θi

の解が最尤推定量の候補となる。これを尤度方程式とよぶ。
例 7.2 の時間間隔データを用いたときの,MLE の値は次のようになる。
 

> gammaLLF = function(Y){n=length(Y);function(T){al=T[1]; be=T[2];


+ f=-n*log(gamma(al))-n*al*log(be)+(al-1)*sum(log(Y))-sum(Y)/be;
+ y=-f; return(y)}}
>
> gammaMLE = function(t0, Y){
+ s0=c(t0[1], t0[2]);
+ s=optim(s0,gammaLLF(Y),gr=NULL,method=c("BFGS"))
+ return( t=c( s$par[1],s$par[2] ) ) }
>
> Y <- time
> gammaMLE(c(1, 10), Y)
[1] 1.09821 17.65030
 
b = 1.098, βb = 17.65 となり,モーメント推定量より MLE の方が α の推定値が 1 に近いことがわ
α
かる。

8.4 最尤推定量の漸近正規性
2 項分布 確率変数 X1 , . . . , Xn が独立に Ber(p) に従うとすると,µ = E[X1 ] = p, σ 2 = Var(X1 ) =
p(1 − p) である。log f (X1 |p) = X1 log p + (1 − X1 ) log(1 − p) を p に関して 2 回微分すると

∂ 2 log f (X1 |p) X1 1 − X1


=− 2 −
∂p 2 p (1 − p)2

となる。フィッシャー情報量は I(p) = 1/{p(1 − p)} となる。p の MLE は X であり, n(X − p) →d
N (0, p(1 − p)) となる。
σ 2 = p(1 − p) の MLE は,σ̂ 2 = X(1 − X) となる。この漸近分布を求めるために,h(p) = p(1 − p)
とおく。h′ (p) = 1 − 2p より,p ̸= 1/2 に対して
√ 
n{X(1 − X) − p(1 − p)} →d N 0, (1 − 2p)2 p(1 − p)

となる。
この収束の様子は次のようにして調べることができる。n = 100 では少し分布が歪んでいるが,
n = 1000 にすると対称に近づく。また p = 1/2 とすると分布が収束しないことが確かめられる。
 

> n <- 100; p <- 0.7; K <- 10000


> X <- rbinom(K, p)
> hist( sqrt(n)*(X*(n-X)/n-p*(1-p)))
 
8.5. クラメール・ラオ不等式と有効性 35

8.5 クラメール・ラオ不等式と有効性
8.6 十分統計量とラオ・ブラックウェルの定理
36

第 9 章 仮説検定と信頼区間

9.1 仮説検定とは
表の出る回数を X で表すと,X は 2 項分布 Bin(10, θ) に従う。θ = 0.5 と θ = 0.7 のときの X = k
となる確率 p(k|θ) を表示すると次のようになる。

k 0 1 2 3 4 5 6 7 8 9 10
p(k|0.5) .001 .010 .044 .117 .205 .246 .205 .117 .044 .010 .001
p(k|0.7) .000 .000 .001 .009 .037 .103 .200 .267 .233 .121 .028
p(k|0.5)
p(k|0.7)
165 70.8 30.4 13.0 5.58 2.39 1.02 .439 .188 .081 .035

 

> X <- 0:10


> dbinom(X, 10, 0.5)
[1] 0.0009765625 0.0097656250 0.0439453125 0.1171875000 0.2050781250
[6] 0.2460937500 0.2050781250 0.1171875000 0.0439453125 0.0097656250
[11] 0.0009765625
> dbinom(X, 10, 0.7)
[1] 0.0000059049 0.0001377810 0.0014467005 0.0090016920 0.0367569090
[6] 0.1029193452 0.2001209490 0.2668279320 0.2334744405 0.1210608210
[11] 0.0282475249
> dbinom(X, 10, 0.5)/dbinom(X, 10, 0.7)
[1] 165.38171688 70.87787866 30.37623371 13.01838588 5.57930823
[6] 2.39113210 1.02477090 0.43918753 0.18822323 0.08066710
[11] 0.03457161
>
 
2 項分布は,θ = 0.5 のときには k = 5 を中心に分布し,θ = 0.7 のときには k = 7 を中心に分
布している。確率 p(k|0.5) は, θ = 0.5 のときに k という値が現れる尤もらしさを表しているので,
k = 6 という値が出る尤もらしさは 0.205 という意味になる。θ = 0.7 のときに k = 6 という値が
出る尤もらしさは 0.200 であるから,p(6|0.5) > p(6|0.7) となり,k = 6 という値は θ = 0.7 より
θ = 0.5 のときの方が起こり易いことがわかる。
2 つの仮説を対称に考えるのであれば,このルールが妥当である。しかし,統計的仮説検定にお
いては帰無仮説と対立仮説を非対称に扱る。その理由は,誤った仮説を選択してしまうリスクが
帰無仮説と対立仮説では非対称に扱われる点にある。上述の例で, X ≥ 6 なら仮説 θ = 0.5 を選択
し,X ≥ 7 なら仮説 θ = 0.7 を選択するルールをとる場合,θ = 0.5 が正しいのに誤って θ = 0.7 を
選択してしまう確率は
X
10
Pθ=0.5 (X ≥ 7) = p(k|0.5) = 0.172
k=7

となる。これを第 1 種の誤りの確率とよぶ。一方,θ = 0.7 が正しいのに誤って θ = 0.5 を選択し


てしまう確率は
X
6
Pθ=0.7 (X ≤ 6) = p(k|0.7) = 0.350
k=0
9.2. 統計的仮説検定の考え方 37

となる。これを第 2 種の誤りの確率とよぶ。
 

> 1- pbinom(6, 10, 0.5)


[1] 0.171875
> pbinom(6, 10, 0.7)
[1] 0.3503893
 

9.2 統計的仮説検定の考え方
9.3 尤度比検定
9.3.1 尤度比とネイマン・ピアソンの補題

9.3.2 尤度比検定と帰無分布の近似
尤度比検定の漸近分布 Θ の次元を m,Θ0 の次元を k (k < m) とし,H0 : θ ∈ Θ0 vs H1 : θ ∈ Θ1
に対する尤度比検定統計量を Λ(X) とする。このとき,帰無仮説 H0 のもとで −2 log Λ(X) の分布
は自由度 m − k のカイ 2 乗分布に収束する。

−2 log Λ(X) →d χ2m−k (9.3.1)

この結果を用いると,一般的な仮説に対する有意水準 α の尤度比検定の近似的な棄却域は次の
ようになる。

R = {x ∈ X | −2 log Λ(x) > χ2m−k,α } (9.3.2)

ただし,χ2m−k,α は,自由度 m−k のカイ 2 乗分布 χ2m−k に従う確率変数 U に対して P(U > χ2m−k,α ) =
α を満たす上側 100α% 点である。

χ2m−k

χ2m−k,α

図 9.1: カイ 2 乗分布の分位点 χ2m−k,α

両側検定 X1 , . . . , Xn が独立に N (µ, σ02 ) に従うとする。σ02 が既知のとき,両側検定 H0 : µ = µ0


vs H1 : µ ̸= µ0 を考える。尤度関数は
38 第 9 章 仮説検定と信頼区間

n Pn
1 i=1 (xi − x)2 n(x − µ)2 o
L(µ|x) = exp − −
(2πσ02 )n/2 2σ02 2σ02

b = X であるから,尤度比統計量は
と表され,µ の MLE は µ
L(µ0 |X) n n o
Λ(X) = = exp − 2 (X − µ0 )2
µ|X)
L(b 2σ0

となり,Λ(X) < C のとき H0 を棄却するのが尤度比検定となる。


n(X − µ0 )2
−2 log Λ(X) =
σ02

であり,これは H0 のもとで χ21 に従うことがわかる。従って,検定統計量は W = n|X − µ0 |/σ0
となり,有意水準が α の H0 の棄却域は,R = {x ∈ Rn |n(x − µ0 )2 /σ02 > χ21,α } と書ける。これを
次のように表すことができる。
n σ0 σ0 o
R = x ∈ Rn x < µ0 − √ zα/2 , x > µ0 + √ zα/2
n n

ただし zα/2 は, N (0, 1) に従う確率変数 Z に対して P(Z > zα/2 ) = α/2 を満たす分位点である。棄
却域が両側にできることがわかる。
 

> qnorm(0.95)
[1] 1.644854
> qnorm(0.975)
[1] 1.959964
> qnorm(0.99)
[1] 2.326348
> qnorm(0.995)
[1] 2.575829
> qchisq(0.95, 1)
[1] 3.841459
> qchisq(0.95, 2)
[1] 5.991465
> qchisq(0.95, 3)
[1] 7.814728
> qchisq(0.95, 4)
[1] 9.487729
> qchisq(0.95, 5)
[1] 11.0705
> qchisq(0.95, 10)
[1] 18.30704
 
t 検定 上で扱われた両側検定の問題について分散 σ が未知の場合を考える。µ, σ の MLE は µ 2 2
b=
−1
Pn
X, σ̂ = S であり,帰無仮説 H0 : µ = µ0 の制約のもとで σ の MLE は σ̂0 = n i=1 (Xi − µ0 )
2 2 2 2 2

となるので,尤度比統計量は
P
L(µ0 , σ̂02 |X)  σ̂ 2 n/2 exp{− ni=1 (Xi − µ0 )2 /(2σ̂02 )}
Λ(X) = = P
µ, σ̂ 2 |X)
L(b σ̂02 exp{− ni=1 (Xi − X)2 /(2σ̂ 2 )}
 −n/2
= 1 + n(X − µ0 )2 /(nσ̂ 2 )

となり,Λ(X) < C のとき H0 を棄却するのが尤度比検定となる。有意水準が α の近似的な棄却域


は,R = {x ∈ Rn | n(x − µ0 )2 /V 2 > χ21,α } で与えられる。
9.3. 尤度比検定 39

N(0, 1)

α 2 α 2

− zα 2 0 zα 2

図 9.2: 正規分布の両側の分位点 −zα/2 と zα/2


しかし,t 分布を用いると近似ではなく正確な棄却域を求めることができる。T = n(X −µ0 )/V
とおくと H0 のもとで T は自由度 n − 1 の t 分布に従うので,次のような棄却域を用いることがで
きる。 n o
V V
R = x ∈ Rn x < µ0 − √ tn−1,α/2 , x > µ0 + √ tn−1,α/2
n n
このとき,尤度比検定は正確に PH0 (X ∈ R) = α を満たすことがわかる。
 

> qt(0.95, 10)


[1] 1.812461
> qt(0.975, 10)
[1] 2.228139
> qt(0.99, 10)
[1] 2.763769
 
T ∼ F1,n−1 に従うという正確な検定を用いた場合と,尤度比検定の近似分布 T ∼
2 2
χ21 を用いた
場合の違いはどの程度だろうか。
 

> qchisq(0.95, 1)
[1] 3.841459
> qf(0.95, 1, 10)
[1] 4.964603
> qf(0.95, 1, 20)
[1] 4.351244
> qf(0.95, 1, 50)
[1] 4.03431
> qf(0.95, 1, 100)
[1] 3.936143
> qchisq(0.99, 1)
[1] 6.634897
> qf(0.99, 1, 20)
[1] 8.095958
 
カイ2乗分布を用いた近似値を用いると棄却されやすくなり,有意水準は α より大きくなる傾向
にある。
40 第 9 章 仮説検定と信頼区間

9.4 2 標本の正規母集団に関する検定
9.4.1 平均の同等性検定

9.4.2 分散の同等性検定
分散の不偏推定量を V12 = (m − 1)−1 mS12 , V22 = (n − 1)−1 nS22 とおき,

V12
F =
V22

とおくと,H0 : σ12 = σ22 のもとで F は自由度 (m − 1, n − 1) の F -分布 Fm−1,n−1 に従うことがわか


る。また尤度比 Λ(X, Y ) は F の関数として表され,F が小さいときと大きいときに Λ(X, Y ) は
小さい値をとる。このことから,F < c1 もしくは F > c2 のとき帰無仮説を棄却するように c1 , c2
を求めてもよいことがわかる。Fm−1,n−1,α を Fm−1,n−1 分布の上側 100α% 点とすると,次の棄却域
は有意水準 α の F 検定になる。

R = {(x, y) | F < Fm−1,n−1,1−α/2 もしくは F > Fm−1,n−1,α/2 }

上述のように,この検定は尤度比検定ではないことと,有意水準を両側に α/2 ずつ割り当ててい


ることに注意する。
 

> m <- 10; n <- 15


> qf(0.025, m-1, n-1)
[1] 0.2632998
> qf(0.975, m-1, n-1)
[1] 3.2093
 

9.4.3 対のあるデータの同等性検定

9.5 ワルド型検定
9.5.1 最尤推定量に基づいた検定

9.5.2 標本平均に基づいた検定

9.6 信頼区間
9.7 相関係数の検定とフィッシャーの z 変換
2 次元確率変数 (X1 , Y1 ), . . . , (Xn , Yn ) が互いに独立に同一分布に従うとする。

SXY
RXY =
SX S Y

を標本相関係数とよぶ。
2018 年都道府県別の出生率と死亡率のデータ(人口 1, 000 についての率)を扱う。このデータ
の標本相関係数の値は −0.603 となり出生率と死亡率の間には負の相関があることがわかる。
9.7. 相関係数の検定とフィッシャーの z 変換 41
 

> birth <- c(6.2,6.2,6.2,7.1,5.2,6.4,6.8,6.8,7.0,6.8,7.1,7.1,


+ 8.0,7.4,6.5,6.6,7.4,7.6,6.9,7.0,7.0,7.0,8.4,7.2,8.2,7.1,
+ 7.6,7.4,6.7,6.5,7.5,7.3,7.7,7.7,6.6,6.8,7.2,
+ 7.0,6.5,8.3,8.0,7.6,8.2,7.2,7.9,8.1,11.0)
> death <- c(12.2,14.3,14.1,10.7,15.8,14.1,13.4,11.6,11.4,
+ 12.1,9.4,9.7,8.9,9.2,13.5,12.6,11.3,12.1,12.3,12.5,11.8,
+ 11.7,9.4,11.9,9.5,10.5,10.4,10.7,11.0,14.1,13.1,14.5,11.9,
+ 11.3,13.9,13.7,12.8,13.6,14.6,10.6,12.4,13.3,12.3,12.8,13.0,13.8,8.5)
> R<- cor(birth, death)
> R
[1] -0.6025302
> plot(birth, death,xlab="BIRTH␣RATES",ylab="DEATH␣RATES",xlim=c(5,12),ylim=c
(8,16))
 16
14

DEATH RATES

12
10
8

5 6 7 8 9 10 11 12

BIRTH RATES

図 9.3: 出生率と死亡率のプロット

フィッシャーの z 変換 1 + R 
1 XY
log Z=
2 1 − RXY
を用いると,H0 : ρ = 0 の両側検定の棄却域は

n − 3|Z| > zα/2
√ √
で与えられるので, n − 3|Z| > zα/2 となる。上の例では,n = 47, z = −0.697 より, n − 3|z| =
4.623 となり,z0.025 = 1.96 より「無相関である」という帰無仮説は棄却される。
 

> Z <- (1/2)*log( (1+R)/(1-R))


> n <- length(birth)
> sqrt(n-3)*abs(Z)
[1] 4.624105
 
−1

ξ=2 log((1 + ρ)/(1 − ρ)) の信頼区間は Z ± zα/2 / n − 3 で与えられる。これを
eξ − e−ξ
ρ = ρ(ξ) =
eξ + e−ξ

のようにして ρ に戻すと ρ の信頼区間が得られる。具体的には, ρL = ρ(Z − zα/2 / n − 3), ρR =

ρ(Z + zα/2 / n − 3) とおくとき,[ρL , ρR ] が信頼区間になる。上の例では ρ の信頼係数 95% の信頼
区間は [−0.758, −0.381] となる。
42 第 9 章 仮説検定と信頼区間
 

> Z <- -0.697


> xiL <- Z - qnorm(0.975)/sqrt(n-3)
> xiU <- Z + qnorm(0.975)/sqrt(n-3)
> rhoL <- (exp(xiL)-exp(-xiL))/(exp(xiL)+exp(-xiL))
> rhoU <- (exp(xiU)-exp(-xiU))/(exp(xiU)+exp(-xiU))
> rhoL
[1] -0.758416
> rhoU
[1] -0.3812525
 
43

第 10 章 適合度検定と応用例

10.1 多項分布による適合度検定
10.1.1 カイ 2 乗適合度検定
サイコロはイカサマか サイコロを 30 回投げて歪みがあるか否かを検証する実験を行ったとこ
ろ,出た目の回数が次の表のようになったとする。

サイコロの目 1 2 3 4 5 6
観測度数 5 3 8 2 4 8
期待度数 5 5 5 5 5 5
差の2乗 0 4 9 9 1 9

ここで期待度数はサイコロが正確であると仮定したときに出る理論的な数である。この実験結果
からサイコロは各目が 1/6 の等確率で出る正確なサイコロと考えてよいだろうか。
一般に,m 個のカテゴリー C1 , . . . , Cm について,個々のデータは pi の確率で Ci のカテゴリー
に入ると仮定すると,p1 + · · · + pm = 1 である。n 個のデータについてカテゴリー Ci に入る個数
を xi 個とすると,x1 + · · · + xm = n を満たすことになる。理論上想定される確率が π1 , . . . , πm で
あり,観測データに基づいた確率分布が理論上想定される確率分布に等しいかを検定する問題は

H0 : p1 = π1 , . . . , pm = πm vs. H1 : ある i に対して pi ̸= πi

と表される。H0 のもとで計算される期待度数は nπ1 , . . . , nπm となる。

カテゴリー C1 C2 ··· Cm カテゴリー C1 C2 ··· Cm


真の確率 p1 p2 ··· pm 観測度数 x1 x2 ··· xm
理論確率 π1 π2 ··· πm 期待度数 nπ1 nπ2 ··· nπm

この仮説を検定するためのカイ2乗適合度検定のための統計量は
X
m
(xi − nπi )2 X
m
(Oi − Ei )2
Q(x) = = (10.1.1)
i=1
nπi i=1
Ei

である。ただし Oi = xi は観測度数,Ei = nπi は期待度数を表している。これをカイ 2 乗適合度検


定とよび,n が大きいとき H0 のもとで Q(X) ≈ χ2m−1 で近似できることが知られている。そこで,
棄却域を Q(X) > χ2m−1,α とする検定を考えればよいことになる。ただし,χ2m−1,α は自由度 m − 1
のカイ 2 乗分布 χ2m−1 の上側 100α% 点である。
先ほどの例では,Q(x) = 6.4 となり,χ25,0.05 = 11.07 より,有意水準 5% で有意でないことがわ
かる。
44 第 10 章 適合度検定と応用例
 

> X <- c(5,3,8,2,4,8)


> pi <- c(1/6,1/6,1/6,1/6,1/6,1/6)
> n <- sum(X); K <- 6
> Q <- sum((X-n*pi)*(X-n*pi)/(n*pi))
> Q
[1] 6.4
> qchisq(0.95, K-1)
[1] 11.0705
 

血液型による地域性の調査 ある町の n = 800 人の血液型を調査したところ下の表のようになっ


た。この町の血液型の分布が日本の標準的なものと一致するかを検定したい。この場合,Q(x) を

表 10.1: 観測度数と理論確率 表 10.2: 観測度数と期待度数

血液型 A B O AB 血液型 A B O AB
観測度数 317 168 230 85 観測度数 317 168 230 85
理論確率 0.37 0.22 0.32 0.09 期待度数 296 176 256 72

計算すると Q(x) = 6.82 となる。χ23,0.05 = 7.815 より,有意水準 5% で有意でないことがわかる。


 

> X <- c(317, 168, 230, 85)


> pi <- c(0.37, 0.22, 0.32, 0.09)
> n <- sum(X); K <- 4
> Q <- sum((X-n*pi)*(X-n*pi)/(n*pi))
> Q
[1] 6.841348
> qchisq(0.95, K-1)
[1] 7.814728
 

同一著者の作品についての検証 3 つの小説における単語の使用頻度が表 10.3 で与えられる


とき,これらが同じ著者の作品かを検定したい場合を考えてみよう。表 10.4 の一般的な設定で,
(x1j , . . . , xIj ) は M ultm (n, π1j , . . . , πIj ), j = 1, . . . , J, のような多項分布に従う。すべての作品が同
一著者であることを検定したいので,帰無仮説は

H0 : πi1 = πi2 = · · · = πiJ = πi , i = 1, . . . , I

と書ける。H0 のもとで πi は π̂i = xi· /x·· で推定できるので,(Ai , Bj ) のセルに対する期待度数は

Eij = x·j π̂i = xi· x·j /x··

となる。Oij = xij なので,カイ 2 乗適合度検定は次のようになる。


XI X J
(Oij − Eij )2 X X (xij − xi· x·j /x·· )2
I J
Q= =
i=1 j=1
Eij i=1 j=1
xi· x·j /x··

制約がないときのパラメータ数は J(I − 1),H0 のもとでのパラメータ数は I − 1 であるから,自


由度は J(I − 1) − (I − 1) = (I − 1)(J − 1) となる。従って,Q > χ2(I−1)(J−1),α のとき H0 を棄却す
るのが有意水準 α の検定になる。
例については Q = 3.23 + 15.25 + 2.04 + 9.81 = 30.33, χ26,0.01 = 16.81 より,1% で有意となり,
同一著者であることが棄却される。
10.1. 多項分布による適合度検定 45

表 10.3: 単語の使用頻度 表 10.4: I × J の一般的な設定

単語 小説 1 小説 2 小説 3 合計 B1 B2 ··· BJ 合計
a 182 103 80 365 A1 x11 x12 ··· x1J x1·
an 24 13 27 64 A2 x21 x22 ··· x2J x2·
this 42 12 16 70 .. .. .. .. ..
. . . ··· . .
that 109 34 24 167 AI xI1 xI2 ··· xIJ xI·
合計 357 162 147 666 合計 x·1 x·2 ··· x·J x··

 

> I <- 4; J <- 3


> nov1 <- c(182, 24, 42, 109)
> nov2 <- c(103, 13, 12, 34)
> nov3 <- c(80, 27, 16, 24)
> X <- matrix(cbind(nov1, nov2, nov3), I, J) #行列を指定
> xc <- matrix(colSums(X), J,1) #列和を縦ベクトルに指定
> xr <- matrix(rowSums(X), I,1) #行和を縦ベクトルに指定
> n <- sum(X)
> Y <- (xr %*% t(xc))/n #期待度数の行列
> Q <- sum( (X-Y)*(X-Y)/Y )
> Q
[1] 30.32952
> df <- (I-1)*(J-1)
> qchisq(0.99, df)
[1] 16.81189
 

10.1.2 クロス表データの独立性検定
2 つの事柄の関係性の有無を調べるのにクロス表 (分割表) を用いる。例えば,ある化粧品と皮
膚疾患との関係を調べるため,その皮膚疾患の患者 90 人と健常者 100 人について,その化粧品の
使用と皮膚疾患について調査したところ,表 10.5 のデータが得られた。化粧品と皮膚疾患に因果
関係があるのかが問われているとする。表 10.6 は因果関係がないと仮定したときの期待度数を与
えている。

表 10.5: 観測値 表 10.6: 独立な場合の期待度数


観測値 皮膚疾患 健康 計 期待度数 皮膚疾患 健康 計
化粧品使用 80 60 140 化粧品使用 66.3 73.7 140
化粧品非使用 10 40 50 化粧品非使用 23.7 26.3 50
計 90 100 190 計 90 100 190

一般に,A の事象 A1 , A2 と B の事象 B1 , B2 についてクロス表を考える。n 個のデータのうち Ai


かつ Bj である観測度数を xij とし,真の確率を pij とする。これをクロス表で表すと以下のよう
になる。
B1 B2 計 B1 B2 計
A1 x11 x12 x1· A1 p11 p12 p1·
A2 x21 x22 x2· A2 p21 p22 p2·
計 x·1 x·2 n 計 p·1 p·2 1
46 第 10 章 適合度検定と応用例

カイ 2 乗適合度検定を用いて因果関係の有無を検定する方法を考えよう。因果関係が無いとい
うことは A と B が確率的に独立であることに対応するので,帰無仮説
H0 : 「すべての (i, j) に対して pij = pi· × p·j 」
を対立仮説 H1 : 「ある (i, j) に対して pij ̸= pi· × p·j 」 に対して検定することになる。H0 のもと
では E[Xij ] = npi· p·j となる。ここで, pi· は xi· /n で, p·j は x·j /n で推定できるので,H0 のもとで
は npi· p·j を xi· x·j /n で推定することになる。

B1 B2 計
A1 x1· x·1 /n x1· x·2 /n x1·
A2 x2· x·1 /n x2· x·2 /n x2·
計 x·1 x·2 n

そこで,独立性を検定するためには,

X2 X 2
(xij − xi· x·j /n)2
Q(x) =
i=1 j=1
xi· x·j /n

を考えればよい。これをクロス表の独立性に関するカイ 2 乗適合度検定とよぶ。H0 のもとでは n


が大きいとき Q(X) ≈ χ21 で近似できることが知られているので,棄却域は Q(X) > χ21,α となる。
上の例の場合, Q = 20.43 となり,χ21,0.01 = 6.635, χ21,0.05 = 3.841 より,有意水準 5% でも 1% で
も有意となる。
 

> I <- 2; J <- 2


> X <- matrix( c(80, 60, 10, 40), 2, 2, byrow = T) #行列を指定して転置
> xc <- matrix(colSums(X), I,1) #列和を縦ベクトルに指定
> xr <- matrix(rowSums(X), J,1) #行和を縦ベクトルに指定
> n <- sum(X)
> Y <- (xr %*% t(xc))/n #期待度数の行列
> Q <- sum( (X-Y)*(X-Y)/Y ) #カイ2乗統計量の計算
> Q
[1] 20.3873
> df <- (I-1)*(J-1)
> qchisq(0.95, df)
[1] 3.841459
 

サリドマイド訴訟 ある薬と病気との関係を調べるため,その病気の患者 90 人と健康な人 100


人について,その薬の摂取の経験を調査したところ,表 10.7 のデータが得られた。また,独立性
が成り立つときの期待度数は表 10.8 のようになる。

表 10.7: 薬害の観測度数 表 10.8: 独立なときの期待度数


カテゴリー 患者 健常者 計 カテゴリー 患者 健常者 計
薬の摂取 85 60 145 薬の摂取 68.7 76.3 145
薬の非摂取 5 40 45 薬の非摂取 21.3 23.7 45
計 90 100 190 計 90 100 190

この場合,Q(x) = 31.032, χ21,0.01 = 6.635 より有意水準 1% で有意となる。


10.1. 多項分布による適合度検定 47
 

> I <- 2; J <- 2


> X <- matrix( c(85, 60, 5, 40), 2, 2, byrow = T)
> xc <- matrix(colSums(X), I,1)
> xr <- matrix(rowSums(X), J,1)
> Y <- (xr %*% t(xc))/n
> Q <- sum( (X-Y)*(X-Y)/Y )
> Q
[1] 31.09238
> df <- (I-1)*(J-1)
> qchisq(0.99, df)
[1] 6.634897
 

フィッシャーの正確検定によるジェンダー。バイアスの検証 ある銀行で 50 名の行員 (男性 25


名,女性 25 名) の昇進案が検討され,表 10.9 のような結果になった。昇進についてジェンダー・
バイアスがあるかを検定したい。男女の違いと昇進の関係の有無を検定するのでカイ 2 乗適合度

表 10.9: 昇進とジェンダー 表 10.10: 一般的な設定


男性 女性 B1 B2 合計
昇進 21 15 36 A1 X11 X12 x1·
保留 4 10 14 A2 X21 X22 x2·
合計 25 25 50 合計 x·1 x·2 x··

検定を用いて調べてみる。Q の値を計算すると,Q = 3.57,χ21,0.05 = 3.84 となり,有意水準 5% で


有意でない。しかし,χ21,0.06 = 3.54 であるから,有意水準 6% では有意となり,微妙な状況である
ことがわかる。
 

> I <- 2; J <- 2


> X <- matrix( c(21, 15, 4, 10), 2, 2, byrow = T)
> xc <- matrix(colSums(X), I,1)
> xr <- matrix(rowSums(X), J,1)
> n <- sum(X)
> Y <- (xr %*% t(xc))/n
> Q <- sum( (X-Y)*(X-Y)/Y )
> Q
[1] 3.571429
> df <- (I-1)*(J-1)
> qchisq(0.95, df)
[1] 3.841459
> qchisq(0.94, df)
[1] 3.537385
 
そこで,フィッシャーの正確検定を取り上げてみる。男女で差別が無いということは,表 10.9
の数値は無作為化 (randomization) のもとで得られた数値を意味する。表 10.10 において,周辺の
値 x1· , x2· x·1 が固定されていて,Xij を確率変数とみるとき,X11 の値が決まれば他の変数の値
も自動的に決まることに注意する。X11 の値がランダムに分布するとき,X11 = x11 となる確率は
(2.1.4) の超幾何分布
 x  x 
1· 2·
x x·1 − x
p(x) = P(X11 = x) =  x  , max(x·1 − x2· , 0) ≤ x ≤ min(x1· , x·1 )
··
x·1
48 第 10 章 適合度検定と応用例

で与えられる。表 10.9 の数値について p(x) の値 (%) を求めると

x 12 13 14 15 16 17 18 19 20 21 22 23 24
p(x) 0.0 0.2 1.1 4.4 11.6 20.4 24.6 20.4 11.6 4.4 1.1 0.2 0.0

となり,P(X11 ≥ 21) = 0.057 となる。有意水準 5% の片側検定を考えると,x11 の数値が x ≥ 22


の範囲に入るときには,検定が有意となり無作為化が棄却される。この例では x11 = 21 であるか
ら,有意水準 5% の片側棄却域に入らないので,ジェンダー・バイアスがないことは棄却できない。
 

> N <- 50; M <- 36; K <- 25


> Z <- 11:25
> round(dhyper(Z,M,N-M,K),3)*100 #超幾何分布の確率 (%)
[1] 0.0 0.0 0.2 1.1 4.4 11.6 20.4 24.6 20.4 11.6 4.4 1.1 0.2 0.0
[15] 0.0
> round(1-phyper(20, M,N-M,K),3)
[1] 0.057
 
R に入っているフィッシャーの正確検定を実行すると次のようになる。両側検定を考えているの
で,P 値は 2 倍 (0.05682853 × 2 = 0.1137) で表現されている。
 

> fisher.test(matrix(c(21,4,15,10),nrow=2))
Fisher’s␣Exact␣Test␣for␣Count␣Data
data:␣matrix(c(21,␣4,␣15,␣10),␣nrow␣=␣2)
p-value␣=␣0.1137
alternative␣hypothesis:␣true␣odds␣ratio␣is␣not␣equal␣to␣1
95␣percent␣confidence␣interval:
␣0.7923923␣17.8567144
sample␣estimates:
odds␣ratio
␣3.4113
 

10.1.3 尤度比検定とカイ 2 乗適合度検定

10.2 分布系の検定
10.2.1 Q-Q プロット
例 7.1 でとりあげた身長のデータについては,x = 172, s2 = 4.22 であることからヒストグラム
に正規分布 N (172, 4.22 ) の確率密度関数を重ねてみると図 8.1(右) のようになる。この図から正規
分布への当てはまりの様子を見ることができるが,ここで紹介する Q-Q プロットを用いると当て
はまりの程度がもう少し見やすくなる。図 10.1 は例 7.1 でとりあげた身長のデータに N (172, 4.22 )
を当てはめたときの Q-Q プロットである。直線の近くにプロットされているほど正規分布への当
てはまりがよいことを示しているが,右上の点を除いて直線に沿っていることがわかる。右上の
点が直線から離れていく傾向にあり,正規分布の当てはめの妥当性が懸念される。そこで仮説検
定に基づいた判断が必要になる。
 

> qqnorm(tall) #データの tall"Q-Qプロットを表示"


 
10.2. 分布系の検定 49

Normal Q−Q Plot

185
180
Sample Quantiles

175
170
165
−2 −1 0 1 2

Theoretical Quantiles

図 10.1: Q-Q プロット (データの分布と N (172, 4.22 ) の比較)

10.2.2 正規性の検定
例 7.1 で取り上げた身長データが正規分布 N (µ, σ 2 ) に当てはまっているかを調べるために正規
分布の検定を考えてみる。正規性の検定を含めて分布の形状を検定するのに用いられるのがカイ
2 乗適合度検定である。階級 I, II, III, IV, V を ∼ 165 ∼ 170 ∼ 175 ∼ 180 ∼ とし,それぞれの階
級に入る度数を数えたものが下の表の観測度数である。このデータの平均と標準偏差は x = 172,
s = 4.2 であるから,正規分布 N (172, 4.22 ) についてそれぞれの範囲の確率を求め,それに 50 を
掛けたものを期待度数として下欄に与える。

階級 I II III IV V
観測度数 2 18 21 7 2
期待度数 2.46 13.46 22.10 10.50 1.48
 

> n <- 50; mu <- 172; sd <- 4.2378


> n*pnorm(165, mu, sd)
[1] 2.464381
> n*(pnorm(170, mu, sd)-pnorm(165, mu, sd))
[1] 13.45981
> n*(pnorm(175, mu, sd)-pnorm(170, mu, sd))
[1] 22.10085
> n*(pnorm(180, mu, sd)-pnorm(175, mu, sd))
[1] 10.49854
> n*(1 - pnorm(180, mu, sd))
[1] 1.476414
 
カイ 2 乗検定統計量の値を計算すると, Q(x) = 3.02 となる。帰無仮説 H0 は「データが正規分
布 N (µ, σ 2 ) に従うこと」であり,2 つの未知パラメータを含んでいる。従って,帰無仮説のもと
でのカイ 2 乗適合度検定の自由度は 5 − 1 − 2 = 2 となる。自由度 2 のカイ 2 乗分布の上側 5% 点
は χ22,0.05 = 5.99 であり,3.02 < 5.99 となることから正規分布であることは棄却できないことがわ
かる。
50 第 10 章 適合度検定と応用例
 

> X <- c(2,18,21,7,2)


> Y <- c(2.46, 13.46, 22.10, 10.50, 1.48)
> n <- sum(X); K <- 5
> Q <- sum((X-Y)*(X-Y)/Y)
> Q
[1] 3.021459
> qchisq(0.95, 2)
[1] 5.991465
 
分布の歪度, 尖度は
E[(X − µ)3 ] E[(X − µ)4 ]
β1 = , β 2 =
σ3 σ4
と表され,β1 は分布の歪み,β2 は分布の尖りを表す。それぞれ
Pn Pn
1
i=1 (X i − X) 3 1
i=1 (Xi − X)
4
b1 = n , b 2 = n
S3 S4
で推定できることがわかる。例 7.1 の身長データについては,b1 = 0.644, b2 = 3.73 となり,右に
少し歪んでいるが尖度は正規分布に近いことがわかる。
 

> mu <- mean(tall); n <- length(tall); X <- matrix(tall, n,1)


> Y <- X- mu*matrix(rep(1,n),n,1)
> sd <- sqrt(var(tall)*(n-1)/n)
> b1 <- sum(Y*Y*Y/(n*sd^3))
> b1
[1] 0.6435872
> b2 <- sum(Y*Y*Y*Y/(n*sd^4))
> b2
[1] 3.730888
 
帰無仮説の正規分布のもとでは
√ √
nb1 →d N (0, 6), n(b2 − 3) →d N (0, 24)
p p
より,b1 については n/6|b1 | > zα/2 のとき正規性が棄却され,b2 については n/24|b2 − 3| > zα/2
p p
のときに正規性が棄却される。先ほどの例では n/6|b1 | = 1.86, n/24|b2 − 3| = 1.06 となり,
α = 0.05 に対して z0.025 = 1.96 よりいずれも正規分布を棄却することができない。
 

> sqrt(n/6)*abs(b1)
[1] 1.857876
> sqrt(n/24)*abs(b2-3)
[1] 1.054947
 

10.2.3 指数分布の検定
1
例 7.2 で取り上げた時間間隔のデータに指数分布 Ex( 19.334 ) を当てはめたものが図 8.2(右) であっ
た。これを Q-Q プロットしてみると,図 10.2 のようになり,右上の点を除いて指数分布がよく当
てはまっていることがわかる。
指数分布の妥当性を検定するためにカイ 2 乗適合度検定を調べてみる。階級 I, II, III, IV, V を
∼ 20 ∼ 40 ∼ 60 ∼ 80 ∼ とし,それぞれの階級に入る度数が下の表で与えられている。指数分布
10.2. 分布系の検定 51

60
40
20
0
0 20 40 60 80

1
図 10.2: Q-Q プロット (データの分布と Ex( 19.334 ) の比較)

1
Ex( 19.334 ) についてそれぞれの範囲の確率を求めそれに 50 を掛けたものを期待度数として下欄に
与える。
階級 I II III IV V
観測度数 35 9 3 2 1
期待度数 32.23 11.45 4.07 1.45 0.80
 

> la <- 1/19.334; n <- 50


> n*pexp(20,la)
[1] 32.22886
> n*(pexp(40, la)-pexp(20, la))
[1] 11.45487
> n*(pexp(60, la)-pexp(40, la))
[1] 4.071323
> n*(pexp(80, la)-pexp(60, la))
[1] 1.447041
> n*(1-pexp(80, la))
[1] 0.7979053
 
カイ 2 乗検定統計量の値を計算すると,Q(x) = 1.30 となる。帰無仮説 H0 は「データが指数
分布 Ex(λ) に従うこと」になるので未知パラメータ数は 1 である。従って,帰無仮説のもとでの
カイ 2 乗適合度検定の自由度は 5 − 1 − 1 = 3 となる。自由度 3 のカイ 2 乗分布の上側 5% 点は
χ23,0.05 = 7.81 であり,1.31 < 7.81 より指数分布であることは棄却できない。
 

> X <- c(35, 9, 3, 2, 1)


> Y <- c(32.23, 11.45, 4.07, 1.45, 0.80)
> n <- sum(X); K <- 5
> Q <- sum((X-Y)*(X-Y)/Y)
> Q
[1] 1.302226
> qchisq(0.95, 3)
[1] 7.814728
 
ここで,個々の期間の分布が斉時的か否かを検定してみよう。帰無仮説 H0 は「すべての Xi が
共通の指数分布 Ex(λ) に従う」ことで,対立仮説 H1 は「Xi がそれぞれ異なる指数分布 Ex(λi ) に
52 第 10 章 適合度検定と応用例

従うこと」となる。
nS 2 /(X)2 > χ2n−1,α
のとき,H0 を棄却するのが有意水準 α の近似的な尤度比検定になる。上の例では,ns2 /(x2 ) =
50 × 334.97/(19.34)2 = 44.575, χ249,0,05 = 66.34 より,斉時な指数分布であることが受容されるこ
とになる。
 

> mu <- mean(time); n <- length(time);


> S2 <- var(time)*(n-1)/n
> n*S2/mu^2
[1] 44.57522
> qchisq(0.95, 49)
[1] 66.33865
 

10.2.4 ポアソン分布の検定
例 7.3 において,東京都における 2022 年 6 月の 1 日当たりの交通事故による死亡数の分布を扱
い,ポアソン分布 P o(0.3) の適合が良さそうだと述べた。この適合の妥当性をカイ 2 乗適合度検定
を用いて再検討してみよう。

死亡数 0 1 2 3 以上
観測度数 22 7 1 0
期待度数 22.2 6.7 1.0 0.1

上の表からカイ 2 乗検定統計量を計算すると Q = 0.12 となる。自由度は 4 − 1 − 1 = 2 となり


= 5.99 となるので,ポアソン分布は受容される。
χ22,0.05
 

> X <- c(22, 7, 1, 0)


> Y <- c(22.2, 6.7, 1.0, 0.1)
> Q <- sum((X-Y)*(X-Y)/Y)
> Q
[1] 0.1152346
> qchisq(0.95, 2)
[1] 5.991465
 
次に,2012 年から 2021 年までの 10 年間に起こった飲酒運転事故による死亡数について,全国月
別のデータを調べてみる。12ヶ月が 10 年間あるので n = 120 のデータと見なして死亡数の度数分
布表をまとめたのが教科書の表である。このデータの標本平均と標本分散は x = 16.88, s2 = 23.57
となり,平均より分散の方が大きくなるので,ポアソン分布の当てはまりは良くないのではない
かと思われる。tdd はオリジナルのデータである。
 

> tdd <- c(23, 23, 15, 11, 18, 23, 29, 18, 26, 17, 25, 30,
+ 16, 22, 32, 19, 19, 28, 22, 19, 15, 15, 23, 8,
+ 18, 18, 21, 26, 22, 21, 14, 13, 13, 21, 20, 20,
+ 13, 16, 12, 20, 19, 19, 21, 20, 18, 15, 16, 12,
+ 20, 11, 19, 18, 23, 12, 18, 24, 13, 19, 14, 22,
+ 18, 16, 14, 13, 16, 14, 20, 19, 16, 14, 25, 19,
+ 13, 12, 22, 19, 13, 11, 24, 20, 12, 14, 19, 19,
+ 14, 14, 20, 16, 13, 16, 12, 17, 13, 14, 14, 13,
+ 15, 18, 14, 14, 8, 11, 12, 8, 16, 12, 20, 11,
+ 8, 13, 14, 12, 16, 10, 15, 13, 8, 16, 10, 17)
 
10.2. 分布系の検定 53
 

> sort(tdd)
[1] 8 8 8 8 8 10 10 11 11 11 11 11 12 12 12 12 12 12 12 12 12
[22] 13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14
[43] 14 14 14 14 15 15 15 15 15 15 16 16 16 16 16 16 16 16 16 16 16
[64] 17 17 17 18 18 18 18 18 18 18 18 18 19 19 19 19 19 19 19 19 19
[85] 19 19 19 20 20 20 20 20 20 20 20 20 21 21 21 21 22 22 22 22 22
[106] 23 23 23 23 23 24 24 25 25 26 26 28 29 30 32
 
 

> n=length(tdd)
> mean(tdd) #平均
[1] 16.88333
> var(tdd) #分散
[1] 23.56611
> la <- mean(tdd)
 
そこでカイ 2 乗検定統計量を計算すると Q = 69.04 となり,自由度は 27 − 1 − 1 = 25 であるから
χ225,0.05 = 37.65 となる。従って有意水準 5% でポアソン分布は棄却される。
 

> X <- c(0,5,0,2,5,9,12,13,6,11,3,9,12,9,4,5,5,2,2,2,0,1,1,1,0,1,0)


> Y <- n*c(ppois(7,la),dpois(8:32,la), 1-ppois(32,la))
> Y
[1] 0.70080469 0.91408752 1.71476048 2.89508727 4.44352031
[6] 6.25178622 8.11930698 9.79149758 11.02087450 11.62931861
[11] 11.54950956 10.83301221 9.62617664 8.12609744 6.53312437
[16] 5.01367802 3.68033032 2.58901015 1.74844485 1.13536836
[21] 0.70995564 0.42808635 0.24922498 0.14025828 0.07638798
[26] 0.04030262 0.03998807
> Q <- sum((X-Y)*(X-Y)/Y)
> Q
[1] 69.03845
> qchisq(0.95, 25)
[1] 37.65248
 
ポアソン分布を現実のデータに当てはめる際の注意として大事なのが過分散の問題である。そ
こで, 帰無仮説 H0 「すべての Xi が共通のポアソン分布 P o(λ) に従う」ことを,対立仮説 H1 「各
Xi が異なるポアソン分布 P o(λi ) に従うこと」に対して検定する問題を考える。このとき,

nS 2 /X > χn−1,α
2
(10.2.1)

のとき,H0 を棄却するのが有意水準 α の近似的な尤度比検定になる。上の例では,ns2 /x = 120 ×


23.37/16.88 = 166.10, χ2119,0,05 = 145.46 より,ポアソン分布であることが棄却される。
 

> (n-1)*var(tdd)/mean(tdd)
[1] 166.1027
> qchisq(0.95, 119)
[1] 145.4607
 
54

第 11 章 回帰分析-単回帰モデル-

11.1 最小 2 乗法
人口とゴミの排出量の関係は,当然人口が増えればゴミの排出量が増えるので,比例関係で説
明できると思われる。教科書では,平成 29 年度 城県の 44 市町村のゴミの 1 日当たりの排出量
(トン単位) のデータを扱っている。
 

> pop <- c(272.9,182.9,143.1,144.4,76.2,52.5,77.9,44.2,64.2,53.2,


+ 29.3,44.4,77.1,107.9,85.1,229.4,159.6,67.8,28.7,66.7,43.0,55.2,
+ 106.2,55.3,41.4,42.4,43.1,95.2,35.8,49.8,51.5,51.8,33.0,17.2,20.1,
+ 38.4,17.9,15.9,47.4,9.2,22.7,8.8,25.3,16.5) #人口
> gar <- c(317.7,171.0,166.7,136.2,83.7,57.2,78.9,47.2,54.0,44.3,
+ 25.5,43.3,71.4,94.5,79.9,253.5,161.8,66.6,29.7,53.8,40.3,47.6,
+ 87.4,49.5,39.8,45.7,29.5,112.9,29.3,33.3,36.0,49.9,29.6,24.5,15.9,
+ 36.5,17.8,16.4,57.4,8.8,15.7,9.5,22.9,13.8) #ゴミ排出量
 
 

> gar.lm <- lm(gar~pop) #単回帰分析


> summary(gar.lm) #分析結果を表示する
Call:
lm(formula = gar ~ pop)
Residuals:
Min 1Q Median 3Q Max
-22.4056 -5.9940 0.9577 6.3952 25.3606 #残差の分布
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -7.64972 2.39007 -3.201 0.00261 ** #定数項の推定と検定
pop 1.09926 0.02724 40.362 < 2e-16 *** #係数の推定と検定
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1

Residual standard error: 10.23 on 42 degrees of freedom #残差の標準偏差


Multiple R-squared: 0.9749, Adjusted R-squared: 0.9743 #決定係数
F-statistic: 1629 on 1 and 42 DF, p-value: < 2.2e-16 #係数の値と値 FP
 
この分析結果から,回帰直線 y = α + βx が

y = −7.650 + 1.099x

で与えられることがわかる。また H0 : β = 0 の検定については有意水準 1% で有意であり,決定


係数が 0.975 である。σ̂ = 10.23 である。
一般に n 個の 2 次元データ (x1 , y1 ), . . . , (xn , yn ) が観測されるとき,回帰直線 y = α + βx の定数
と係数の最小2乗推定量は
b = y − βx,
α b βb = Sxy
Sxx
11.1. 最小 2 乗法 55

300
250
200
150
100
50
0
0 50 100 150 200 250

図 11.1: 人口 (x) とゴミの排出量 (y) のプロット

と書けるので,回帰直線は
b = Sxy (x − x) + y
b + βx
y=α
Sxx
となり,点 (x, y) を通り,傾きが Sxy /Sxx の直線である。
プロ野球セ・リーグの打率成績について 2 年続けて規定打席数に達している選手 18 名の 2020 年
の打率 hit20 と 2021 年の打率 hit21 である。hit21 の成績を hit20 に回帰したときの分析結果は次
のようになる。
 

> hit20 <- c(0.328,0.317,0.316,0.307,0.305,0.301,0.3,0.293,0.289,


+ 0.288,0.284,0.275,0.271,0.267,0.257,0.254,0.252,0.247)
> hit21 <- c(0.303,0.258,0.292,0.278,0.259,0.301,0.317,0.313,0.271,
+ 0.26,0.265,0.265,0.277,0.275,0.248,0.272,0.234,0.257)
 
 

> BA.lm <- lm(hit21 ~ hit20)


> summary(BA.lm)
Call:
lm(formula = hit21 ~ hit20)
Residuals:
Min 1Q Median 3Q Max
-0.032487 -0.011011 -0.000994 0.010066 0.035205
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.12841 0.05535 2.320 0.0339 *
hit20 0.51128 0.19275 2.653 0.0174 *
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 0.01943 on 16 degrees of freedom
Multiple R-squared: 0.3054, Adjusted R-squared: 0.262
F-statistic: 7.036 on 1 and 16 DF, p-value: 0.01738
 
回帰直線は y = 0.1284 + 0.5113x であり,回帰係数は 5% で有意になるが 1% では有意でない。
決定係数が 0.305 であるから,前年の成績による説明力はそれほど高くない。図 11.2 は,2020 年
56 第 11 章 回帰分析-単回帰モデル-

の打率を x, 2021 年の成績を y として,(x, y) のデータをプロットし y を x に回帰する直線を描い


たものである。2020 年の成績で 0.3 以上の打率をマークした 7 名の選手について,2020 年打率の
平均が 0.3106 であるのに対して 2021 年の打率の平均は 0.2869 となり,平均に回帰していること
がわかる。

0.34
0.32
0.30
0.28
0.26
0.24

0.24 0.26 0.28 0.30 0.32 0.34

図 11.2: プロ野球選手の打率成績の年比較

11.2 単回帰モデル
検定,信頼区間,予測 x から y への因果関係の有無に関する検定問題は

H0 : β = 0 vs. H1 : β ̸= 0

のように書ける。一般に既知の β0 に対して

H0 : β = β0 vs. H1 : β ̸= β0

なる検定問題については √
nSxx b
|β − β0 | ≥ tn−2,α/2
σ̂
のとき H0 を棄却するのが有意水準 α の検定となる。x と y の間の因果関係の有無に関する検定は

b
β0 = 0 と置くことにより, nSxx |β|/σ̂ ≥ tn−2,α/2 のとき有意水準 α で因果関係がないことが棄却
される。
ゴミ排出量の例では σ̂ 2 の値は 10.232 = 104.65 である。
 

> n <- length(pop)


> Sxx <- var(pop)*(n-1)/n
> sih <- 10.23; beh <- 1.099
> (sqrt(n*Sxx)/sih)*abs(beh)
[1] 40.33784
> qt(0.995, n-2)
[1] 2.698066
 

b の値が 40.34 となり,t42,0.005 = 2.70 より有意水準 1% で有意となって因果関係がある
nSxx |β|/σ̂
ことが示される。
11.3. 回帰診断 57

β の信頼区間は検定の受容域を反転させて求めることができるので,信頼係数 1 − α の β の信頼
区間は
σ̂
βb ± √ tn−2,α/2
nSxx
となる。ここで a ± b は [a − b, a + b] を意味するものとする。ゴミ排出量の例では,β の 99% 信頼
区間は [1.025, 1.172] となる。
 

> beh - (sih/sqrt(n*Sxx))*qt(0.995, n-2)


[1] 1.025491
> beh + (sih/sqrt(n*Sxx))*qt(0.995, n-2)
[1] 1.172509
 

n 1 (x0 − x)2 o
Var(ŷ0 − y0 ) = σ 2 1 + + ≡ σ 2 D2 (11.2.1)
n nSxx
となることから,ŷ0 − y0 ∼ N (0, σ 2 D2 ) と書けることがわかる。従って,(ŷ0 − y0 )/(σ̂D) ∼ tn−2 と
なるので,信頼係数 1 − α の y0 の予測信頼区間は

ŷ0 ± σ̂Dtn−2,α/2

で与えられる。ゴミ排出量の例では,x0 = 100 千人の市の予測値は ŷ = α b 0 = 102.25 であり,


b + βx
ゴミの排出量の 95% 予測信頼区間は [81.29, 123.21] として与えられる。
 

> alh <- -7.650; x0 <- 100


> yh0 <- alh+beh*x0
> yh0
[1] 102.25
> D <- sqrt( 1+1/n+(x0-mean(pop))^2/(n*Sxx))
> yh0 - sih*D*qt(0.975, n-2)
[1] 81.29333
> yh0 + sih*D*qt(0.975, n-2)
[1] 123.2067
 

11.3 回帰診断
11.3.1 決定係数

11.3.2 残差分析
回帰分析の妥当性を調べるのに残差 ei = yi − (b b i ), i = 1, . . . , n, が用いられる。残差を標準
α + βx
偏差で割ったもの es,i = ei /σ̂ を標準化残差とよぶ。i もしくは xi を横軸にとって (i, es,i ), (xi , es,i )
などをプロットしたものを残差プロットとよぶ。残差プロットが 0 を中心にランダムに分布し傾
向性が見られなければ回帰分析が妥当であると解釈することができる。
外れ値の有無 回帰分析は外れ値もしくは異常値の影響を敏感に受けるので注意が必要である。
例えば,ゴミ排出量のデータに外れ値 (300, 30) を加えてみるとどうなるであろうか。回帰直線は
y = 10.63 + 0.75x となり,図 11.3(左) のように外れ値の影響を大きく受けてしまう。外れ値もし
くは異常値の存在の有無を調べるには標準化残差で ±2 を超える点に注意するとよい。横軸に人口
をとって標準化残差をプロットしたものが図 11.3(中) であり,1 点だけ明らかに他から離れた点が
58 第 11 章 回帰分析-単回帰モデル-

あることがわかる。この点を除いて標準化残差をプロットしたのが図 11.3(右) であり,人口が多


くなるとバラツキが大きくなる傾向も多少みられるが回帰分析がうまくいっているように見える。
 

> pop[length(pop) + 1] <- 300 #"popの最後に追加"


> gar[length(gar) + 1] <- 30 #"garの最後に追加"
> garo.lm <- lm(gar~pop) #回帰分析
> summary(garo.lm)
Call:
lm(formula = gar ~ pop)
Residuals:
Min 1Q Median 3Q Max
-207.538 -7.278 -2.852 4.905 100.659
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 10.62780 8.61764 1.233 0.224
pop 0.75637 0.08828 8.568 7.55e-11 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 38.89 on 43 degrees of freedom
Multiple R-squared: 0.6306, Adjusted R-squared: 0.622
F-statistic: 73.41 on 1 and 43 DF, p-value: 7.546e-11
>
> siho <- 38.89
> resd.garo <- residuals(garo.lm)/siho #残差を指定
> plot(pop, resd.garo) #残差プロット
> sih <- 10.23
>resd.gar <- residuals(gar.lm)/sih
> plot(pop, resd.gar) #外れ値を除いた後の残差プロット
 
4

4
300

2
250

2
200

0
150

−2
100

−2
−4
50

−6

−4
0

0 50 100 150 200 250 300 0 50 100 150 200 250 300 0 50 100 150 200 250

図 11.3: 外れ値の影響 (左), 残差プロット (中),外れ値を除いた残差プロット (右)

分散の不均一性
図 11.4(左) は 20 社の従業員数 (x) と管理職の人数 (y) をプロットしたもので,標準化残差をプ
ロットしたものが図 11.4(中) である。
従業員数が大きくなるにつれて管理職の人数のバラツキが大きくなる傾向がある。例えば,誤
差の分散が x2i に比例して Var(ui ) = σ 2 x2i と書けているとする。単回帰モデルの両辺を xi で割ると

yi 1 ui
= α+β+
xi xi xi
11.3. 回帰診断 59

2
200

1
150

0
100

−1

−1
50

−2

−2
500 1000 1500 500 1000 1500 500 1000 1500

図 11.4: LS(点線) と WLS(実線)(左), 残差プロット (中),WLS による残差プロット (右)

となり,Var(ui /xi ) = σ 2 となることから等分散性の仮定 (A3) が満たされることになる。yi /xi を


1/xi へ回帰することを考え,これを重み付き最小2乗法 (WLS) とよぶ。
通常の単回帰による計算
 

> emp <- c(300,250,350,420,460,520,700,680,700,630,1000,1010,


+ 720,820,1020,1030,1100,1250,1500,1700)
> sup <- c(30,25,40,43,50,60,80,85,90,100,90,100,100,120,160,
+ 90,170,110,210,120)
 
 

> sup.lm <- lm(sup~ emp) #回帰分析


> summary(sup.lm)
Call:
lm(formula = sup2 ~ sup1)
Residuals:
Min 1Q Median 3Q Max
-61.246 -13.786 -7.021 17.201 48.394
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 14.30269 14.92539 0.958 0.351
emp 0.09820 0.01669 5.884 1.43e-05 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 28.62 on 18 degrees of freedom
Multiple R-squared: 0.658, Adjusted R-squared: 0.639
F-statistic: 34.63 on 1 and 18 DF, p-value: 1.429e-05
 
通常の回帰分析から導かれる回帰直線は

y = 14.303 + 0.098x
である。
残差プロットは次のようにする。
 

> sih <- 28.62


> resd.sup <- residuals(sup.lm)/sih #残差
> plot(emp, resd.sup)
 
60 第 11 章 回帰分析-単回帰モデル-

重み付き最小2乗法の計算
 

> empw <- 1/emp #両辺をで割る emp


> supw <- sup/emp
> supw.lm <- lm(supw ~ empw) #重み付き最小2乗法による回帰分析
> summary(supw.lm)
Call:
lm(formula = supw ~ empw)
Residuals:
Min 1Q Median 3Q Max
-0.050469 -0.013678 -0.001825 0.019712 0.041712
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.12343 0.01198 10.304 5.62e-09 ***
empw -4.04207 6.51143 -0.621 0.543
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 0.02619 on 18 degrees of freedom
Multiple R-squared: 0.02096, Adjusted R-squared: -0.03343
F-statistic: 0.3853 on 1 and 18 DF, p-value: 0.5425
 
重み付き最小2乗法により得られる回帰直線は
y = −4.042 + 0.123x
で与えられる。
重み付き最小2乗法による残差プロットは次のようにする。
 

> sihw <- 0.02619


> resd.supw <- residuals(supw.lm)/sihw #"WLSEによる残差"
> plot(emp, resd.supw)
 
R で重み付き最小2乗推定による分析を行うには,次の方法を用いるのも便利である。同じ推
定値が得られている。
 

> supw.lm <- lm( sup ~ emp, weights=1/(emp*emp))


> summary(supw.lm)
Call:
lm(formula = sup ~ emp, weights = 1/(emp * emp))
Weighted Residuals:
Min 1Q Median 3Q Max
-0.050469 -0.013678 -0.001825 0.019712 0.041712
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -4.04207 6.51143 -0.621 0.543
emp 0.12343 0.01198 10.304 5.62e-09 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 0.02619 on 18 degrees of freedom
Multiple R-squared: 0.855, Adjusted R-squared: 0.847
F-statistic: 106.2 on 1 and 18 DF, p-value: 5.62e-09
 
11.3. 回帰診断 61

変数変換による回帰モデルへの適合の改善 価格や資産のデータはしばしば右に歪んだ分布をす
る。次のデータは,京浜急行線沿いの 40 箇所の宅地について 2001 年の 1m2 当たりの公示価格 (y,
千円単位) と東京駅から最寄り駅までの乗車時間 (x, 分単位) のデータであり,それをプロットし
たものが図 11.5(左) で与えられる。回帰式は

y = 584.74 − 5.76x

となる。
 

> ttime <- c(16,18,19,20,22,23,27,29,30,31,32,33,35,36,38,38,39,40,


+ 42,43,47,48,49,50,53,54,56,57,59,63,65,66,69,70,71,72,73,75,86,88)
> price <- c(607,629,484,605,463,470,550,400,367,416,375,332,302,
+ 331,313,332,271,315,249,335,340,245,264,223,245,210,276,212,213,
+205,233,206,163,235,194,223,213,198,157,143)
 
 

> price.lm <- lm(price ~ ttime)


> summary(price.lm)
Call:
lm(formula = price ~ ttime)
Residuals:
Min 1Q Median 3Q Max
-93.702 -44.409 -9.311 30.952 147.990
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 584.7410 25.8133 22.65 < 2e-16 ***
ttime -5.7628 0.5073 -11.36 8.78e-14 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 62.19 on 38 degrees of freedom
Multiple R-squared: 0.7725, Adjusted R-squared: 0.7665
F-statistic: 129.1 on 1 and 38 DF, p-value: 8.781e-14
 
 

> sih <- 62.19


> resd.price <- residuals(price.lm)/sih
> plot(ttime, resd.price)
 
3

3
600

2
500

1
400

0
300

−1

−1
−2

−2
200

−3

−3

20 40 60 80 20 40 60 80 20 40 60 80

図 11.5: 土地価格と通勤時間 (左), 残差プロット (中),対数変換による残差プロット (右)


62 第 11 章 回帰分析-単回帰モデル-

price と log(price) の歪度を計算するために,パッケージ e1071 をインストールする。


 

> install.packages("e1071")パッケージ‘ ’

e1071 は無事に展開され、MD5 サムもチェックされました


> library(e1071)
> skewness(price)
[1] 0.9730125
> skewness(log(price))
[1] 0.3373343
 
price の歪度が 0.973 であるのに対して log(price) の歪度は 0.337 と軽減される。そこで,対数変換
した y の値を用いることにし
log(yi ) = α + βxi + ui
のような対数変換モデルを考える。回帰分析をした結果,決定係数は 0.87 に上昇し,標準化残差
も図 11.5(右) に描かれているように U 字型の傾向が多少緩和される。
 

> lprice <- log(price)


> lprice.lm <- lm(lprice ~ ttime)
> summary(lprice.lm)
Call:
lm(formula = lprice ~ ttime)
Residuals:
Min 1Q Median 3Q Max
-0.248244 -0.092956 -0.006743 0.105587 0.271037
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6.530612 0.058939 110.80 <2e-16 ***
ttime -0.018212 0.001158 -15.72 <2e-16 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 0.142 on 38 degrees of freedom
Multiple R-squared: 0.8668, Adjusted R-squared: 0.8633
F-statistic: 247.2 on 1 and 38 DF, p-value: < 2.2e-16
 
 

> lsih <- 0.142


> resd.lprice <- residuals(lprice.lm)/lsih
> plot(ttime, resd.lprice)
 
回帰式は
log(y) = 6.531 − 0.018x
となる。
分布の正規性のチェック
es,i の値がしばしば −2 ∼ 2 の範囲を超えているときには分布の正規性が疑われる。その場合は,
正規分布の仮定のもとで導かれる結果が使えないので,検定や信頼区間を構成する際に注意が必
要である。分布の正規性を調べるためには,10.2.1 節で解説した Q-Q プロットを残差に適用して
みるのがよい。図 11.6(左) は,図 11.5 で取り上げた土地価格データについてその残差の正規 Q-Q
プロットである。右端が正規確率からかなり離れている。これに対して図 11.6(右) は対数変換し
11.3. 回帰診断 63

たモデルにおける残差の正規 Q-Q プロットで,正規分布への当てはまりが良くなっていることが


わかる。上の土地価格データの R- code を引き継いで Q-Q プロットが次のようにして描ける。

Normal Q−Q Plot Normal Q−Q Plot

2
1

1
0

0
−1

−1
−2

−2
−2 −1 0 1 2 −2 −1 0 1 2

図 11.6: 残差の Q-Q プロット (左), 対数変換による残差の Q-Q プロット (右)


 

> qqnorm(resd.price)
> qqnorm(resd.lprice)
 

系列相関の有無 残差 ei と ei−1 の間に相関がある場合,誤差項 ui の仮定 (A2) が満たされなく


なる。これを系列相関とよぶ。次の例は,実質家計可処分所得 (x) と実質家計最終消費支出 (y) に
ついて 1970 年から 1987 年までの 18 年分の値である。
 

> con0 <- c(38937.9,43943.0,51470.8,62175.0,75564.1,86174.2,97878.8,


+ 108197.3,119508.4,131331.3,141781.5,150444.6,161366.8,169676.3,
+ 178360.4,188217.1,196329.0,205823.1)
> mon0 <- c(47749.4,52893.1,62562.0,77554.9,98194.9,112000.4,126028.1,
+ 138216.7,148664.3,159077.5,172744.0,183313.8,192235.4,201461.4,
+ 211816.1,223497.0,230916.3,238832.8)
> con <- con0/10000
> mon <- mon0/10000
 
64 第 11 章 回帰分析-単回帰モデル-
 

> con.lm <- lm(con ~ mon)


> summary(con.lm)
Call:
lm(formula = con ~ mon)
Residuals:
Min 1Q Median 3Q Max
-0.52672 -0.28117 0.08613 0.21359 0.50123
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.65234 0.21198 -3.077 0.00721 **
mon 0.86811 0.01318 65.877 < 2e-16 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 0.3421 on 16 degrees of freedom
Multiple R-squared: 0.9963, Adjusted R-squared: 0.9961
F-statistic: 4340 on 1 and 16 DF, p-value: < 2.2e-16
> sih <- 0.3421
> resd.con <- residuals(con.lm)/sih
> plot(mon, resd.con)
 
回帰直線 y = −0.652 + 0.868x を描いてみると図 11.7(左) のようになり回帰分析がうまくいってい
ると見える。実際,決定係数は 0.9963 である。しかし,標準化残差をプロットすると図 11.7(中)
のようになり,正に出やすいときには正の値,負が出やすくなると負の値が続くことがわかる。こ
れは残差が独立ではなく正の相関をもつことを示していて,いわゆる系列相関の存在が疑われる。
0.6

0.6
25

0.4

0.4
20

0.2

0.2
15

0.0

0.0
10

−0.2

−0.2
5

−0.4

−0.4
−0.6

−0.6
0

0 5 10 15 20 25 5 10 15 5 10 15

図 11.7: 経済データ (左), 残差プロット (中),系列相関を除いた残差のプロット (右)

そこで,ダービン・ワトソン統計量 DW を用いて系列相関の有無を調べてみる。単回帰モデルは

yt = α + βxt + ut , ut = ρut−1 + εt , t = 1, . . . , n

と書ける。系列相関の有無に関する仮説検定は,H0 : ρ = 0 vs. H1 : ρ > 0 となる。残差を et で表


すと,ダービン・ワトソン比 DW は
Pn
(et − et−1 )2
DW = t=2Pn 2
t=1 et
11.3. 回帰診断 65

で与えられる。このとき,2 つの有意点 dL と dU を用いて




 DW > dU のとき H0 を受容
DW < dL のとき H0 を棄却

 d ≤ DW ≤ d
L U のとき結論を保留

となる検定をダービン・ワトソン検定とよぶ。dL , dU の値は有意水準と自由度に依存し数表で与
えられる。図 11.7 の例では,DW の値が 0.330 になり,有意水準 5%, 自由度 18 − 2 = 16 では
dL = 1.10 であるから,H0 は棄却される。R でダービン・ワトソン検定を行うには,パッケージ
を利用するのが便利である。ここでは,lmtest というパッケージを利用している。
 

> install.packages("lmtest")
> library(lmtest)
> dwtest(con.lm)
Durbin-Watson test
data: con.lm
DW = 0.34246, p-value = 1.021e-07
alternative hypothesis: true autocorrelation is greater than 0
 
残差に系列相関が存在する場合,それを取り除く方法としてコクラン・オーカット法が知られ
ている。

yt − ρyt−1 =α + βxt + ut − ρ(α + βxt−1 + ut−1 )


=α(1 − ρ) + β(xt − ρxt−1 ) + εt

より,yt∗ = yt − ρyt−1 , x∗t = (xt − ρxt−1 ), α∗ = α(1 − ρ), β ∗ = β とおくと

yt∗ = α∗ + β ∗ x∗t + εt , t = 2, . . . , n

のように表される。これは単回帰モデルなので最小 2 乗法により α∗ , β ∗ の推定値を求めることが


でき,その結果 α, β の推定値が得られることになる。ただし,ρ は未知なので次のような推定量
で置き換える必要がある。 Pn
t=2 et et−1
ρ̂ = P n 2
t=1 et

このモデルの残差をプロットしてみてなお系列相関があるときには上の方法をもう一度行うとよ
いとされる。上の例では ρ̂ = 0.765 であるからコクラン・オーカット法により回帰分析を行い残
差をプロットしたものが図 11.7(右) である。系列相関の傾向が緩和されるのがわかる。DW の値
は 1.443 となり,自由度 15 の dU の値が dU = 1.36 なので H0 は受容される。R でコクラン・オー
カット法による分析を行うには,パッケージを利用するのが便利である。ここでは,orcutt とい
うパッケージを利用している。
66 第 11 章 回帰分析-単回帰モデル-
 

> install.packages("orcutt")
> library(orcutt)
> cochrane.orcutt(con.lm, convergence=8, max.iter=100)
Cochrane-orcutt estimation for first order autocorrelation
Call:
lm(formula = con ~ mon)
number of interaction: 13
rho 0.765768
Durbin-Watson statistic
(original): 0.34246 , p-value: 1.021e-07
(transformed): 1.18743 , p-value: 1.802e-02
coefficients:
(Intercept) mon
-1.449579 0.909531
 
得られる回帰直線は y = −1.45 + 0.91x になる。
個々のデータの影響力の測定 てこ比 pii は

1 (xi − x)2
pii = + Pn
k=1 (xk − x)
n 2

で与えられ,pii の値が大きいときには yi のモデルへの影響力が大きいと考えられるので,外れ値


の候補として調べる必要が生ずる。てこ比に関連してクックの距離とよばれる指標が知られてい
b(−i) , βb(−i) を,(xi , yi ) を除いた残りのデータで構成された推定値とする。yj の予測値
る。α

b(−i) + βb(−i) xj ,
ŷj(−i) = α j = 1, . . . , n

を考えると,yi が外れ値のときには (ŷj − ŷj(−i) )2 の値は大きくなる。そこで観測値 yi の影響力を


測るものとして Pn
j=1 (ŷj − ŷj(−i) )
2
Ci = , i = 1, . . . , n
2σ̂ 2
をクックの距離とよぶ。 てこ比を用いると

e2i pii
Ci =
2σ̂ 1 − pii
2

と表すことができる。
ゴミ排出データと打率データについてクックの距離を求めてみると,それぞれ図 11.8 の左図と
右図のようになる。ゴミ排出データでは一番大きな人口のデータのクックの距離が 2 を超えてお
りかなり大きな影響を与えていることがわかる。打率データでは一番大きなクックの距離でも 0.3
より小さいので大きな影響を与える観測値はないようである。
R を用いると,クックの距離を次のようにして描くことができる。
 

> plot(cooks.distance(gar.lm))
> plot(cooks.distance(BA.lm))
 
11.3. 回帰診断 67

2.5

0.5
2.0

0.4
1.5

0.3
1.0

0.2
0.5

0.1
0.0

0.0

0 10 20 30 40 5 10 15

図 11.8: ゴミ排出データのクックの距離 (左) と打率データのクックの距離 (右)


68

第 12 章 重回帰モデル

12.1 重回帰モデルの行列表現と最小 2 乗法
単回帰モデルは共変量の数が 1 つであったが,この章では共変量が複数ある場合に拡張するこ
とを考える。例えば,京浜急行線沿いの 30 箇所の宅地について 2001 年の 1m2 当たりの公示価格
(yi ) と東京駅から最寄り駅までの時間 (x1i ) 及び宅地から最寄り駅までの距離 (x2i ) のデータを扱
う。6 つの駅について駅近くの 5 つの宅地が選ばれている。土地価格の単位は千円,東京駅までの
乗車時間は分単位で,駅までの距離の単位は 10m である。土地価格が東京駅までの乗車時間でか
なり説明できることは残差分析を扱った 11.3.2 節で調べた。同じ駅近くの宅地であれば駅に近い
ほど価格が上がるのが自然なので,駅までの距離 x2i を説明変数に加えた方が土地価格を説明する
モデルとしては望ましいように思われる。
 

> price <- c(338,537,605,393,569,440,550,386,376,414,251,


+ 267,271,337,413,223,248,251,237,254,253,233,308,214,
+ 473,163,177,201,180,195)
> time <- c(20,20,20,20,20,27,27,27,27,27,39,39,39,39,39,
+ 49,49,49,49,49,65,65,65,65,65,84,84,84,84,84)
> dist <- c(46,32,80,73,29,41,9,22,53,45,156,97,46,33,13,181,
+ 88,44,88,45,123,189,61,178,52,66,133,17,45,117)
> lprice <- log(price)
 
一般に,n 個の k 次元データ (y1 , x1 ), . . . , (yn , xn ) が観測されているとする。ただし,xi は xi =
(x1i , . . . , xk−1,i )⊤ のように k − 1 個の変数の値からなる縦ベクトルとする。yi を xi で説明するモデ
ルとして
yi = β0 + β1 x1i + · · · + βk−1 xk−1,i + ui , i = 1, . . . , n (12.1.1)
を考える。これを重回帰モデル,β1 , . . . , βk を偏回帰係数とよぶ。y = (y1 , . . . , yn )⊤ , u = (u1 , . . . , un )⊤
を n 次元縦ベクトル,β = (β0 , β1 , . . . , βk−1 )⊤ を k 次元縦ベクトルとし,X を
 
1, x11 , . . . , xk−1,1
 .. 
X= . 
1, x1n , . . . , xk−1,n

のような n × k 行列とすると,重回帰モデル (12.1.1) は

y = Xβ + u (12.1.2)

という形で簡潔に表すことができる。
回帰係数ベクトル β の最小 2 乗推定量は

b = (βb0 , βb1 , . . . , βbk−1 )⊤ = (X ⊤ X)−1 X ⊤ y


β

で与えられる。
P = X(X ⊤ X)−1 X ⊤
12.1. 重回帰モデルの行列表現と最小 2 乗法 69

とおくと
X
n
⊤ b ⊤ (y − X β)
y (I − P )y = (y − X β) b = {yi − (β0 + βb1 x1i + · · · + βbk−1 xk−1,i )}2
i=1

と書ける。ここで,yi − (β0 + βb1 x1i + · · · + βbk−1 xk−1,i ) は残差なのでこれを ei とおくと,(y −


b ⊤ (y − X β)
X β) b は残差平方和として表されることがわかる。従って k 個のパラメータをもつ残差
平方和 RSSk は次のように表される。
X
n
RSSk = e2i = y ⊤ (I − P )y
i=1

R を用いて重回帰分析を行うには次のようにすればよい。
 

> price.lm0 <- lm(price ~ 1+time + dist)


> summary(price.lm0)
Call:
lm(formula = price ~ 1 + time + dist)
Residuals:
Min 1Q Median 3Q Max
-107.54 -50.77 -24.69 33.76 199.91
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 550.5653 36.6359 15.028 1.23e-14 ***
time -3.7450 0.7176 -5.219 1.69e-05 ***
dist -0.6549 0.3098 -2.114 0.0439 *
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 80.69 on 27 degrees of freedom
Multiple R-squared: 0.6257, Adjusted R-squared: 0.5979
F-statistic: 22.56 on 2 and 27 DF, p-value: 1.734e-06
 
従って,回帰直線は
y = 550.57 − 3.75x1 − 0.65x2
となり,東京駅から離れるほど価格は減少し,最寄り駅からの距離に比例して価格が減少するこ
とがわかる。しかし,11.3.2 節で調べたように,土地価格データは右に歪んでいるので対数をとっ
た方が回帰モデルの当てはまりが良くなるとも考えられる。そこで対数変換したモデル

log(yi ) = β0 + β1 log(x1i ) + β2 log(x2i ) + ui , i = 1, . . . , n (12.1.3)

を考え,このモデルに基づいて最小 2 乗推定値を求めると,回帰直線は

log(y) = 8.30 − 0.56 log(x1 ) − 0.12 log(x2 )

となる。これを指数変換して元のスケールに戻すと y = e8.30 x−0.56


1 x2−0.12 と表される。(12.1.3) を
指数変換すると次のような形に変形することができる。

yi = eβ0 (x1i )β1 (x2i )β2 eui , i = 1, . . . , n

これを乗法モデルとよぶ。eui の分布は対数正規分布とよばれる。
70 第 12 章 重回帰モデル
 

> price.lm2 <- lm(lprice ~ 1 + log(time) +log(dist))


> summary(price.lm2)
Call:
lm(formula = lprice ~ 1 + log(time) + log(dist))
Residuals:
Min 1Q Median 3Q Max
-0.33231 -0.12374 -0.04530 0.08521 0.67444
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.29662 0.29949 27.702 < 2e-16 ***
log(time) -0.55613 0.07989 -6.962 1.76e-07 ***
log(dist) -0.12413 0.05169 -2.402 0.0235 *
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 0.2006 on 27 degrees of freedom
Multiple R-squared: 0.7375, Adjusted R-squared: 0.718
F-statistic: 37.93 on 2 and 27 DF, p-value: 1.44e-08
 

12.2 最小 2 乗推定量の性質
誤差項のベクトル u は E[u] = 0, Cov(u) = σ 2 I を満たすと仮定する。β b を β の最小 2 乗推定
量,RSSk を残差平方和とする。
b については E[β]
(1) β b = β ,Cov(β) b = σ 2 (X ⊤ X)−1 となる。
(2) RSSk については E[RSSk ] = (n − k)σ 2 となる。
これより,σ 2 の不偏推定量は次で与えられることがわかる。
1
σ̂ 2 = RSSk (12.2.1)
n−k

誤差項に正規性を仮定すると,β, b σ̂ 2 について確率分布を求めることができる。u ∼ Nn (0, σ 2 I)


を仮定する。このとき次の性質が成り立つ。
b ∼ Nk (β, σ 2 (X ⊤ X)−1 )
(1) β
(2) (n − k)σ̂ 2 /σ 2 ∼ χ2n−k
b と σ̂ 2 は独立に分布する。
(3) β

12.3 回帰係数の仮説検定
r ≤ k − 1 に対して仮説検定問題

H0 : βr = · · · = βk−1 = 0 vs. H1 : ある j ∈ {r, . . . , k − 1} に対して βj ̸= 0

を考える。β, σ 2 の最尤推定量 (MLE) は β, b σ̂ 2 = RSSk /n である。一方,H0 のもとでは重回帰モ


デルは,y = X r β r + u と表すことができる。ここで
   
1, x11 , . . . , xr−1,1 β0
 ..   . 
Xr =  .  , β r =  .. 
1, x1n , . . . , xr−1,n βr−1
12.4. 変数選択の方法 71

b = (X ⊤ X r )−1 X ⊤ y, σ̂ 2 = RSSr /n となる。ただし,P r = X r (X ⊤ X r )−1 X ⊤


であり,β r , σ 2 の MLE は β r r r r r r
に対して RSSr = y ⊤ (I − P r )y である。

(RSSr − RSSk )/(k − r)


F = (12.3.1)
RSSk /(n − k)

とおくと,F は H0 のもとで自由度 (k − r, n − k) の F 分布に従うことになり,F > Fk−r,n−r,α のと


きに H0 を棄却するのが有意水準 α の正確な検定になる。
次に,回帰係数の成分に関する検定問題を考える。j = 1, . . . , k − 1 に対して βj0 を既知の定数と
し, H0 : βj = βj0 vs. H1 : βj ̸= βj0 とする。簡単のために A = (X ⊤ X)−1 とおき,その (i, j)-成分を
aij と書く。β b ∼ Nk (β, σ 2 A) であり,βbj ∼ N (βj , σ 2 aj+1,j+1 ) に従う。ここで,(n − k)σ̂ 2 /σ 2 ∼ χ2
n−k

であるから (βbj − βj )/( aj+1,j+1 σ̂) は自由度 n − k の t-分布に従うことがわかる。このことから,
有意水準 α の t-検定は

|βbj − βj0 |/( aj+1,j+1 σ̂) > tn−k,α/2
となる。また,βj の信頼区間は次で与えられる。

βbj ± aj+1,j+1 σ̂ · tn−k,α/2

土地価格データを対数変換した回帰モデル (12.1.3) について,H0 : β1 = β2 = 0 の検定を考える


と,F の値が 37.93, F2,27,0.05 = 3.35 であるから,有意水準 5% で有意になる。また H0 : β1 = 0,
H0 : β2 = 0 についてはいずれも有意水準 5% で有意になる。

12.4 変数選択の方法
重相関係数と決定係数
重回帰モデルにおいては,相関係数
Pn
i=1 (ŷi − y)(y − y)
R = Pn Pn i
{ i=1 (ŷi − y) 2
i=1 (yi − y) }
2 1/2

を重相関係数とよぶ。R2 を決定係数 (R-square) とよび,単回帰の場合と同様にして

X
n X
n
R =1−
2
(yi − ŷi ) /
2
(yi − y)2 (12.4.1)
i=1 i=1

と表すことができる。
例えば,土地価格のデータの解析について,次の 4 つのモデルを考えてみる。

M0 yi = β0 + β1 x1i + β2 x2i + ui
M1 log(yi ) = β0 + ui
(12.4.2)
M2 log(yi ) = β0 + β1 log(x1i ) + ui
M3 log(yi ) = β0 + β1 log(x1i ) + β2 log(x2i ) + ui

このとき,回帰直線は

M0 y = 550.57 − 3.75x1 − 0.65x2


M1 log(y) = 5.71
M2 log(y) = 8.05 − 0.62 log(x1 )
M3 log(y) = 8.30 − 0.56 log(x1 ) − 0.12 log(x2 )
72 第 12 章 重回帰モデル

で与えられる。それぞれの決定係数を求めると,M0 :0.626, M1 :0, M2 :0.681, M3 :0.738 とな


る。決定係数が大きくなるほど重回帰モデルのデータへの適合がよいと考えられるので,以上の
4 つのモデルの中では対数変換した重回帰モデルがデータへの当てはまりがよいと思われる。
R を用いて,各モデルのパラメータの推定・検定とともに決定係数と自由度調整済み決定係数
の値を計算できる。
 

> mean(lprice)
[1] 5.714284
> price.lm0 <- lm(price ~ 1+time + dist)
> summary(price.lm0)
Call:
lm(formula = price ~ 1 + time + dist)
Residuals:
Min 1Q Median 3Q Max
-107.54 -50.77 -24.69 33.76 199.91
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 550.5653 36.6359 15.028 1.23e-14 ***
time -3.7450 0.7176 -5.219 1.69e-05 ***
dist -0.6549 0.3098 -2.114 0.0439 *
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 80.69 on 27 degrees of freedom
Multiple R-squared: 0.6257, Adjusted R-squared: 0.5979
F-statistic: 22.56 on 2 and 27 DF, p-value: 1.734e-06
 
 

> price.lm1 <- lm(lprice ~ 1 + log(time))


> summary(price.lm1)
Call:
lm(formula = lprice ~ 1 + log(time))
Residuals:
Min 1Q Median 3Q Max
-0.35741 -0.14146 -0.05028 0.09263 0.71489
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.05176 0.30464 26.431 < 2e-16 ***
log(time) -0.62466 0.08072 -7.739 1.98e-08 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 0.217 on 28 degrees of freedom
Multiple R-squared: 0.6814, Adjusted R-squared: 0.67
F-statistic: 59.89 on 1 and 28 DF, p-value: 1.979e-08
 
12.4. 変数選択の方法 73
 

> price.lm2 <- lm(lprice ~ 1 + log(time) +log(dist))


> summary(price.lm2)
Call:
lm(formula = lprice ~ 1 + log(time) + log(dist))
Residuals:
Min 1Q Median 3Q Max
-0.33231 -0.12374 -0.04530 0.08521 0.67444
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.29662 0.29949 27.702 < 2e-16 ***
log(time) -0.55613 0.07989 -6.962 1.76e-07 ***
log(dist) -0.12413 0.05169 -2.402 0.0235 *
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 0.2006 on 27 degrees of freedom
Multiple R-squared: 0.7375, Adjusted R-squared: 0.718
F-statistic: 37.93 on 2 and 27 DF, p-value: 1.44e-08
 

自由度調整済み決定係数 自由度調整済み決定係数 (adjusted R-square) は


Pn
∗2 (yi − ŷi )2 /(n − k)
Rk = 1 − Pi=1 (12.4.3)
i=1 (yi − y) /(n − 1)
n 2

で定義される。これを書き直すと
n−1
R∗2
k = 1− (1 − R2 )
n−k−1

となる。分母の n − k は母数が多くなることに対するペナルティとして機能しており,自由度調整
済み決定係数 R∗2 k を最大にする説明変数の組を選ぶことになる。
土地価格データについて (12.4.2) の回帰モデルの自由度調整済み決定係数を求めると,M0:0.598,
M1 :0, M2 :0.670, M3 :0.718 となり,対数変換した重回帰モデル M3 が選ばれる。
情報量規準 モデルの汎化能力を担保するために予測誤差を小さくするような変数選択の方法が
考えられる。その1つが赤池情報量規準で,期待予測誤差の推定量を最小にする統計モデルを選
択する手法である。赤池情報量規準 (AIC) は

b
AICk = −2 log f (y|X β(y), σ̂ 2 (y)) + 2(k + 1) (12.4.4)

で与えられる。第 1 項はモデルの不適合の程度であり,第 2 項はモデルの複雑さに対するペナル


ティーに対応している。パラメータの個数が増えればモデルの適合度が増すので第 1 項は小さく
なるが,第 2 項が大きくなってしまうので,予測誤差を小さくするという意味では必ずしも良い
モデルとは限らないことがわかる。両者のトレード・オフな関係を,予測誤差を小さくするとい
う視点でバランスさせた規準である。σ̂ 2 (y) = RSSk /n であるから,AIC は次のように表される。

AICk = n{log(RSSk /n) + log(2π) + 1} + 2(k + 1) (12.4.5)

土地価格データについて (12.4.2) の回帰モデルの AIC の値を計算すると,M0:353.41, M1:29.72,


M2 :-2.59, M3 :-6.40 となり,対数変換した重回帰モデル M3 の AIC が一番小さくなる。
R を用いて回帰分析とモデル選択規準 AIC の値を同時に出したいときには,関数 lm の代わり
に関数 glm を用いるのも一つの方法である。
74 第 12 章 重回帰モデル
 

> priceAIC0.glm <- glm(price ~ 1 + time + dist, family=gaussian)


> summary(priceAIC0.glm)
Call:
glm(formula = price ~ 1 + time + dist, family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-107.54 -50.77 -24.69 33.76 199.91
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 550.5653 36.6359 15.028 1.23e-14 ***
time -3.7450 0.7176 -5.219 1.69e-05 ***
dist -0.6549 0.3098 -2.114 0.0439 *
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 6510.838)
Null deviance: 469613 on 29 degrees of freedom
Residual deviance: 175793 on 27 degrees of freedom
AIC: 353.41
Number of Fisher Scoring iterations: 2
 
 

> priceAIC.glm <- glm(lprice ~ 1, family=gaussian)


> summary(priceAIC.glm)
Call:
glm(formula = lprice ~ 1, family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.6205 -0.2590 -0.1196 0.2968 0.6909
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 5.71428 0.06898 82.84 <2e-16 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 0.1427612)
Null deviance: 4.1401 on 29 degrees of freedom
Residual deviance: 4.1401 on 29 degrees of freedom
AIC: 29.722
Number of Fisher Scoring iterations: 2
 
12.4. 変数選択の方法 75
 

> priceAIC1.glm <- glm(lprice ~ 1 + log(time), family=gaussian)


> summary(priceAIC1.glm)
Call:
glm(formula = lprice ~ 1 + log(time), family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.35741 -0.14146 -0.05028 0.09263 0.71489
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.05176 0.30464 26.431 < 2e-16 ***
log(time) -0.62466 0.08072 -7.739 1.98e-08 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 0.04710584)
Null deviance: 4.1401 on 29 degrees of freedom
Residual deviance: 1.3190 on 28 degrees of freedom
AIC: -2.5942
Number of Fisher Scoring iterations: 2
 
 

> priceAIC2.glm <- glm(lprice ~ 1 + log(time)+log(dist), family=gaussian)


> summary(priceAIC2.glm)
Call:
glm(formula = lprice ~ 1 + log(time) + log(dist), family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-0.33231 -0.12374 -0.04530 0.08521 0.67444
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8.29662 0.29949 27.702 < 2e-16 ***
log(time) -0.55613 0.07989 -6.962 1.76e-07 ***
log(dist) -0.12413 0.05169 -2.402 0.0235 *
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 0.04025222)
Null deviance: 4.1401 on 29 degrees of freedom
Residual deviance: 1.0868 on 27 degrees of freedom
AIC: -6.4022
Number of Fisher Scoring iterations: 2
 

クロス・バリデーション AIC は期待予測誤差の推定量で特定の分布の仮定のもとで導出されて


いる。これに対して分布を仮定せずデータから直接予測誤差を推定する方法がクロス・バリデー
ションである。この方法の基本的な考え方は,データを学習データとテストデータに分割し,学
習データでパラメータの推定を行い,それに基づいた予測量でテストデータを予測したときの誤
差を計算する方法である。クロス・バリデーション,交差検証法は
1X 2
n
CV = y i − x⊤ b
i β (−i) (12.4.6)
n i=1
76 第 12 章 重回帰モデル

で与えられる。
表??のデータについて, (12.4.2) の中で回帰モデル M2 と M3 の leave-one-out クロスバリデー
ションを計算すると,M2 :0.050, M3 :0.044 となり,重回帰モデル M3 の値の方が小さい。
R で計算するには,caret というライブラリーを用いる。
 

> library(caret)
> df <- data.frame(y=lprice, x1=log(time), x2=log(dist))
> ctrl <- trainControl(method = "LOOCV")
>
> model1 <- train(y ~ x1, data = df, method = "lm", trControl = ctrl)
>
> model1
Linear Regression
30 samples
1 predictor
No pre-processing
Resampling: Leave-One-Out Cross-Validation
Summary of sample sizes: 29, 29, 29, 29, 29, 29, ...
Resampling results:
RMSE Rsquared MAE
0.2247412 0.6348154 0.1694445
Tuning parameter ’intercept’ was held constant at a value of TRUE
>
> 0.2247412^2
[1] 0.05050861
 
 

> model2 <- train(y ~ x1 + x2, data = df, method = "lm", trControl = ctrl)
> model2
Linear Regression
30 samples
2 predictor
No pre-processing
Resampling: Leave-One-Out Cross-Validation
Summary of sample sizes: 29, 29, 29, 29, 29, 29, ...
Resampling results:
RMSE Rsquared MAE
0.2106649 0.6791215 0.1595808
Tuning parameter ’intercept’ was held constant at a value of TRUE
>
> 0.2106649^2
[1] 0.0443797
 

12.5 応用例
多項式回帰と双曲線回帰 n 個の 2 次元データ (y1 , x1 ), . . . , (yn , xn ) について, xi の多項式で説明
するモデル
Mk yi = β0 + β1 xi + β2 x2i + · · · + βk−1 xk−1
i + ui (12.5.1)
を多項式回帰とよぶ。xji = xji とおくと重回帰モデルの特別な場合として扱うことができる。多
項式の次数を決めるには変数選択規準 AIC を用いるとよい。
12.5. 応用例 77

例えば,土地価格と通勤時間のデータについて,11.3.2 節では yi を対数変換することを考えた


が,ここでは多項式回帰モデルを当てはめてみることにする。各モデルの AIC の値は表 12.1 で与
えられる。AIC の値を最小にするモデルは 3 次多項式を当てはめたモデル M4 であり,そのときの

表 12.1: 土地価格データの多項式モデルに関する AIC

モデル M1 M2 M3 M4 M5
AIC 505.1 447.9 420.2 411.5 413.4

回帰式は
y = 1066 − 35.25x + 0.508x2 − 0.0026x3
で与えられる。回帰係数の値はすべて有意水準 1% で有意になる。
 

> price
[1] 607 629 484 605 463 470 550 400 367 416 375 332 302 331 313 332 271 315
249
[20] 335 340 245 264 223 245 210 276 212 213 205 233 206 163 235 194 223 213
198
[39] 157 143
> ttime
[1] 16 18 19 20 22 23 27 29 30 31 32 33 35 36 38 38 39 40 42 43 47 48 49 50
53 54
[27] 56 57 59 63 65 66 69 70 71 72 73 75 86 88
 
 

> landAIC1 <- glm(price ~ 1 , family=gaussian)


> summary(landAIC1)
Call:
glm(formula = price ~ 1, family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-170.6 -100.6 -40.1 55.4 315.4
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 313.60 20.35 15.41 <2e-16 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 16564.86)
Null deviance: 646030 on 39 degrees of freedom
Residual deviance: 646030 on 39 degrees of freedom
AIC: 505.1
Number of Fisher Scoring iterations: 2
 
78 第 12 章 重回帰モデル
 

> landAIC2 <- glm(price ~ 1+ttime, family=gaussian)


> summary(landAIC2)
Call:
glm(formula = price ~ 1 + ttime, family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-93.702 -44.409 -9.311 30.952 147.990
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 584.7410 25.8133 22.65 < 2e-16 ***
ttime -5.7628 0.5073 -11.36 8.78e-14 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 3867.112)
Null deviance: 646030 on 39 degrees of freedom
Residual deviance: 146950 on 38 degrees of freedom
AIC: 447.87
Number of Fisher Scoring iterations: 2
 
 

> landAIC3 <- glm(price ~ 1+ttime +I(ttime^2), family=gaussian)


> summary(landAIC3)
Call:
glm(formula = price ~ 1 + ttime + I(ttime^2), family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-61.724 -25.590 -5.581 28.352 105.672
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 825.4933 41.8337 19.733 < 2e-16 ***
ttime -17.2352 1.8330 -9.403 2.39e-11 ***
I(ttime^2) 0.1155 0.0181 6.380 1.93e-07 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 1891.292)
Null deviance: 646030 on 39 degrees of freedom
Residual deviance: 69978 on 37 degrees of freedom
AIC: 420.2
Number of Fisher Scoring iterations: 2
 
12.5. 応用例 79
 

> landAIC4 <- glm(price ~ 1+ttime +I(ttime^2)+I(ttime^3), family=gaussian)


> summary(landAIC4)
Call:
glm(formula = price ~ 1 + ttime + I(ttime^2) + I(ttime^3), family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-77.571 -23.891 -4.977 14.550 116.475
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.066e+03 8.124e+01 13.117 2.79e-15 ***
ttime -3.525e+01 5.661e+00 -6.228 3.45e-07 ***
I(ttime^2) 5.079e-01 1.192e-01 4.262 0.000139 ***
I(ttime^3) -2.566e-03 7.723e-04 -3.323 0.002053 **
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 1487.539)
Null deviance: 646030 on 39 degrees of freedom
Residual deviance: 53551 on 36 degrees of freedom
AIC: 411.5
Number of Fisher Scoring iterations: 2
 
 

> landAIC5 <- glm(price ~ 1+ttime +I(ttime^2)+I(ttime^3)+I(ttime^4), family=


gaussian)
> summary(landAIC5)
Call:
glm(formula = price ~ 1 + ttime + I(ttime^2) + I(ttime^3) + I(ttime^4),
family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-76.86 -24.43 -5.19 14.35 114.51
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.018e+03 2.080e+02 4.894 2.21e-05 ***
ttime -3.032e+01 2.050e+01 -1.479 0.148
I(ttime^2) 3.380e-01 6.878e-01 0.491 0.626
I(ttime^3) -2.080e-04 9.435e-03 -0.022 0.983
I(ttime^4) -1.136e-05 4.530e-05 -0.251 0.803
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 1527.294)
Null deviance: 646030 on 39 degrees of freedom
Residual deviance: 53455 on 35 degrees of freedom
AIC: 413.42
Number of Fisher Scoring iterations: 2
 
通勤時間の逆数で説明する回帰モデル
1
yi = β0 + β1 + ui
xi
80 第 12 章 重回帰モデル

を考える。これは双曲線モデルとよばれる。得られる回帰式は y = 68.31 + 9430.54/x となり,こ


の曲線を描いたのが図 12.1(右) である。当てはまりは悪くないように見える。AIC の値も 411.5 と
なり,3 次多項式のモデルとほぼ等しい。

4
600

600
500

500
2
400

400
0
300

300
−2
200

200
100

100
−4
20 40 60 80 20 30 40 50 60 70 80 90 20 40 60 80

図 12.1: 3 次多項式の当てはめ (左), 残差プロット (中),双曲線関数の当てはめ (右)


 

> rtime <- 1/ttime


> landAICr <- glm(price ~ 1+rtime, family=gaussian)
> summary(landAICr)
Call:
glm(formula = price ~ 1 + rtime, family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-80.653 -24.681 -4.339 16.540 132.412
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 68.31 14.10 4.844 2.16e-05 ***
rtime 9430.54 486.13 19.399 < 2e-16 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 1559.227)
Null deviance: 646030 on 39 degrees of freedom
Residual deviance: 59251 on 38 degrees of freedom
AIC: 411.54
Number of Fisher Scoring iterations: 2
 

ダミー変数 日本の大手ビール企業の 2000 年 1 月から 2001 年 12 月までの 2 年間のビールの販


売量 (yi , t 単位) と東京の月平均気温 (xi ) がデータが次で与えられる。
 

> bier <- c(172,144,190,202,197,276,292,220,214,172,202,240,


+ 152,117,176,182,181,251,249,214,167,159,185,228)
> temp <- c(7.6,6,9.4,14.5,19.8,22.5,27.7,28.3,25.6,18.8,13.3,8.8,
+ 4.9,6.6,9.8,15.7,19.5,23.1,28.5,26.4,23.2,18.7,13.1,8.4)
 
暑くなるとビールの消費量が増えるのが自然なので

M1 yi = β0 + β1 xi + ui , i = 1, . . . , 24
12.5. 応用例 81

表 12.2: ビールの販売量 (yi ) と平均気温 (xi )


月 1 2 3 4 5 6 7 8 9 10 11 12
販売量 172 144 190 202 197 276 292 220 214 172 202 240
気温 7.6 6.0 9.4 14.5 19.8 22.5 27.7 28.3 25.6 18.8 13.3 8.8
1 2 3 4 5 6 7 8 9 10 11 12
152 117 176 182 181 251 249 214 167 159 185 228
4.9 6.6 9.8 15.7 19.5 23.1 28.5 26.4 23.2 18.7 13.1 8.4

という単回帰モデルを考える。回帰分析の結果,回帰直線は y = 146.80 + 3.15x となり,回帰係数


は有意水準 1% で有意になる。
 

> bier.glm0 <- glm(bier ~ temp, family=gaussian)


> summary(bier.glm0)
Call:
glm(formula = bier ~ temp, family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-52.775 -17.298 -6.608 13.433 65.521
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 146.7976 17.0183 8.626 1.65e-08 ***
temp 3.1456 0.9272 3.393 0.00262 **
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 1213.828)
Null deviance: 40675 on 23 degrees of freedom
Residual deviance: 26704 on 22 degrees of freedom
AIC: 242.46
Number of Fisher Scoring iterations: 2
 
表を見てみると,冬にもかかわらず忘年会シーズンの 12 月は販売量が多いことがわかる。そこ
で,12 月のとき Deci = 1, それ以外の月については Deci = 0 となるようなダミー変数を加えて

M2 yi = β0 + β1 xi + β2 × Deci + ui , i = 1, . . . , 24

のような重回帰モデルを考えてみる。M2 のモデルを分析すると,回帰直線 y = 126.80 + 3.98x +


72.97 × Dec が得られる。12 月のときには 72.97(t) 増やす必要があることを示している。
82 第 12 章 重回帰モデル
 

> yend <- c(0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1)


>
> bier.glm1 <- glm(bier ~ temp + yend, family=gaussian)
> summary(bier.glm1)
Call:
glm(formula = bier ~ temp + yend, family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-52.14 -18.27 0.00 15.59 59.65
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 126.80 15.57 8.141 6.21e-08 ***
temp 3.98 0.82 4.854 8.46e-05 ***
yend 72.97 22.75 3.207 0.00424 **
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 853.6038)
Null deviance: 40675 on 23 degrees of freedom
Residual deviance: 17926 on 21 degrees of freedom
AIC: 234.89
Number of Fisher Scoring iterations: 2
 
さらに,夏は気温に比例する以上に販売量が多くなるかもしれないと考えて,お中元の季節で
ある 6 月と 7 月だけ Summeri = 1,その他の月では Summeri = 0 となるダミー変数を組み入れた
モデル
M3 yi = β0 + β1 xi + β2 × Deci + β3 × Summeri + ui , i = 1, . . . , 24
も考えられる。回帰直線は y = 143.21 + 2.38x + 70.35 × Dec + 63.31 × Summer となり,回帰係
数はすべて有意水準 1% で有意になる。
12.6. 多重共線性 83
 

> summ <- c(0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0)


>
> bier.glm2 <- glm(bier ~ temp + yend + summ, family=gaussian)
> summary(bier.glm2)
Call:
glm(formula = bier ~ temp + yend + summ, family = gaussian)
Deviance Residuals:
Min 1Q Median 3Q Max
-45.105 -13.357 4.551 12.764 38.747
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 150.1867 14.7075 10.212 2.22e-09 ***
temp 1.8058 0.9475 1.906 0.07114 .
yend 68.2834 18.8516 3.622 0.00170 **
summ 53.0455 16.1617 3.282 0.00373 **
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for gaussian family taken to be 582.5189)
Null deviance: 40675 on 23 degrees of freedom
Residual deviance: 11650 on 20 degrees of freedom
AIC: 226.55
Number of Fisher Scoring iterations: 2
 
3 つのモデルの AIC を計算すると表 12.3 のようになり,平均気温に 12 月のダミー変数と夏のダ
ミー変数を組み込んだモデルの AIC が一番小さくなる。

表 12.3: ビール販売量のダミー変数を組み込んだモデルの AIC

モデル M1 M2 M3
AIC 242.46 234.89 226.55

12.6 多重共線性
多重共線性の節は割愛された関係から,この節の内容の説明については,DataM ath hosoku.pdf
のファイルを参照して下さい。そこで取り上げた数値計算のコードが以下に与えられます。
b を求めるときに k 次正方行列 X ⊤ X が正則であることを仮定した。列ベクト
最小 2 乗推定量 β
ルを用いて X = (1, x(1) , . . . , x(k−1) ) と書くことにすると,k 個の列ベクトル {1, x(1) , . . . , x(k−1 }
が線形独立であるとき,X はフルランクであるという。X ⊤ X が正則行列であることと X がフル
ランクであることは同値である。しかし,例えば経済指数のように時間とともに同じように変動
する変数を多く用いると {1, x(1) , . . . , x(k−1 } が線形独立でなくなることが起こりうる。これを多
重共線性とよぶ。
いま X のランクを r(< k) とすると,X ⊤ X は対称行列なので,H ⊤ 1 H 1 = I r なる k × r 行列
H 1 を用いて次のように分解できる。

X ⊤ X = H 1 DH ⊤
1, D = diag (d1 , . . . , dr )
84 第 12 章 重回帰モデル

単回帰分析の例としてゴミの排出量と人口との関係を表??で紹介した。ここでは,10 の市町村
を選んで,ゴミの排出量 (y, 10t 単位), 15 歳から 64 歳までの人口 (x1 , 万人単位), 人口密度 (x2 , 100
人単位), 総所得 (x3 ,10 億円単位の値を対数変換したもの) を表??にまとめてある。
 

> gab <- c(156,130,85,66,51,47,42,40,33,25)


> pop2 <- c(92.2,80.9,55.3,39.6,29.4,22.4,23.8,19.9,24.6,14.0)
> pod <- c(1547,1119,483,300,418,252,126,183,217,139)
> inc <- c(52,47,31,20,17,12,13,11,15,7)
>
> y <- gab/10
> x1 <- pop2/10
> x2 <- pod/100
> x3 <- log(inc)
>
> mulco.lm <- lm(y ~ x1+x2+x3)
> summary(mulco.lm)
Call:
lm(formula = y ~ x1 + x2 + x3)
Residuals:
Min 1Q Median 3Q Max
-0.8677 -0.1562 0.0334 0.2826 0.6504
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.8970 2.4045 0.789 0.4602
x1 1.4384 0.4939 2.913 0.0269 *
x2 0.1776 0.1563 1.136 0.2992
x3 -0.6105 1.2757 -0.479 0.6492
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
Residual standard error: 0.5379 on 6 degrees of freedom
Multiple R-squared: 0.9899, Adjusted R-squared: 0.9848
F-statistic: 195.5 on 3 and 6 DF, p-value: 2.263e-06
 
重回帰モデル yi = β0 + β1 x1i + β2 x2i + β3 x3i + ui で分析すると,回帰直線は

y = 1.90 + 1.44x1 + 0.18x2 − 0.61x3

となり,x1 の係数のみ有意水準 5% で有意となる。しかし,個々の単回帰モデル yi = β0 + β1 xji ,


j = 1, 2, 3, においてはすべての変数が有意となるものの,重回帰モデルでは x2 , x3 の係数が有意
にならない。しかも,x3 の符号が負になり,その市町村の総所得が多いほどゴミが排出されない
という不合理な結果になる。そこで相関係数を調べてみると,3 つの変数 x1 , x2 , x3 の間の相関係
数は,r12 = 0.96, r23 = 0.88, r31 = 0.97 となり,変数同士の間に高い相関があることがわかる。
X ⊤ X の固有値を計算すると,727, 29, 2.4, 0.04 となり,0.04 は 727 に比べて極端に小さい固有値
である。固有値が 0.04 に対応する固有ベクトルが (0.87, 0.15, −0.03, −0.46)⊤ であるから,変数の
間に
0.87 + 0.15x1 − 0.03x2 − 0.46x3 = 0
という関係が存在することを示している。
12.6. 多重共線性 85
 

> cor(cbind(x1,x2,x3))
x1 x2 x3
x1 1.0000000 0.9577278 0.9660680
x2 0.9577278 1.0000000 0.8847685
x3 0.9660680 0.8847685 1.0000000
> X <- matrix(cbind(rep(1,10), x1,x2,x3),nrow=10)
> A=t(X)%*%X
> eiA <- eigen(A, sym=TRUE)
> H <- eiA$vectors
> eiA
eigen() decomposition
$values
[1] 727.2178019 29.4632239 2.4166143 0.0383314
$vectors
[,1] [,2] [,3] [,4]
[1,] -0.09490487 0.3258683 0.3476116 0.87405327
[2,] -0.55569202 0.2608022 -0.7749215 0.15061624
[3,] -0.76314833 -0.5346234 0.3619754 -0.02750005
[4,] -0.31591781 0.7348264 0.3842352 -0.46107416
%$
 

一般化逆による方法 Moore-Penrose の一般化逆を用いると

e (+) = H 1 D −1 H ⊤ X ⊤ y
β 1

という推定量が得られる。
上のゴミ排出量のデータについては,X ⊤ X の最小固有値 0.04 を 0 と見なして D = diag (727, 29, 2.4)
e (+) を求めることができる。その結果得られる回帰直線は
とすると, H 1 は 4 × 3 の行列となり β

y = 0.02 + 1.11x1 + 0.24x2 + 0.38x3

となり,(x1 , x2 , x3 ) = (5, 4, 3) のときの予測値は 7.68 になる。x3 の係数が正になり合理的な符号


を示している。
 

> Dx <- c(1/727.217, 1/29.4632, 1/2.4166,0)


> GI <- H%*%diag(Dx)%*%t(H)
> Begi <- GI%*% t(X) %*% y #回帰係数の推定値
> Begi
[,1]
[1,] 0.0166310
[2,] 1.1144069
[3,] 0.2367518
[4,] 0.3814429
> ygi <- t(Begi) %*% c(1, 5, 4, 3) 予測値%
> ygi
[,1]
[1,] 7.680002
 

正則化法 リッジ回帰推定量は λ > 0 に対して

b R = (X ⊤ X + λI)−1 X ⊤ y
β λ

で与えられる。
86 第 12 章 重回帰モデル

上のゴミ排出量のデータについては,λ = 0.1 としてリッジ回帰 β b R の値を求めると,得られる


λ
回帰直線は,y = 0.55 + 1.18x1 + 0.23x2 + 0.11x3 となり,(x1 , x2 , x3 ) = (5, 4, 3) のときの予測値は
7.73 になる。定数項と回帰係数の値は一般化逆を用いたときと少し異なっているが,これは変数
間の多重共線性によるもので,多重共線性があるときには回帰係数の推定値自体はあまり重要で
なく,予測値が精度良く得られることが大事である。その意味では,(x1 , x2 , x3 ) = (5, 4, 3) のとき
の予測値が,一般化逆では 7.68, リッジ回帰では 7.73 となり,お互いに近い値を与えているので
両方ともに悪くない手法であると思われる。
 

> la <- 0.1


> beR <- solve(A+la*diag(4))%*%t(X)%*%y #リッジ回帰推定値
> beR
[,1]
[1,] 0.5457994
[2,] 1.1844590
[3,] 0.2300733
[4,] 0.1149838
> c(1,5,4,3)%*%beR #予測値
[,1]
[1,] 7.733339
 
87

第 13 章 ロジスティック回帰とポアソン回帰

13.1 2 値データとロジスティック回帰
ロジスティック回帰 いま Y1 , . . . , Yn を独立な確率変数で Yi がベルヌーイ分布 P(Yi = 1) = pi ,
P(Yi = 0) = 1 − pi に従うとする。観測データ yi は Yi の実現値である。pi が大きければ Yi = 1 と
なる確率が大きくなるので,pi を xi の関数で表すと,xi の値に応じて pi の値に変化が生ずるかを
データから捉えることができ,xi が yi にどの程度影響するかを調べることができる。そこで,pi
は xi の関数として pi = p(xi ) で表すことにする。ここで問題になるのが,0 < p(xi ) < 1 という制
約がある。この制約を考慮して pi と α + βxi とを関係づける関数 p(xi ) として
 p(x ) 
i
log = α + βxi
1 − p(xi )

をとると
eα+βxi
p(xi ) = (13.1.1)
1 + eα+βxi

と書ける。これをロジスティック関数とよぶ。
1.0

1.0
0.8

0.8
0.6

0.6
0.4

0.4
0.2

0.2
0.0

0.0

−4 −2 0 2 4 −4 −2 0 2 4

図 13.1: ロジスティック関数,β > 0 の場合 (左), β < 0 の場合 (右)

ベルヌーイ分布に基づいた確率モデル
Y
n Y
n
P(Yi = yi ) = {p(xi )}yi {1 − p(xi )}1−yi
i=1 i=1

において p(xi ) に (13.1.1) のロジット関数を代入したものをロジット・モデルもしくはロジスティッ


ク回帰モデルとよぶ。
次の例は,農薬の濃度と虫の致死数との関係,いわゆる用量-反応関係を調べた実験のデータで
ある。x が log2 (濃度) の値,y が 20 匹の虫のうち致死したとき 1, 生存しているとき 0 としている。
このデータにロジスティック回帰モデルを当てはめて α, β の推定値を求めてみると,α b = −1.76,
b
β = 1.03 となる。
88 第 13 章 ロジスティック回帰とポアソン回帰

表 13.1: 用量-反応関係 (個別データ)

番号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
濃度 (x) 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4
致死 (y) 1 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1

e−1.76+1.03x
p(x) =
1 + e−1.76+1.03x

と書けるので,p(0) = 0.15, p(1) = 0.33, p(2) = 0.57, p(3) = 0.79, p(4) = 0.91 となる。x ≥ 2 のと
き 50% 以上の確率で致死することがわかる。仮説検定 H0 : β = 0 については,P 値が 0.026 なの
で有意水準 5% で有意となる。
 

> x <- c(0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4)


> y <- c(1,0,0,0,0,1,0,0,1,0,0,1,1,1,1,0,1,1,1,1)
> logit.glm <- glm(y ~ 1+x, binomial(logit))
> summary(logit.glm)
Call:
glm(formula = y ~ 1 + x, family = binomial(logit))
Deviance Residuals:
Min 1Q Median 3Q Max
-1.7686 -0.8864 0.4249 0.6853 1.9597
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.7617 1.0041 -1.754 0.0793 .
x 1.0303 0.4613 2.234 0.0255 *
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 27.526 on 19 degrees of freedom
Residual deviance: 20.291 on 18 degrees of freedom
AIC: 24.291
Number of Fisher Scoring iterations: 4
 
 

> alh <- -1.76; beh <- 1.03


> p = function(x){exp(alh+beh*x)/(1+exp(alh+beh*x))}
> p(0:4)
[1] 0.1467903 0.3251947 0.5744425 0.7908406 0.9137258
> -alh/beh 確率が半分になる分位点%
[1] 1.708738
 

プロビット回帰 ロジスティックモデルは p(xi ) = G(α + βxi ) として,これをベルヌーイ分布に


組み込んだモデルである。ここで,
Z x
eu ex
G(x) = u 2
du =
−∞ (1 + e ) 1 + ex
である。G(·) の代わりに標準正規分布の分布関数を用いて p(xi ) = Φ(α + βxi ) としてベルヌーイ分
13.1. 2 値データとロジスティック回帰 89

布に組み込んだモデルをプロビット・モデルとよぶ。用量-反応データにプロビット回帰モデルを
当てはめて α, β の推定値を求めてみると,α b = −1.04, βb = 0.62 となる。p(x) = Φ(−1.04 + 0.62x)
と書けるので,p(0) = 0.15, p(1) = 0.34, p(2) = 0.58, p(3) = 0.79, p(4) = 0.93 となり,ロジス
ティック回帰を用いた場合とかなり近い値を示している。また仮説検定 H0 : β = 0 については,P
値が 0.014 なので有意水準 5% で有意となる。
 

> probit.glm <- glm(y ~ 1+x, family = binomial("probit"))


> summary(probit.glm)
Call:
glm(formula = y ~ 1 + x, family = binomial("probit"))
Deviance Residuals:
Min 1Q Median 3Q Max
-1.7747 -0.9047 0.3959 0.6812 1.9540
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.0440 0.5677 -1.839 0.0659 .
x 0.6203 0.2534 2.447 0.0144 *
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 27.526 on 19 degrees of freedom
Residual deviance: 20.230 on 18 degrees of freedom
AIC: 24.23
Number of Fisher Scoring iterations: 5
 
 

> alh <- -1.04; beh <- 0.62


> p = function(x){pnorm(alh+beh*x)}
> p(0:4)
[1] 0.1491700 0.3372427 0.5792597 0.7938919 0.9250663
 

2 項-ロジスティック回帰
これまで説明してきたモデルは個々の虫の致死に関するベルヌーイ分布に基づいているが,用
量に応じた致死数が集計データとして報告される場合が一般的である。次のデータは,ニコチン
の毒性に関する用量-反応関係を調べた実験結果である。x はニコチンの濃度 (グラム/100cc 単位),
n がハエの数,y がハエの致死数である。
 

> x <- c(0.10,0.20,0.30,0.50,0.70)


> n <- c(47,55,52,46,54)
> y <- c(8,24,32,38,50)
 
b = −1.73, βb = 6.30 となり,H0 : β = 0 の検定は有意水準 1% で
最尤法により,α, β の推定値は α
有意になる。濃度 x に対応する致死確率は p(x) = e−1.73+6.30x /(1 + e−1.73+6.30x ) となり,この値が
表??の最後の行で与えられている。仮に致死確率が 50% となるような濃度 x を求めたいときには
e−1.73+6.30x
0.5 =
1 + e−1.73+6.30x

を解けばよいので,x = 0.27 となる。R を用いるときには次のようにすればよい。


90 第 13 章 ロジスティック回帰とポアソン回帰
 

> x <- c(0.10,0.15,0.20,0.30,0.50,0.70,0.95)


> n <- c(47,53,55,52,46,54,52)
> y <- c(8,14,24,32,38,50,50)
> logitbin.glm <- glm(cbind(y,n-y) ~ 1+x, family=binomial)
> summary(logitbin.glm)
Call:
glm(formula = cbind(y, n - y) ~ 1 + x, family = binomial)
Deviance Residuals:
1 2 3 4 5 6 7
-1.2945 -0.7601 0.8086 1.1253 0.3828 -0.2733 -1.2266
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.7361 0.2420 -7.173 7.35e-13 ***
x 6.2954 0.7422 8.482 < 2e-16 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 146.0218 on 6 degrees of freedom
Residual deviance: 5.8995 on 5 degrees of freedom
AIC: 36.157
Number of Fisher Scoring iterations: 4
 

複数の共変量をもつロジスティック回帰 共変量の数が複数ある場合には xi を複数の共変量の組


で置き換えればよい。例えば,フランスのある地方における食道ガンと喫煙・飲酒との関係を調
べたデータセット esoph が統計計算ソフト R のパッケージの中にある。このデータは,6 つの年齢
階級,4 つの喫煙量の階級,4 つの飲酒量の階級,食道ガンの罹患者数と非罹患者数からなる。年
齢階級 25-34 (歳), 35-44, 45-54, 55-64, 65-74, 75+ をそれぞれ x1 = 1, 2, 3, 4, 5, 6 とし,飲酒量の階
級 0-39 (g/day), 40-79, 80-119, 120+ をそれぞれ x2 = 1, 2, 3, 4,喫煙量の階級 0-9 (g/day), 10-19,
20-29, 30+ をそれぞれ x3 = 1, 2, 3, 4 としてロジスティック回帰で分析すると,定数項が −7.16,
βb1 = 0.74, βb2 = 1.10, βb3 = 0.43 となり,有意水準 1% ですべて有意となる。従って,食道ガンに
なる確率は
e−7.16+0.74x1i +1.10x2i +0.43x3i
p(xi ) = (13.1.2)
1 + e−7.16+0.74x1i +1.10x2i +0.43x3i
で推定できる。飲酒,喫煙ともに多い x2 = x3 = 4 の階級の人は,年齢階級が上がるにつれ食道ガ
ンになる確率が 0.43, 0.61, 0.76, 0.87, 0.93, 0.97 と上昇する。また 75 歳以上の高齢者については,
飲酒,喫煙ともに多い x2 = x3 = 4 の階級の人の確率が 0.97 であるのに対して,飲酒,喫煙とも
しない x2 = x3 = 1 の階級の人の確率が 0.23 となるので,約 4 倍の確率で食道ガンになるリスク
があることになる。
 

> require(stats)
> summary(esoph)
agegp alcgp tobgp ncases ncontrols
25-34:15 0-39g/day:23 0-9g/day:24 Min. : 0.000 Min. : 0.000
35-44:15 40-79 :23 10-19 :24 1st Qu.: 0.000 1st Qu.: 1.000
45-54:16 80-119 :21 20-29 :20 Median : 1.000 Median : 4.000
55-64:16 120+ :21 30+ :20 Mean : 2.273 Mean : 8.807
65-74:15 3rd Qu.: 4.000 3rd Qu.:10.000
75+ :11 Max. :17.000 Max. :60.000
 
13.2. ポアソン回帰 91
 

> model3 <- glm(cbind(ncases, ncontrols) ~ unclass(agegp) + unclass(alcgp) +


unclass(tobgp),data = esoph, family = binomial(logit))
> summary(model3)
Call:
glm(formula = cbind(ncases, ncontrols) ~ unclass(agegp) + unclass(alcgp) +
unclass(tobgp), family = binomial(logit), data = esoph)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.6478 -0.9246 -0.4338 0.6740 2.4568
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -7.16395 0.50931 -14.066 < 2e-16 ***
unclass(agegp) 0.74375 0.08179 9.094 < 2e-16 ***
unclass(alcgp) 1.10255 0.10317 10.687 < 2e-16 ***
unclass(tobgp) 0.43085 0.09394 4.587 4.51e-06 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 367.95 on 87 degrees of freedom
Residual deviance: 108.78 on 84 degrees of freedom
AIC: 231.83
Number of Fisher Scoring iterations: 4
 
 

> p = function(x1,x2,x3){1-1/(1+exp(-7.16+0.74*x1+1.10*x2+0.43*x3))}
> p(1:6,4,4)
[1] 0.4255575 0.6082590 0.7649478 0.8721384 0.9346247 0.9677045
> p(6,1,1)
[1] 0.2332589
> p(6,4,4)
[1] 0.9677045
> p(6,4,4)/p(6,1,1)
[1] 4.148628
 

13.2 ポアソン回帰
死亡数に影響を与える要因分析を考える。いま g 個の確率変数 Y1 , . . . , Yg が独立に分布し,Yi ∼
P o(ni λi ) に従うとする。また g 個の k + 1 次元データ (y1 , x1 ), . . . , (yg , xg ) が観測されているとし,
yi は Yi の実現値であるとする。このとき,λi に対して xi を

log(λi ) = α + β ⊤ xi = α + β1 x1i + · · · + βk xki

のように対応させることを考える。これをポアソン回帰モデルとよぶ。
表 13.2 は,173 匹の雌カブトガニの色と重さ,その周囲に集まる雄カブトガニの個数のデータの
一部である。雌カブトガニが産卵するときその周囲に雄カブトガニが集まる習性があり衛生雄カ
ブトガニとよばれる。雌カブトガニのどのような特徴が衛星雄カブトガニの個数に影響を与える
のかを目的に調査された。(汪金芳 (2016)「一般化線形モデル」より引用) 色については,やや明るい,
中程度,やや暗い,暗いをそれぞれ x1i = 1, 2, 3, 4 とし,重さ (kg) を x2i とおくことにする。雄の
92 第 13 章 ロジスティック回帰とポアソン回帰

表 13.2: カブトガニのデータ

雌の番号 1 2 3 4 5 6 ···
色 (x1i ) 2 3 3 4 2 1
重さ (x2i ) 3.05 2.60 2.15 1.85 3.00 2.30
雄の個数 (yi ) 8 4 0 0 1 3

個数 (yi ) を平均 λi のポアソン分布に従う確率変数の実現値とし,log(λi ) = α + β1 x1i + β2 x2i とし


てポアソン回帰を行う。この場合,ni はすべて 1 として扱う。解析結果は,α b = 0.09, βb1 = −0.17,
βb2 = 0.55 で,βb1 , βb2 は有意水準 1% で有意になるので,log(λi ) = 0.09 − 0.17x1i + 0.55x2i となり,
カブトガニの雄は雌の明るさと重さに魅せられるようである。R を用いた分析は次のようになる。
 

> crab <- read.csv("crab.csv")


> crab.plm <- glm(crab$satellites ~ crab$color + crab$weight, family =
poisson(link="log"))
> summary(crab.plm)
Call:
glm(formula = crab$satellites ~ crab$color + crab$weight, family = poisson(
link = "log"))
Deviance Residuals:
Min 1Q Median 3Q Max
-2.9784 -1.9159 -0.5468 0.9181 4.8338
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.08875 0.25437 0.349 0.72716
crab$color -0.17285 0.06154 -2.809 0.00498 **
crab$weight 0.54580 0.06747 8.090 5.97e-16 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
(Dispersion parameter for poisson family taken to be 1)
Null deviance: 632.79 on 172 degrees of freedom
Residual deviance: 552.77 on 170 degrees of freedom
AIC: 914.06
Number of Fisher Scoring iterations: 6
 
93

第 14 章 ベイズ統計と MCMC 法

14.1 事前分布と事後分布
14.2 代表例
ベルヌーイ・ベータモデル X1 , . . . , Xn が独立にそれぞれベルヌーイ分布 Ber(θ) に従い,θ の
事前分布はベータ分布 Beta(α0 , β0 ) とし,α0 , β0 の値はわかっているものとする。このとき,θ の
事後分布がベータ分布 Beta(nx + α0 , n(1 − x) + β0 ) に従う。
n = 40, nx = 10 のとき,2 つの事前分布 (a) α0 = β0 = 1, (b) α0 = 10, β0 = 2 を考えてみると,
事後分布は (a) Beta(11, 31), (b) Beta(20, 32) となり,図 14.1 のような形状になる。ベイズ推定
値はそれぞれ (a) 11/42 = 0.26, (b) 20/52 = 0.38 となり,信用係数 95% のベイズ信用区間は (a)
[0.14, 0.40], (b) [0.26, 0.52] となる。一方 MLE については,x = 0.25 であり,信頼係数 95% の信
頼区間は X ± {X(1 − X)/n}1/2 z0.025 より [0.12, 0.38] で与えられる。(b) の場合からわかるように
ベイズ手法は事前分布の設定に敏感に反応してしまう。その意味では,信頼性の高い事前情報が
得られないときには,(a) の設定のように区間 (0, 1) 上の一様分布として曖昧な事前分布に設定し
ておいた方がよい。曖昧な事前分布のもとで得られたベイズ推定値と信用区間は MLE に基づいた
推定値と信頼区間に近い値を示している。
 

> curve(dbeta(x, 11,31), 0,1)


> qbeta(0.025, 11,31)
[1] 0.142213
> qbeta(0.975, 11,31)
[1] 0.4030462
 
6

6
5

5
4

4
3

3
2

2
1

1
0

0.0 0.2 0.4 0.6 0.8 1.0 0.0 0.2 0.4 0.6 0.8 1.0

図 14.1: 事前分布 (点線) と事後分布 (実線) (左) α0 = β0 = 1, (右) α0 = 10, β0 = 2

分散既知の正規分布 X1 , . . . , Xn が独立に正規分布 N (µ, σ02 ) に従い,µ の事前分布は N (µ0 , τ02 )


94 第 14 章 ベイズ統計と MCMC 法

とし,σ02 , µ0 , τ02 の値はわかっているものとする。このとき,µ の事後分布は


 1 
π(µ|x) = N µ
b , B
n/σ02 + 1/τ02

となる。µ bB において x を確率変数で置き換えたものが µ のベイズ推定量である。


x が与えられたときの µ の条件付き分布が (n/σ02 + 1/τ02 )1/2 (µ − µ bB ) ∼ N (0, 1) に従うので,
(n/σ02 + 1/τ02 )1/2 |µ − µ
bB | ≤ zγ/2 となる確率は 1 − γ になる。従って,信用係数 1 − γ の µ のベイ
ズ信用区間は
1
bB ± p
µ zγ/2 (14.2.1)
n/σ0 + 1/τ02
2

で与えられる。
いま n = 20 に対して x = 5 というデータが観測されたとし,分散は σ02 = 4 であるとする。
µ の事前情報は曖昧なので事前分布として N (0, 100) を用いてみる。このとき,µ のベイズ推定
値は 4.99, 信用係数 95% のベイズ信用区間は [4.11, 5.87] となる。信頼係数 95% の µ の信頼区間

x ± (σ0 / n)zα/2 を計算すると [4.12, 5.88] となる。
 

> n <- 20; xo <- 5; si0 <- 2; mu0 <- 0; ta0 <- 10
> muh <- ((n/si0^2)*xo+(1/ta0^2)*mu0)/((n/si0^2)+(1/ta0^2))
> sih <- 1/sqrt(((n/si0^2)+(1/ta0^2)))
> curve(dnorm(x, muh, sih^2), muh-1, muh+1)
>
> muh
[1] 4.99002
> muh - sih*qnorm(0.975)
[1] 4.114373
> muh + sih*qnorm(0.975)
[1] 5.865667
 

分散未知の正規分布 X1 , . . . , Xn が独立に正規分布 N (µ, σ 2 ) に従い,µ と σ 2 を未知とする。こ


の場合,µ, σ 2 を確率変数とし,σ 2 を与えたときの µ の条件付き事前分布と σ −2 = 1/σ 2 の事前分
布として

µ|σ 2 ∼N (µ0 , σ 2 /λ0 ) (14.2.2)


σ −2 ∼Ga(α0 , β0 )

を考える。ここで σ 2 ではなく σ −2 がガンマ分布に従い,µ0 , λ0 , α0 , β0 の値は既知とする。µ


bB =
(nx + λ0 µ0 )/(n + λ0 ),
nλ0 2
V = (x − µ0 )2 + ns2 +
λ0 + n β0
とおくと,µ の事後分布の確率密度は
n bB )2 o−(n+2α0 +1)/2
(n + λ0 )(n + 2α0 ) (µ − µ
π(µ|x) ∝ 1 +
V n + 2α0

のような形で表されることがわかる。この密度関数は
p
(n + λ0 )(n + 2α0 )
√ (µ − µ
bB )
V

が自由度 n + α0 の t-分布に従うことを示している。α0 が自然数でなくても形式上 n + α0 を自由


度とする t-分布を考える。t-分布の分位点を用いると,µ のベイズ推定量は µ bB であり,信用係数
14.2. 代表例 95

1 − γ の µ の信用区間は √
V
b ±p
µB
tn+2α0 ,γ/2
(n + λ0 )(n + 2α0 )
で与えられる。
いま n = 20 に対して x = 5, s2 = 4 というデータが観測されたとする。µ については λ0 = 1/100
として曖昧な事前分布 N (0, 100σ 2 ) とし, α0 = 1, β0 = 100 としてみる。このとき,µ のベイズ推
定値は 5.00, 信用係数 95% のベイズ信用区間は [4.11, 5.88] となる。信頼係数 95% の µ の信頼区間
p √
x ± ( s2 n/(n − 1)/ n)tn−1,0.025 を計算すると [4.04, 5.96] となり,ベイズ信用区間より少し広く
なる。
 

> n <- 20; xo <- 5; S <- 2; mu0 <- 0; la0 <- 1/100;
> al0 <- 1; be0 <- 100
> muh <- (n*xo+la0*mu0)/(n+la0)
> V <- n*la0*(xo-mu0)^2/(la0+n)+n*S^2+2/be0
> muh
[1] 4.997501
> V
[1] 80.26988
> muh-sqrt(V/((n+la0)*(n+2*al0)))*qt(0.975, n+2*al0)
[1] 4.11193
> muh+sqrt(V/((n+la0)*(n+2*al0)))*qt(0.975, n+2*al0)
[1] 5.883073
 

ポアソン・ガンマモデル離散型確率変数 X がポアソン分布 P o(nλ) に従うとき,λ の事前分布


π(λ) としてガンマ分布 Ga(α0 , β0 ) を想定するベイズモデルを考える。n は既知の正の実数である
が,個々にポアソン分布 P o(λ) に従う確率変数の n 個の和の分布は P o(nλ) に従うので,n をデー
タ数と考えると自然かもしれない。このとき,λ の事後分布はガンマ分布に従い
 β0 
π(λ|X) = Ga X + α0 ,
1 + nβ0

となることがわかる。λ のベイズ推定量は
β0
λ̂B = E[λ|X] = (X + α0 )
1 + nβ0

となり,信用区間については簡便なものが用いられる。
例えば,n = 20, x = 20 のとき,α0 = 1, β = 100 のような曖昧な事前分布を設定すると,事
後分布は Ga(21, 0.049975) となるので,ベイズ推定値は λ̂B = 1.05, 信用係数 95% の信用区間は
q
[0.65, 1.54] となる。一方,MLE については λ̂ = 1 であり,信頼係数 95% の信頼区間 λ̂ ± λ̂/nz0.025
は [0.56, 1.44] となり,曖昧な事前分布のベイズ手法に近い値を示している。
 

> n <- 20; x <- 20; al0 <- 1; be0 <- 100
> lah <- be0*(x+al0)/(1+n*be0)
> lah
[1] 1.049475
> alh <- x+al0; beh <- be0/(1+n*be0)
> qgamma(0.025, alh, 1/beh)
[1] 0.6496417
> qgamma(0.975, alh, 1/beh)
[1] 1.543647
 
96 第 14 章 ベイズ統計と MCMC 法

14.3 ベイズ流仮説検定とベイズ・ファクター
確率変数の組 X の同時確率 (密度) 関数を fn (x|θ) で表すとき,母数空間 Ω = {θ} が 2 つの部分
集合 Ω0 , Ω1 に分割されるとする。ここで Ω0 ∩ Ω1 = ∅, Ω0 ∪ Ω1 = Ω を満たすとする。このとき,
一般に仮説検定は
H0 : θ ∈ Ω0 vs. H1 : θ ∈ Ω1
R
と表される。それぞれの仮説の事前確率は,P(Hi ) = Ωi π(θ)dθ = wi , i = 0, 1, と表され,仮説の
上の事前分布は
wi πi (θ)I(θ ∈ Ωi )
π(θ|Hi ) = = πi (θ)I(θ ∈ Ωi )
P(Hi )
と書ける。このとき仮説 Hi のもとでの X の周辺尤度は
Z Z
m(x|Hi ) = fn (x|θ)π(θ|Hi )dθ = fn (x|θ)πi (θ)dθ
Ωi Ωi

となる。ベイズの定理を用いると,X = x が与えられたときの仮説 Hi の条件付き確率は


P(Hi )m(x|Hi )
P(Hi |x) =
P(H0 )m(x|H0 ) + P(H1 )m(x|H1 )
R
wi Ωi fn (x|θ)πi (θ)dθ
= R R
w0 Ω0 fn (x|θ)π0 (θ)dθ + w1 Ω1 fn (x|θ)π1 (θ)dθ

i = 0, 1, と書ける。これを仮説 Hi の事後確率とよび,2 つの仮説の事後確率の比を事後オッズ比


とよび, R
P(H0 |x) m(x|H0 ) P(H0 ) fn (x|θ)π0 (θ)dθ w0
= = RΩ 0 (14.3.1)
P(H1 |x) m(x|H1 ) P(H1 ) f (x|θ)π1 (θ)dθ w1
Ω1 n

のように変形することができる。どちらの仮説を選択するかを決める一つの方法として,事後オッ
ズ比が 1 より大きいか小さいかで次のように判断することが考えられる。

「P(H0 |x) < P(H1 |x) ならば,H1 を選択する」

よく知られた仮説選択の方法にベイズ・ファクターがある。周辺尤度の比
R
m(x|H0 ) fn (x|θ)π0 (θ)dθ
BF01 = = RΩ 0 (14.3.2)
m(x|H1 ) f (x|θ)π1 (θ)dθ
Ω1 n

をベイズ・ファクターとよび,次のように判断する。

「BF01 < 1, すなわち m(x|H0 ) < m(x|H1 ) ならば,H1 を選択する」

仮説 Hi の事前確率を決めるのが困難な場合は w0 = w1 = 0.5 とする。このときベイズ・ファク


ターは事後オッズ比に等しくなる。例えば,帰無仮説が単純仮説であるような典型的な仮説検定
H0 : θ = θ0 vs. H1 : θ ̸= θ0 を考えてみよう。事前分布として

π(θ) = w0 δθ0 (θ) + (1 − w0 )π1 (θ)

のような形のものをとってみる。ここで δθ0 (θ) は θ = θ0 で確率 1 をとる確率分布を表し,π0 (θ) =


δθ0 (θ), P(H0 ) = w0 , P(H1 ) = 1 − w0 に対応している。(14.3.1), (14.3.2) より,事後オッズ比とベ
イズ・ファクターはそれぞれ
P(H0 |x) fn (x|θ0 ) w0 fn (x|θ0 )
=R , BF01 = R
P(H1 |x) f (x|θ)π1 (θ)dθ 1 − w0
Ω n
f (x|θ)π1 (θ)dθ
Ω n
14.3. ベイズ流仮説検定とベイズ・ファクター 97

と表される。この場合,尤度比検定は θ の MLE θ̂ を用いて fn (x|θ0 )/fn (x|θ̂) で与えられるが,ベイ


R
ズ・ファクターと尤度比検定との違いは,分母に現れる積分 Ω fn (x|θ)π1 (θ)dθ を最大尤度 fn (x|θ̂)
で置き換える点である。
分散既知の正規分布 分散既知の正規分布の例のもとで,仮説検定 H0 : µ = m0 vs. H1 : µ ̸= m0
を考える。X の周辺分布は
Z ∞ n
1 σ0 n n 2o
fn (x|µ)π(µ)dµ = p exp − (x − µ0 ) − 2 s
2
−∞ (2πσ02 )n/2 σ02 + nτ02 2(σ02 + nτ02 ) 2σ0

と表される。従って,ベイズ・ファクターは

fn (x|m0 )
BF01 = R ∞
−∞ n
f (x|µ)π(µ)dµ
p n o
σ02 + nτ02 n n
= exp (x − µ 0 ) 2
− (x − m 0 ) 2
σ0 2(σ02 + nτ02 ) 2σ02

となり,BF01 < 1 のとき H0 を棄却することになる。


信用係数 1 − γ の µ のベイズ信用区間が (14.2.1) で与えられるので
h 1 1 i
m0 ∈
/ µ bB − p z γ/2 , b
µ B
+ p z γ/2
n/σ02 + 1/τ02 n/σ02 + 1/τ02

のとき H0 を棄却することになる。
いま n = 20 に対して x = 5 というデータが観測されたとし,分散は σ02 = 4 であるとする。µ
の事前情報は曖昧なので事前分布として N (0, 100) としてみる。H0 : µ = m0 を検定するときのベ
イズ・ファクターについて,その常用対数をとったものは m0 の関数になるが,横軸を m0 の値を
とって図示したものが図 14.2 である。
4
2
0
−2
−4

3 4 5 6 7

図 14.2: log10 (BF01 ) の関数の形状

m0 が区間 [3.863, 6.137] の中にあるときには log10 (BF01 ) > 0 となり H0 が選択され,それ以外


では H1 が選択される。一方, 信用係数 95% の µ のベイズ信用区間は [4.11, 5.87] であったので,
m0 ∈ [4.11, 5.87] のときには H0 が選択され,それ以外では H1 が選択される。事前分布を仮定し
ない通常の仮説検定では,信頼係数 95% の µ の信頼区間は [4.12, 5.88] となので,m0 ∈ [4.12, 5.88]
のとき H0 が受容され,それ以外では有意水準 5% で H0 を棄却されるので H1 が選択される。例
98 第 14 章 ベイズ統計と MCMC 法

えば,m0 = 4 の場合,H0 : µ = 4 vs. H1 : µ ̸= 4 の検定では,ベイズ・ファクターは H0 を選択


し,ベイズ信用区間と信頼区間による検定は H1 を選択することになる。
 

> n <- 20; xo <- 5; si0 <- 2; ta0 <- 10


> A <- si0^2/(si0^2+n*ta0^2)
> xo - sqrt(A*(xo-mu0)^2-(si0^2/n)*log(A))
[1] 3.862801
> xo + sqrt(A*(xo-mu0)^2-(si0^2/n)*log(A))
[1] 6.137199
 

14.4 事前分布の選択
14.5 マルコフ連鎖モンテカルロ法
14.5.1 乱数生成の基本的な方法

受容・棄却法
いま確率密度関数 π(y) からの乱数を生成したいとする。π(y) からの乱数発生方法はわからない
が,別の確率密度関数 h(y) からの乱数発生法がわかっているものとする。h(y) からの乱数を用い
て π(x) からの乱数を生成する方法が受容・棄却法である。
π(y) のサポートが h(y) のサポートに含まれるとする。また M を次で定義し有限であるとする。
n π(y) o
M = maxy
h(y)

Step 1. h(y) から乱数 y ∗ を発生させる。また U ∼ U (0, 1) を発生させる。


Step 2. U ≤ π(y ∗ )/{M h(y ∗ )} ならば y ∗ を π(y) からの標本として受容して Y = y ∗ とおき,そう
でなければ棄却して Step 1 へ戻る。
このとき Y ∼ π(y) となる。
ベータ分布からの乱数 ベータ分布 Beta(a, b) から乱数を生成したい場合,π(y) は Beta(a, b) の
確率密度関数である。a, b を 1 以上の実数とするとき,h(y) として一様分布 U (0, 1) を考え h(y) = 1
ととると,y0 = (a − 1)/(a + b − 2) に対して
n y a−1 (1 − y)b−1 o y0a−1 (1 − y0 )b−1
M = max =
0≤y≤1 B(a, b) B(a, b)

となり,受容・棄却法は次のようになる。
Step 1. U ∼ U (0, 1), V ∼ U (0, 1) を独立に発生させる。
Step 2. U ≤ π(V )/M ならば V を π(y) からのサンプルとして受容して Y = V とおき,そうで
なければ棄却して Step 1 へ戻る。
a = 2, b = 4 として受容・棄却法を用いて 10000 個の乱数を発生させてヒストグラムに描いたも
のが図 14.4 である。
14.5. マルコフ連鎖モンテカルロ法 99

400
300
200
100
0
0.0 0.2 0.4 0.6 0.8

図 14.3: 受容・棄却法による Beta(2, 4) の分布


 

> x<-0.5; S<-10000 ; AR<-NULL ; set.seed(3);a=2;b=4;


> y <- (a-1)/(a+b-2)
> M <- dbeta(y,a,b)
> for(s in 1:S)
+ { x.star<-runif(1)
+ if(runif(1)<dbeta(x.star,a,b)/M) { x<-x.star }
+ AR<-c(AR,x)
+ }
> hist(AR, breaks=60, axes=F,labels=NULL,xlab="",ylab="",main="")
 

14.5.2 ギブス・サンプリング
分散既知の正規分布 標本平均の分布が X ∼ N (µ, σ02 ) に従い,µ の階層事前分布が µ|η ∼
N (µ0 , 1/η), η ∼ η a であるとする。このとき,完全条件付き分布は

µB (η), (n/σ02 + η)−1 )


π1 (µ|η, X) ∼N (b
π2 (η|µ) ∼Ga(a + 3/2, 2/(µ − µ0 )2 )

となる。ただし µ bB (η) = {(n/σ02 )X + ηµ0 }/(n/σ02 + η) である。従って,ギッブス・サンプリング


は次のようになる。
Step 1. µ(k) ∼ N (bµB (η (k−1) ), (n/σ02 + η (k−1) )−1 )
Step 2. η (k) ∼ Ga(a + 3/2, 2/(µ(k) − µ0 )2 ) とし,k を k + 1 にして Step 1 へ戻る。
PK
このとき,K −1 k=1 µ(k) →p E[µ|X] となり,階層ベイズ推定量 µ bHB の数値的近似解が求まる。
100 第 14 章 ベイズ統計と MCMC 法
 

> x <- 4; y <- 1


> a <- 2; mu0 <- 0; si0 <- 1
> xo <- 5; n <- 20
> set.seed(2)
> S <- 10000
> PHI <- matrix(nrow=S,ncol=2)
> PHI[1,] <- phi <- c(x,y)
> for(s in 2:S) {
+ phi[1]<-rnorm(1, ((n/si0^2)*xo+mu0*phi[2])/(n/si0^2+phi[2]), 1/(n/si0^2+phi
[2]) )
+ phi[2]<- rgamma(1, a+3/2, (phi[1]-mu0)^2/2)
+ PHI[s,]<-phi }
>
> hist(PHI[,1], breaks=50, xlim=c(4.5,5.5), axes=F,labels=NULL,xlab="",ylab="
",main="")
>
> hist(PHI[,2], breaks=50, xlim=c(0,1.5), axes=F,labels=NULL,xlab="",ylab="",
main="")
 

14.5.3 データ増幅法
t-分布からの乱数 2 つの確率変数 X, Y について

X|Y ∼ N (0, m/Y ), Y ∼ χ2m

に従うとき,X の周辺分布は自由度 m の t-分布に従う。X = x を与えたときの Y の条件付き分


布は
m + 1 2 
Y |X = x ∼ Ga , 2
2 x /m + 1

となるので,次のギッブス・サンプリングにより十分大きな k に対して x(k) は tm -分布からの乱数


とみなすことができる。
Step 1. x(k) ∼ N (0, m/y (k−1) )
Step 2. y (k) ∼ Ga((m + 1)/2, 2/{(x(k) )2 /m + 1}) とし,k を k + 1 にして Step 1 へ戻る。自由度
22 の t 分布の乱数をこのギッブス・サンプリングを用いて発生させてヒストグラムを描いたもの
が図 14.4 である。100 個の乱数によるものが左の図,10000 の乱数によるものが右の図である。
800
15

600
10

400
200
5
0

−4 −2 0 2 4 −4 −2 0 2 4

図 14.4: ギッブス・サンプリングによる t 分布 (左)100 回 (右)10000 回


14.5. マルコフ連鎖モンテカルロ法 101
 

> x<- 0
> y<- 12
> m <- 22
> set.seed(2)
> S<- 10000
> PHI<-matrix(nrow=S,ncol=2)
> PHI[1,]<-phi<-c(x,y)
> for(s in 2:S) {
+ phi[1]<-rnorm(1, 0, m/phi[2] )
+ phi[2]<- rgamma(1, (m+1)/2, ((phi[1])^2/m+1)/2)
+ PHI[s,]<-phi }
>
> hist(PHI[,1], breaks=50, axes=F,labels=NULL,xlab="",ylab="",main="")
 

14.5.4 メトロポリス・ヘイスティング・サンプリング
初期値 x(0) のもと更新されて x(k−1) が得られたとする。
Step 1. q(y|x(k−1) ) から y (k) を発生させる。
Step 2. U ∼ U (0, 1) を発生させ,
(
y (k) , U ≤ α(x(k−1) , y (k) ) の場合
x(k) =
x(k−1) , U > α(x(k−1) , y (k) ) の場合

とする。ただし α(x, y) は採択確率で次で与えられる。


n q(x|y)π(y) o
α(x, y) = min 1,
q(y|x)π(x)
このとき乱数の系列 {x(k) , k = 1, 2, . . .} が構成でき,大きな k に対して x(k) は π(x) からの乱数と
みなすことができる。
提案分布として代表的なものは,酔歩連鎖と独立連鎖で,それぞれ q(y|x) = f (y − x), q(y|x) =
f (y) なる形で表現できる。酔歩連鎖の場合,g(y|x) = q(x|y) より
n π(y) o
α(x, y) = min 1,
π(x)
となる。酔歩連鎖の代表例は q(y|x) ∼ N (x, σ 2 ) である。σ 2 はステップ・サイズとよばれ,小さく
とると採択率が大きくなるが,x(k) の変化が小さい。逆に,大きくとると x(k) の変化は大きいが,
採択率が小さくなってしまう。また独立連鎖の場合
n q(x)π(y) o
α(x, y) = min 1,
q(y)π(x)
となる。変数が複数ある場合は,ギッブス・サンプリングのアルゴリズムを作り,条件付き分布
からの乱数の発生方法がわからない変数については MH 法を組み入れることになる。
t-分布からの乱数 自由度 m の t-分布から乱数を生成するのに MH 法を利用してみよう。正規
化定数 C に対して
1
π(x) = C
(1 + x /m)(m+1)/2
2

とおく。提案分布として q(y|x) ∼ N (x, σ 2 ) なる酔歩連鎖の密度を考えると


n π(y) o n (1 + x2 /m)(m+1)/2 o
α(x, y) = min 1, = min 1,
π(x) (1 + y 2 /m)(m+1)/2
102 第 14 章 ベイズ統計と MCMC 法

となるので,MH サンプリングは次のようになる。まず σ 2 を定める。


Step 1. N (x(k−1) , σ 2 ) から y (k) を発生させる。
Step 2. U ∼ U (0, 1) を発生させ,U ≤ α(x(k−1) , y (k) ) なら x(k) = y (k) とし,U > α(x(k−1) , y (k) )
なら x(k) = x(k−1) として,Step 1 に戻る。
このとき十分大きな K に対して x(k) , (k ≥ K), は π(x) からの乱数とみなすことがきる。
自由度 7 の t 分布の乱数をこの MH 法を用いて発生させヒストグラムを描いたものが図 14.5 で
ある。σ 2 = 0.2 とし,1000 個の乱数から最初の 100 個のを除いたものが左の図,10000 の乱数か
ら最初の 500 個を除いたものが右の図である。
200

600
150

500
400
100

300
200
50

100
0

−4 −2 0 2 4 −4 −2 0 2 4

図 14.5: ギッブス・サンプリングによる t 分布 (左)1000 回 (右)10000 回


 

> m <- 7
> x<-5; S<-10000 ; T<-NULL ; set.seed(1);a=0.2
> for(s in 1:S)
+ { x.star<-rnorm(1,x,a)
+ alpha<-( exp(((m+1)/2)*(log(1+x^2/m)-log(1+(x.star)^2/m))) )
+ if(runif(1)<alpha) { x<-x.star }
+ T<-c(T,x)
+ }
> TB <- T[500:10000]
>
> hist(TB, breaks=60, axes=F,labels=NULL,xlab="",ylab="",main="")
 
103

第 15 章 分散分析と多重比較

15.1 フィッシャーの 3 原則
15.2 1 元配置分散分析
次の例は,カフェインの摂取の量が興奮度にどの程度影響するかを調べた実験である。カフェ
インが入っていない飲み物 (プラセボ),100mg のカフェインが入った飲み物,200mg のカフェイ
ンが入った飲み物を,そえぞれ 10 人ずつランダムに割り付ける。どの程度のカフェインが入って
いるかなどについて本人には知らされておらず,摂取後 2 時間が経過した頃に,1 分当たりの指叩
きの回数を数えてみた結果が次の表で与えられる。

表 15.1: カフェインの量と指叩き数

処理 1 2 3 4 5 6 7 8 9 10
カフェイン 0 mg 242 245 244 248 247 248 242 244 246 242
カフェイン 100mg 248 246 245 247 248 250 247 246 243 244
カフェイン 200mg 246 248 250 252 248 250 246 248 245 250
252
250
248
246
244
242

a1 a2 a3

図 15.1: 箱ひげ図 (a1:0, a2:100, a3:200)


104 第 15 章 分散分析と多重比較
 

> a1 <- c(242,245,244,248,247,248,242,244,246,242)


> a2 <- c(248,246,245,247,248,250,247,246,243,244)
> a3 <- c(246,248,250,252,248,250,246,248,245,250)
> caffeine <- data.frame(A=factor(c(rep("a1",10),rep("a2",10),rep("a3",10))),
X=c(a1,a2,a3))
> boxplot(X~A,data=caffeine) #箱ひげ図の作成
 
表 15.1 で与えられたカフェインと指叩き数の例については分散分析表は次のようになる。
 

> summary(aov(X~A,data=caffeine)) #分散分析の結果


Df Sum Sq Mean Sq F value Pr(>F)
A 2 61.4 30.700 6.181 0.00616 **
Residuals 27 134.1 4.967
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
 

表 15.2: 表 15.1 のデータの分散分析表

変動の種類 自由度 平方和 平均平方 F値 P(> F )


群間変動 2 61.40 30.70 6.18 0.00616
群内変動 27 134.10 4.97
合計 29 195.50

この場合 F = 6.18, F2,27,0.05 = 3.35 であるので,帰無仮説 H0 は有意水準 5% で棄却されること


がわかる。この表の中の P(> F ) は P 値を表しており,その値が 0.00616 なので有意水準 1% でも
有意になっており,このデータはカフェインの覚醒効果のエビデンスを与えていることになる。

15.3 多重比較の問題
テューキー法は,次の確率変数の確率分布に基づいている。
n |(y − µ ) − (y − µ )| o
a b
max a·
√ b·
a,b σ̂/ J
の確率分布をステューデント化された範囲の分布とよび,この分布の上側 100α% 点を qI,I(J−1) (α)
で表す。この値については数表もしくは下記のRの関数を用いて求めることができる。このとき
h  σ̂ i
P max |(y a· − µa ) − (y b· − µb )| ≤ qI,I(J−1) (α) √ = 1 − α
a,b J
となる。この確率表現は,すべての a, b に対して µa − µb が区間
σ̂
y a· − y b· ± qI,I(J−1) (α) √
J
に入る確率が 1 − α になることを意味している。帰無仮説のもとで検定は信頼区間の裏返しなの
で,1 − α の確率でその区間が 0 を含む事象の排反をとると,α の確率で区間が 0 を含まないこと
になる。すなわち,帰無仮説のもとで,ある (a, b) があって
σ̂
|y a· − y b· | > qI,I(J−1) (α) √
J
15.3. 多重比較の問題 105

となる確率が α となる。このとき Ha,b 0


を棄却するのがテューキー法である。
表 15.1 で与えられたカフェインと指叩き数の例にテューキー法を適用してみよう。σ̂ 2 = 4.97,
J = 10, q3,27 (0.05) = 3.506 であるから,

σ̂ 4.97
qI,I(J−1) (α) √ = 3.506 × √ = 2.47
J 10
となる。y 1. = 244.8, y 2. = 246.4, y 3. = 248.3 であるから,|y 1. − y 2. | = 1.6, |y 2. − y 3. | = 1.9,
|y 1. − y 3. | = 3.5 となるので,H1,3
0
: µ1 = µ3 は有意水準 5% で棄却される。カフェイン 200g のとき
だけ有意になることがわかる。
ステューデント化された範囲の分布の分位点 qI,n (0.05) は次のようにして与えることができる。
 

> I <- 3; J <- 10; n <- I*(J-1)


> qtukey(0.95, I, n, nranges=1, lower.tail=TRUE, log.p=FALSE)
[1] 3.506426
 
またテューキー法による多重比較は次のようにして行うこともできる。µa − µb 信頼区間が 0 を
含まないのは µ3 − µ1 の場合だけである。
 

> TukeyHSD(aov(X~A,data=caffeine))
Tukey multiple comparisons of means
95% family-wise confidence level

Fit: aov(formula = X ~ A, data = caffeine)

A diff lwr upr p adj


a2-a1 1.6 -0.8711391 4.071139 0.2606999
a3-a1 3.5 1.0288609 5.971139 0.0043753
a3-a2 1.9 -0.5711391 4.371139 0.1562593
 
ボンフェローニ法はボンフェローニの不等式に基づいた方法である。ボンフェローニの不等式
より
0

P 正しい帰無仮説のうち,少なくとも 1 つの Ha,b が誤って棄却される事象
X 
≤ 0
P 正しい帰無仮説 Ha,b を誤って棄却する事象
a,b

となるので
 α α
P 正しい帰無仮説 Ha,b 0
を誤って棄却する事象 ≤ =
k I(I − 1)
となるように,有意水準 α を α/I(I − 1) で置き換えればよい。表 15.1 の例に適用してみると
p
|y a· − y b· | > tI(J−1),α/{2I(I−1)} 2σ̂ 2 /J のとき有意水準 α/I(I − 1) で Ha,b 0
が棄却されるので
√ √ √
2σ̂ 2 4.97
tI(J−1),α/{2I(I−1)} √ = 2.847 × √ = 2.84
J 10
となる。ボンフェローニの不等式は緩い不等式なので,かなり保守的な検定になると思われるが,
テューキー法の臨界点が 2.47 であるのに対してボンフェローニ法では 2.84 なので驚く程は離れて
いない。
 

> I <- 3; J <- 10; n <- I*(J-1)


> qt(1-0.05/(2*I*(I-1)), n)
[1] 2.846898
 
106 第 15 章 分散分析と多重比較

15.4 2 元配置分散分析
三輪哲久 (2015)「 実験計画法と分散分析」で用いられたラットの毒性試験の例を利用する。雄
20 匹と雌 20 匹のラットに 4 種類の濃度の薬剤 (B1 :0ppm, B2 :25ppm, B3 :50ppm, B4 :100ppm) を与
え,13 週間後に観測した赤血球の数 (104 の単位) が表 15.3 で与えられる。それぞれの濃度には雄
5 匹雌 5 匹がランダムに割り付けられる。

表 15.3: ラットの毒性試験データ

性別 A 薬剤濃度 B 1 2 3 4 5
雄 A1 B1 803 838 836 822 804
B2 824 839 772 812 844
B3 786 775 768 758 730
B4 722 779 647 716 710
雌 A2 B1 705 744 716 777 799
B2 733 818 750 769 718
B3 745 809 721 777 739
B4 712 720 718 703 707

 

> male <- c(803,838,836,822,804,824,839,772,812,844,


+ 786,775,768,758,730,722,779,647,716,710)
> female <- c(705,744,716,777,799,733,818,750,769,718,
+ 745,809,721,777,739,712,720,718,703,707)
 
一般に,2 元配置の分散分析モデルは

yijk = µ + αi + βj + γij + εijk (15.4.1)

で与えられる。ただし i = 1, . . . , I, j = 1, . . . , J, k = 1, . . . , K であり,ラットの例では I = 2,
J = 4, K = 5 となる。ここで,εijk は互いに独立な確率変数で正規分布 N (0, σ 2 ) に従うものとし,µ
PI PJ
が全平均, A の主効果 αi , B の主効果 βj , A と B の交互作用効果 γij は制約 i=1 αi = 0, j=1 βj = 0,
PI P PI PJ PK
γij = Jj=1 γij = 0 を満たすものとする。ここで,y ··· = IJK 1
k=1 yijk , y i·· =
1
PJ PK
i=1
1
PI PK 1
PK i=1 j=1

P
JK P
j=1 k=1 yijk , y ·j· = IK
P i=1 k=1 yijk , y ij· = K k=1 yijk とおくと,全変動平方和 SST =

k=1 (yijk − y ··· ) は,SST = SSA + SSB + SSAB + SSE のように分解できる。ここで


I J K 2
i=1 j=1

X
I X
J
SSA =JK (y i·· − y ··· ) , SSB = IK
2
(y ·j· − y ··· )2
i=1 j=1

X
I X
J X
I X
J X
K
SSAB =K (y ij· − y i·· − y ·j· + y ··· ) , SSE =
2
(yijk − y ij· )2
i=1 j=1 i=1 j=1 k=1

である。平均平方を MSA = SSA /(I − 1), MSB = SSB /(J − 1), MSAB = SSAB /{(I − 1)(J − 1)},
σ̂ 2 = SSE /{IJ(K − 1)} とする。以上より
帰無仮説 Hα : α1 = · · · = αI = 0 のもとでは,FA = MSA /σ̂ 2 ∼ FI−1,IJ(K−1) に従う。
帰無仮説 Hβ : β1 = · · · = βJ = 0 のもとでは,FB = MSB /σ̂ 2 ∼ FJ−1,IJ(K−1) に従う。
帰無仮説 Hγ : γij = 0, (i = 1, . . . , I, j = 1, . . . , J) のもとでは,FAB = MSAB /σ̂ 2 ∼ F(I−1)(J−1),IJ(K−1)
に従う。
15.5. 他の分散分析モデル 107

SSE /σ 2 ∼ χ2IJ(K−1) に従う。


以上の内容をまとめたものが次の 2 元配置の分散分析表である。表 15.3 のラットの毒性試験デー

表 15.4: 2 元配置の分散分析表

要 因 自由度 平方和 平均平方 F値


A 因子 I −1 SSA MSA FA = MSA /σ̂ 2
B 因子 J −I SSB MSB FB = MSB /σ̂ 2
交互作用 (I − 1)(J − 1) SSAB MSAB FAB = MSAB /σ̂ 2
残 差 IJ(K − 1) SSE σ̂ 2
合 計 IJK − 1

タについて,分散分析表を作成すると表 15.5 のようになる。F 値が FA = 12.26,FB = 11.62 であ

表 15.5: ラットの毒性試験データの分散分析表

要 因 自由度 平方和 平均平方 F値 P(> F )


A 因子 1 12426 12426 FA = 12.26 0.00139
B 因子 3 35354 11785 FB = 11.62 0.00002
交互作用 3 9947 3316 FAB = 3.27 0.03377
残 差 32 32445 σ̂ 2 = 1014
合 計 39

るから, 有意水準 5% で雌雄の違い,毒性濃度の違いはともに有意になることがわかる。交互作用


効果については,F 値が FAB = 3.27 であり,このときの P 値が 0.03377 であるから,有意水準 5%
で有意であるが,1% では有意にならない。
 

> rat <- data.frame(A=factor(c(rep("male",20),rep("female",20))),B=factor(rep


(c(rep("B1",5), rep("B2",5), rep("B3",5),rep("B4",5)),2)),X= c(male,female
))
> summary(aov(X~A+B,data=rat)) #交互作用がない場合
Df Sum Sq Mean Sq F value Pr(>F)
A 1 12426 12426 10.26 0.0029 **
B 3 35354 11785 9.73 8.24e-05 ***
Residuals 35 42392 1211
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
>
> summary(aov(X~A*B,data=rat)) #交互作用がある場合
Df Sum Sq Mean Sq F value Pr(>F)
A 1 12426 12426 12.26 0.00139 **
B 3 35354 11785 11.62 2.59e-05 ***
A:B 3 9947 3316 3.27 0.03377 *
Residuals 32 32445 1014
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
 

15.5 他の分散分析モデル
108

第 16 章 分布によらない推測法

16.1 データの要約
経験分布関数とカーネル密度推定 ヒストグラムは柱状グラフなので滑かな関数を当てはめた
い。K(x) を, 0 を中心に対称で積分が 1 であるような非負の関数とする。h を正の実数とし

1 x
Kh (x) = K
h h
とおく。例えば,K(x) を標準正規分布の確率密度とすると,Kh (x) は N (0, h2 ) の確率密度になる。
K(x) としては対称な一様分布, 対称な三角分布なども利用される。このとき,確率密度関数 f (x)

1X
n
fh (x) = Kh (x − Xi ) (16.1.1)
n i=1
で推定する。これをカーネル密度推定量とよび,K(·) をカーネル (kernel), h をバンド幅とよぶ。
R∞
f (x)dx = 1 であり,h → 0 のとき E[fh (x)] → f (x) となることが示される。
−∞ h
例 7.1 の 50 人の身長データについて,カーネル密度推定の関数を描いたのが図 16.1 である。カー
ネルは標準正規分布で,h = 1, 3 の場合を描いている。
 

> hist(tall)
> tall.kn1 <- density(tall, 1) #カーネル密度推定
> plot(tall.kn1)
> tall.kn3 <- density(tall, 3)
> plot(tall.kn3)
 
h が小さいときデータへの適合がよく,h が大きくなると関数は滑らかになる。データへの適合と
関数の滑らかさとをバランスする h を取る必要がある。
分布の中心の測定 分布の中心は標本平均

1X 1X
n n
X= Xi = X(i)
n i=1 n i=1

で与えるのが標準である。ここで X(1) ≤ X(2) ≤ · · · ≤ X(n) は順序統計量である。


メディアンは (
X((n+1)/2) n が奇数のとき
Xmed =
{X(n/2) + X(n/2+1) }/2 n が偶数のとき
で定義される。刈り込み平均は,順序統計量の両側 r 個を除いた平均値
x(r+1) + x(r+2) + · · · + x(n−r−1) + x(n−r)
Xtrim =
n − 2r
である。
16.1. データの要約 109

0.10
0.10

0.08
0.08

0.06
0.06

0.04
0.04

0.02
0.02
0.00

0.00
155 160 165 170 175 180 185 190 155 160 165 170 175 180 185 190

図 16.1: カーネル密度推定,h = 1 の場合 (左), h = 3 の場合 (右)

 

> max(tall)
[1] 185
> min(tall)
[1] 163
> mean(tall)
[1] 172
> median(tall)
[1] 172
> sort(tall, decreasing=F) #小さい順に並べる
[1] 163 165 167 167 167 167 168 168 168 168 168 168 169 170 170 170
[17] 170 170 170 170 171 171 171 172 172 172 172 172 172 173 173 173
[33] 173 173 173 173 174 174 175 175 175 176 176 176 177 178 179 180
[49] 181 185
> sort(tall, decreasing=T) #大きい順に並べる
[1] 185 181 180 179 178 177 176 176 176 175 175 175 174 174 173 173
[17] 173 173 173 173 173 172 172 172 172 172 172 171 171 171 170 170
[33] 170 170 170 170 170 169 168 168 168 168 168 168 167 167 167 167
[49] 165 163
> rank(tall) #小さい順に並べたときの順番
[1] 17.0 33.0 40.0 17.0 26.5 2.0 4.5 9.5 26.5 37.5 9.5 17.0 33.0
[14] 46.0 33.0 1.0 26.5 33.0 47.0 26.5 9.5 4.5 9.5 37.5 4.5 48.0
[27] 22.0 49.0 45.0 17.0 17.0 40.0 13.0 40.0 33.0 22.0 26.5 43.0 43.0
[40] 4.5 33.0 26.5 9.5 9.5 22.0 17.0 43.0 33.0 17.0 50.0
> mean(tall, trim=0.2) #両側から20%ずつ切り捨てたときの平均
[1] 171.6333
 

正のデータに対する幾何平均と調和平均 X1 , . . . , Xn が正の確率変数のときに,幾何平均,調
和平均を次で定義する。
n
Gx = (X1 × · · · × Xn )1/n , Hx = P n
i=1 1/Xi
110 第 16 章 分布によらない推測法
 

> G <- exp( mean(log(tall))) 幾何平均%


> G
[1] 171.9493
> H <- 1/mean(1/tall) 調和平均%
> H
[1] 171.8991
 

分布のバラツキの測定 標本分散は
1X
n
S2 = (Xi − X)2
n i=1
である。標本分散は外れ値の影響を受けてしまう。ロバストなバラツキの指標の一つは,メディ
アン Xmed に対して |X1 − Xmed |, . . . , |Xn − Xmed | のメディアン

med |X1 − Xmed |, . . . , |Xn − Xmed |
を用いる方法で,メディアン絶対偏差とよばれる。指標のもう一つは,四分位範囲である。デー
タを小さい順に並べて全体を 4 等分したときの,下側 1/4 を与える点を 25% 分位点もしくは第 1
四分位点とよび,上側 1/4 を与える点を 75% 分位点もしくは第 3 四分位点とよぶ。第 1 四分位点
と第 3 四分位点の差を四分位範囲 (IQR) とよぶ。
 

> n <- length(tall)


> S2 <- var(tall)*(n-1)/n 標本分散%
> n
[1] 50
> S2
[1] 17.6
> S <- sqrt(S2)
> S
[1] 4.195235
> mad <- median(abs(tall-median(tall))) メディアン絶対偏差%
> mad
[1] 2.5
> quantile(tall)
0% 25% 50% 75% 100%
163.00 169.25 172.00 174.00 185.00
> quantile(tall, probs=c(0.25, 0.75))
25% 75%
169.25 174.00
> IQR <- quantile(tall, probs=0.75)-quantile(tall, probs=0.25)
> IQR
4.75
range(tall)
[1] 163 185
> boxplot(tall)
 

16.2 順位相関係数
2 次元確率変数 (X1 , Y1 ), . . . , (Xn , Yn ) が独立に分布するとき,ピアソンの標本相関係数は
Pn
i=1 (Xi − X)(Yi − Y )
Rx,y = qP qP
i=1 (Xi − X) i=1 (Yi − Y )
n 2 n 2
16.2. 順位相関係数 111

185
180
175
170
165

図 16.2: 箱ひげ図

で定義される。ピアソンの標本相関係数は外れ値の影響を受ける。そこで外れ値に頑健な相関係
数を求めたい。X1 , . . . , Xn を小さい順に並べたときの Xi の順位を Ri , 同様に Y1 , . . . , Yn を小さい
順に並べたときの Yi の順位を Si とする。例えば,夫婦の年齢のデータを考えてみる。15 組の夫
婦の年齢が上の欄,年齢順位が下の欄で与えられる。同順位がある場合はそれらの平均で置き換
える。
番号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
夫の年齢 49 25 40 52 58 32 43 47 31 26 41 35 34 36 48
妻の年齢 44 28 30 57 53 27 52 43 23 25 39 32 35 33 34
夫の順位 13 1 8 14 15 4 10 11 3 2 9 6 5 7 12
妻の順位 12 4 5 15 14 3 13 11 1 2 10 6 9 7 8
 

> husb <- c(49,25,40,52,58,32,43,47,31,26,41,35,34,36,48)


> wife <- c(44,28,30,57,53,27,52,43,23,25,39,32,35,33,34)
> cor(husb, wife)
[1] 0.8414714
> husb.rank <- rank(husb)
> wife.rank <- rank(wife)
> husb.rank
[1] 13 1 8 14 15 4 10 11 3 2 9 6 5 7 12
> wife.rank
[1] 12 4 5 15 14 3 13 11 1 2 10 6 9 7 8
> cor(husb.rank, wife.rank)
[1] 0.8785714
 
このとき,2 次元の順位 (R1 , S1 ), . . . , (Rn , Sn ) についてピアソンの標本相関係数は,
Pn
(Ri − (n + 1)/2)(Si − (n + 1)/2)
ρx,y = pPn i=1 pPn
i=1 (R i − (n + 1)/2) 2
i=1 (Si − (n + 1)/2)
2

6 Xn
=1 − (Ri − Si )2
n(n − 1) i=1
2

と書かれ,これをスピアマンの順位相関係数とよぶ。
ケンドールの順位相関係数は,x の符号を sgn (x) で表すと
1 XX n n
τx,y = sgn (Xi − Xj ) × sgn (Yi − Yj )
n(n − 1) i=1 j=1
112 第 16 章 分布によらない推測法

で定義され,
1 XXn n
τx,y = sgn (Ri − Rj ) × sgn (Si − Sj )
n(n − 1) i=1 j=1

とも書ける。
R では,これらの順位相関係数は次のようにして計算できる。
 

> cor(husb, wife, method="spearman") #スピアマン順位相関係数


[1] 0.8785714
> cor(husb, wife, method="kendall") #ケンドール順位相関係数
[1] 0.6952381
 

16.3 ノンパラメトリック回帰
(X, Y ) を 2 次元の連続な確率変数で, n 個の実現値を (x1 , y1 ), . . . , (xn , yn ) として,次のような回
帰モデルを考える。
yi = r(xi ) + ui , i = 1, . . . , n
ただし,ui は E[ui |X = xi ] = 0, E[u2i |X = xi ] = σ 2 (xi ) とし,r(x) は未知の回帰関数とする。
r(x) = α + βx の場合が単回帰モデルに対応する。このモデルをノンパラメトリック回帰とよぶ。
r(x) のナダラヤ・ワトソン推定量は次で与えられる。
Pn  R  
Z ∞ ˆ K x−xi ∞
y 1
K y−yi
dy
f (x, y) i=1 h −∞ h h
r̂(x) = y dy = Pn  
−∞ fˆX (x) j=1 K
x−xj
h

1 X  x − xi 
n
=P   K yi
n
K
x−xj
i=1
h
j=1 h

表 12.2 の気温とビールの販売量のデータについてナダラヤ・ワトソン推定量を当てはめたのが
図 16.3 である。h = 0.5 の場合 (左) と h = 2 の場合 (右) を比較すると,h が大きいほど滑らかに
なる。
R では,パッケージ np を用いるとナダラヤ・ワトソン推定量を計算してくれる。
 

> install.packages("np")
> library(np)
> bier <- c(172,144,190,202,197,276,292,220,214,172,202,240,
+ 152,117,176,182,181,251,249,214,167,159,185,228)
> temp <- c(7.6,6,9.4,14.5,19.8,22.5,27.7,28.3,25.6,18.8,13.3,8.8,
+ 4.9,6.6,9.8,15.7,19.5,23.1,28.5,26.4,23.2,18.7,13.1,8.4)
 
16.4. ブートストラップ法 113
 

> model1.np <- npreg(bier~temp, regtype="ll", bws=c(0.7))


> plot(model1.np,xlim=c(5,30),ylim=c(110,300))
> summary(model1.np)
Regression Data: 24 training points, in 1 variable(s)
temp
Bandwidth(s): 0.7
Kernel Regression Estimator: Local-Linear
Bandwidth Type: Fixed
Residual standard error: 16.45689
R-squared: 0.8487829
Continuous Kernel Type: Second-Order Gaussian
No. Continuous Explanatory Vars.: 1
 
 

> model2.np <- npreg(bier ~ temp, regtype="ll", bws=c(2))


> plot(model2.np,xlim=c(5,30),ylim=c(110,300))
> summary(model2.np)
Regression Data: 24 training points, in 1 variable(s)
temp
Bandwidth(s): 2
Kernel Regression Estimator: Local-Linear
Bandwidth Type: Fixed
Residual standard error: 27.39283
R-squared: 0.5578214
Continuous Kernel Type: Second-Order Gaussian
No. Continuous Explanatory Vars.: 1
 
300

300
250

250
200

200
150

150

55 10
10 1515 2020 25 25 30 55 10
10 1515 2020 25 25 30

図 16.3: ナダラヤ・ワトソン推定,h = 0.5 の場合 (左), h = 2 の場合 (右)

16.4 ブートストラップ法
推定量のバイアスや分散,信頼区間の構成,推定量の分布の分位点など,推定量の信頼性を評
価するときにブートストラップ法を用いると便利である。
ブートストラップ法
θ = θ(F ) を θ̂ = θ(Fn ) で推定するときのバイアス Biasθ̂ (F ) = EF [θ(Fn )] − θ(F ) について,その
推定量を与えることを考えてみよう。F を Fn で置き換えればよいので,Biasθ̂ (Fn ) とすればよい。
しかし,期待値 EF [θ(Fn )] についてはどのように置き換えればよいだろうか。
「分布関数 F からのランダム標本 X1 , . . . , Xn に基づいて作られた経験分布関数 Fn について,
θ(Fn ) の F に関する期待値が EF [θ(Fn )] である。」
114 第 16 章 分布によらない推測法

この記述において F を Fn に置き換えると次のように書ける。
「経験分布関数 Fn からのランダム標本 X1∗ , . . . , Xn∗ に基づいて作られた経験分布関数 Fn∗ につい
て,θ(Fn∗ ) の Fn に関する期待値が E∗Fn [θ(Fn∗ )] である。」
この経験分布関数 Fn からのランダム標本 X1∗ , . . . , Xn∗ をブートストラップ標本とよぶ。E∗Fn [θ(Fn∗ )]
は θ(Fn∗ ) の X1∗ , . . . , Xn∗ に関する期待値を表している。以上より,(F, Fn ) を (Fn , Fn∗ ) で置き換えれ
ば推定量が得られることになる。
d θ̂)
θ̂Boot = θ̂ − Bias(
とおくと,E[θ̂Boot ] = θ + O(n−2 ) となることを示すことができる。
√ √
θ の信頼区間については,PF ( n{θ(Fn ) − θ} ≤ xL ) = α/2,PF ( n{θ(Fn ) − θ} ≥ xU ) = α/2
√ √
を満たす xL と xU を求めると,信頼係数 1 − α の信頼区間 [θ(Fn ) − xL / n, θ(Fn ) + xU / n] が得
られる。しかし,漸近分散を解析的に求める必要があり簡単ではない。これに対して,ブートス

トラップ法を用いると,比較的容易に信頼区間を作ることができる。PF ( n{θ(Fn ) − θ(F )} ≤ x)
の代わりに

PFn ( n{θ(Fn∗ ) − θ(Fn )} ≤ x)

を用いればよい。この分布の下側 α/2 分位点,上側 α/2 分位点を x∗L , x∗U すると,[θ(Fn )−x∗L / n, θ(Fn )+

x∗U / n] がブートストラップ信頼区間となる。
ブートストラップ法の実装
例えば,例 7.1 で扱った男子大学生 50 人の身長のデータについて,B = 10, 000 個のブートスト
∗(b) ∗(b)
ラップ標本 x1 , . . . , x50 , b = 1, . . . , B, を発生させ,ブートストラップ標本平均 x∗(1) , . . . , x∗(B) を
計算する。このとき,B 個のブートストラップ標本平均の平均と分散は 172, 0.34 になる。標本平
均の分散が 0.34 で推定されるので,分散 σ 2 は 0.34 × 50 = 17.2 で推定される。x = 172,s2 = 17.6
であるから,両者は近い推定値を与えている。また,B 個のブートストラップ標本平均のヒスト
グラムが図 16.4 で描かれている。この分布の 2.5% 分位点と 97.5% 分位点は 170.8, 173.2 になるの
で,ブートストラップ標本に基づいた平均の 95% 信頼区間は [170.8, 173.2] となる。第 8 章の章末
問題 (問 1) で求めた信頼区間は [171, 173] であるから,近い値を与えている。
 

> x <- tall


> set.seed(123)
> nsims<-10000
> nx<-length(x)
> tmpdata <- sample(x,nx*nsims, replace=TRUE)
> bootsp <- matrix(tmpdata, nrow=nx, ncol=nsims,byrow=T)
> xbarm <- colMeans(bootsp)
 
16.5. ノンパラメトリック検定 115
 

> mean(xbarm) #標本平均の平均値


[1] 171.9934
> sd(xbarm) #標本平均の標準誤差
[1] 0.5864518
> mean(xbarm)-mean(x) #偏り(バイアス)
[1] -0.00663
> quantile(xbarm, 0.025, type = 1)
2.5%
170.84
> quantile(xbarm, 0.975, type = 1)
97.5%
173.18
> quantile(xbarm, 0.025)
2.5%
170.84
> quantile(xbarm, 0.975)
97.5%
173.18
 
700
600
500
400
300
200
100
0

170 171 172 173 174

図 16.4: ブートストラップ標本平均のヒストグラム

16.5 ノンパラメトリック検定
検定の多くは正規分布などのパラメトリックなモデルのもとで扱われる。これに対して,分布
系を仮定しないで実行可能な検定も応用場面で大変役立つ。ここでは,ノンパラメトリック検定
もしくは分布に依らない検定の代表例を紹介する。
符号検定 連続な確率変数 Z1 , . . . , Zn が独立に密度関数 f (z − θ) に従い,θ はこの分布のメディ
アンであるとする。θ に関する片側検定

H0 : θ = θ0 v.s. H1 : θ > θ0

を考えてみよう。いま,関数 d(x) を
(
1, x > 0 のとき
d(x) = (16.5.1)
0, x ≤ 0 のとき

で定義するとき
X
n
Sn+ = d(Zi − θ0 )
i=1
116 第 16 章 分布によらない推測法

は,Zi − θ0 が正となるものの個数を表している。
p
(Sn+ − n/2 − 1/2)/ n/4 > zα
のとき H0 は棄却するのが,符号検定である。
例えば,タクシー会社が 2 種類のタイヤのうち燃費のいい方を採用するため 10 台の車で走行
実験を行った。車は同じドライバーが運転しそれぞれのタイヤを 1 週間装備したときの燃費が表
16.1 で与えられている。これは,対のある 2 次元のデータと捉えることができる。この例の場合,

表 16.1: 2 種類のタイヤの燃費 (Km/L)


車 1 2 3 4 5 6 7 8 9 10
タイヤ A(x) 17.8 16.6 19.2 15.6 18.6 15.0 14.3 16.9 18.9 18.0
タイヤ B(y) 17.0 16.0 19.2 15.7 17.9 14.1 14.6 17.3 17.6 17.5
x−y 0.8 0.6 -0.1 -0.2 0.7 0.9 -0.3 -0.4 1.3 0.5
符号 + + − − + + − − + +
|x − y| 0.8 0.6 0.1 0.2 0.7 0.9 0.3 0.4 1.3 0.5
順位 8 6 1 2 7 9 3 4 10 5

(X1 , Y1 ), . . . , (Xn , Yn ) が独立な 2 次元の確率変数で,Z1 = X1 − Y1 , . . ., Zn = Xn − Yn とおくと


き,Zi は密度関数 f (z − θ) に従うとし,f (z) は原点に関して対称であると仮定する。タクシー会
社の調べたい検定問題は H0 : θ = 0 v.s. H1 : θ > 0 と表すことができる。この問題は,上述の検
定問題において θ0 = 0 に対応している。表 16.1 の例では,Sn+ = 6 となる。
R では,binom.test を用いると,正確検定ができる。この場合は有意でないことがわかる。ま
た,n が大きいときには正規近似を用いて検定ができるが,この場合も有意でない。
 

> binom.test(6,10)
Exact binomial test
data: 6 and 10
number of successes = 6, number of trials = 10, p-value =
0.7539
alternative hypothesis: true probability of success is not equal to 0.5
95 percent confidence interval:
0.2623781 0.8784477
sample estimates:
probability of success
0.6
> (6-10/2-0.5)/sqrt(10/4)
[1] 0.3162278
> qnorm(0.95)
[1] 1.644854
>
 

符号付き順位和検定 絶対値をとったもの |Z1 |, . . . , |Zn | を小さい順に並べたときの |Zi | の順位


を Ri+ とする。(16.5.1) の関数 d(·) を用いて符号と順位を組み入れた統計量
X
n
W+ = Ri+ d(Zi )
i=1

を考え,これに基づいた検定をウィルコクソンの符号付き順位和検定とよぶ。W+ の分布は N (n(n+


1)/4, n(n + 1)(2n + 1)/24) で近似できることが知られているので
 √
n(n + 1) 1  24
T = W+ − − p > zα
4 2 n(n + 1)(2n + 1)
16.5. ノンパラメトリック検定 117

のとき H0 を棄却するのが有意水準 α の検定になる。


表 16.1 の例では,|xi − yi | の順位が下段で与えられており,W+ の値を計算すると W+ = 8 + 6 +
7 + 9 + 10 + 5 = 45 となり T = 1.733 となる。z0.05 = 1.64 であるから,正規近似を用いると,有
意水準 5% で H0 : θ = 0 は棄却される。有意ではあるが,P 値は 4.2% であり,微妙な判断ではあ
る。R では,ウィルコクソンの符号付き順位和の正確検定を行うことができるので,これを計算
してみると,P 値が 8.4% になり,有意ではないことがわかる。
 

> (w-n*(n+1)/4-0.5)*sqrt(24)/sqrt(n*(n+1)*(2*n+1))
[1] 1.7328
> qnorm(0.95)
[1] 1.644854
>
> wilcox.test(tire)
Wilcoxon signed rank exact test
data: tire
V = 45, p-value = 0.08398
alternative hypothesis: true location is not equal to 0
 

2群の順位和検定 2つの標本 (群) を考え,確率変数 X1 , . . . , Xm が独立に確率密度 f (x) に従


い,確率変数 Y1 , . . . , Yn が独立に確率密度 f (x − θ) に従うとき

H0 : θ = 0 vs. H1 : θ > 0

を検定する問題を考える。
{X1 , . . . , Xm , Y1 , . . . , Yn } の全体を小さい順に並べ直し, 1 から m + n までの順位をつける。ただ
し簡単のため,同順位はないものとする。このとき,Y1 の順位を R1 とし,以下 Y2 , . . . , Yn の順位
をそれぞれ R2 , . . . , Rn とする。Y1 , . . . , Yn に関するこれらの順位を足し合わせたもの
X
n
W = Ri
i=1

を考え,これに基づいた検定をウィルコクソンの順位和検定 (Wilcoxon rank-sum test) もしくは


マン・ウィットニー検定 (Mann-Whitney test) という。θ > 0 のときには,Xi より Yj の方が大き
めの順位がつく傾向になるので,その結果 W の値が大きくなる。
N = m + n とおくと,H0 : θ = 0 のもとでは,W/n は自然数の集合 {1, 2, . . . , N } からランダム
に非復元抽出したサイズ n の標本の平均であることに注意すると,この自然数の集合を有限母集
団と考えて, 後述の??節での結果 (??) と (??) を用いると
σ2 N − n
E[W/n] = µ, Var(W/n) =
n N −1

と書ける。ここで µ, σ 2 は母集団の平均と分散であるから
1 X 1 X 2 (N + 1)2
N N
N +1 (N + 1)(N − 1)
µ= j= , 2
σ = j − =
N j=1 2 N j=1 4 12

と書けるので,W の平均と分散は次のようになる。
n(N + 1) nm(N + 1)
E[W ] = , Var(W ) =
2 12
118 第 16 章 分布によらない推測法

W は確率変数の和なので中心極限定理を適用することができ,W の分布は N (n(N +1)/2, mn(N +


1)/12) で近似することができる。従って
 √
n(N + 1) 1  12
T = W− − p > zα
2 2 mn(N + 1)

のとき H0 を棄却するのが有意水準 α の検定になる。左辺の中にある −1/2 は連続補正のために


入っている。また両側検定 H0 : θ = 0 vs. H1 : θ ̸= 0 については, 有意水準 α の検定は |T | > zα/2
になる。
例えば,2 つのブランドのタバコについてニコチンの含有量を調べたところ表 16.2 の結果が得ら
れた。このデータからニコチンの含有量が等しいかを検定したい。{x1 , . . . , xm , y1 , . . . , yn } 全体の

表 16.2: 2 つのブランドのタバコに含まれるニコチンの量 (mg)

ブランド A(x) 4.1 4.9 6.4 2.2 3.8 3.2 6.0 5.5
ブランド B(y) 3.3 0.7 4.2 3.9 6.1 1.8 5.3 2.0 4.4 2.5
ブランド A の順位 10 13 18 4 8 6 16 15
ブランド B の順位 7 1 11 9 17 2 14 3 12 5

中の順位が表 16.2 の下段で与えられているので,W = 7 + 1 + 11 + 9 + 17 + 2 + 14 + 3 + 12 + 5 = 81


となり,m = 8, n = 10 より T = −1.29 となる。z0.025 = 1.96 より,両側検定に関して有意でない
ことがわかる。
 

> A <- c(4.1,4.9,6.4,2.2,3.8,3.2,6.0,5.5)


> B <- c(3.3,0.7,4.2,3.9,6.1,1.8,5.3,2.0,4.4,2.5)
> C <- rank(c(A,B))
> sum(C[9:18])
[1] 81
> W <- 81;m <- 8; n <- 10; N <- m+n
> T <- (W-n*(N+1)/2-0.5)*sqrt(12)/sqrt(m*n*(N+1))
> T
[1] -1.288359
> qnorm(0.975)
[1] 1.959964
>
> wilcox.test(A,B)
Wilcoxon rank sum exact test
data: A and B
W = 54, p-value = 0.237
alternative hypothesis: true location shift is not equal to 0
 

K 群のクラスカル・ウォリス検定 一般に K 個の標本もしくは群があってそれらの同等性を検


定する問題が考えられる。例えば,薬の効果を調べるために,K 段階の用量設定のもとで被験者
に投与した結果,(X11 , . . . , X1n1 ), . . . , (XK1 , . . . , XKnK ) の治験が得られたとする。ここで,最初
の k = 1 の群は対照群として用量 0 の群と設定しておく。確率変数はすべて独立で,Xkj の確率密
度が f (x − θk ) であるとするとき,検定したい仮説は H0 : θ1 = · · · = θK と書ける。対立仮説は,
等号が成り立たない k ∈ {1, . . . , K} が存在すると表される。
順位に基づいてこの検定問題を扱うため,すべての Xkj を小さい順に並べ全体の中での順位を
Pnk
付ける。Xkj の順位を Rkj で表すと,表 16.4 のような順位表が作れる。ここで,Rk· = j=1 Rkj ,
16.5. ノンパラメトリック検定 119

R1 = Rk· /nk である。

表 16.3: K 群の順位

群の番号 順位 合計 平均
1 R11 R12 · · · R1n1 R1· R1·
.. .. .. .. ..
. . . ··· . .
K RK1 RK2 ··· RKnK RK· RK·

N = n1 + · · · + nK とおくと, クラスカル・ウォリス検定は

12 XK n N + 1 o2 6 X {Rk· − nk (N + 1)/2}2
K
H= nk Rk· − =
N (N + 1) k=1 2 N i=1 nk (N + 1)/2

で与えられる。H > χ2K−1,α のとき仮説 H0 を棄却するのが有意水準 α の検定になる。


2 つのブランドタバコのニコチン含有量の表 16.2 に,さらにブランド C のタバコを加えてニコ
チン含有量を調べた。ブランド C の含有量は 4.3, 6.3, 5.4, 5.8, 5.1, 6.5 であった。このとき,3 種
類のブランドのデータ全体の中での順位は表 16.4 で与えられる。n1 = 8, n2 = 10, n3 = 6, N = 24

表 16.4: 3 つのブランドのタバコに含まれるニコチンの量の順位

カテゴリー 順位 合計 平均
ブランド A の順位 10 14 23 4 8 6 20 18 103 12.9
ブランド B の順位 7 1 11 9 21 2 16 3 13 5 88 8.8
ブランド C の順位 12 22 17 19 15 24 109 18.2

より H = 6.66 となる。χ22,0.05 = 5.99 より有意水準 5% で同等性仮説は棄却される。R にはクラス


カル・ウォリス検定を行う関数 kruskal.test が用意されているので利用することができる。
 

> A <- c(4.1,4.9,6.4,2.2,3.8,3.2,6.0,5.5)


> B <- c(3.3,0.7,4.2,3.9,6.1,1.8,5.3,2.0,4.4,2.5)
> C <- c(4.3,6.3,5.4,5.8,5.1,6.5)
> nico <- c(A,B,C)
> grp <- rep(1:3, c(8,10,6))
> kruskal.test(nico ~ grp)
Kruskal-Wallis rank sum test
data: nico by grp
Kruskal-Wallis chi-squared = 6.6138, df = 2, p-value = 0.03663
 

コルモゴロフ・スミルノフ検定
経験分布関数 Fn (x) を用いた正規性の検定や指数分布の検定について紹介する。
X1 , . . . , Xn を独立に分布関数 F (x) に従う確率変数とする。この確率変数が特定の分布関数 F0 (x)
に従うかを検定する問題「H0 : F (x) = F0 (x) vs. H1 : F (x0 ) ̸= F0 (x0 ) となる x0 が存在する」を
考える。
Dn = sup |Fn (x) − F0 (x)|
x
120 第 16 章 分布によらない推測法

を用いた検定をコルモゴロフ・スミルノフ検定とよぶ。Dn が大きければ H0 は棄却される。F0 (x) が連


続な関数で n が大きいとき,H0 のもとで次のような近似式が成り立つ。xα = {−(1/2) log(α/2)}1/2

とおくとき,Dn > xα / n のとき H0 を棄却するのが有意水準 α の近似的な検定になる。代表的
な棄却点の値は x0.05 = 1.36, x0.01 = 1.63 となる。
例 7.1 で取り上げた身長データが正規分布 N (µ, σ 2 ) に当てはまっているかについてコルモゴロ

フ・スミルノフ検定を用いてみると,n = 50, α = 0.05, Dn = 0.13, x0.05 / n = 0.19 より有意にな
らないので,正規性が受け入れられる。例 7.2 の時間間隔データが指数分布 Ex(λ) に当てはまっ
ているかについてコルモゴロフ・スミルノフ検定を用いてみると,n = 50, α = 0.05, Dn = 0.11,

x0.05 / n = 0.19 より有意にならないので,指数分布が受け入れられる。
R では,ルモゴロフ・スミルノフ検定を行う関数 ks.test が用意されている。
 

> ks.test(tall, "pnorm", mean=mean(tall), sd=sd(tall))


Asymptotic one-sample Kolmogorov-Smirnov test
data: tall
D = 0.12673, p-value = 0.3981
alternative hypothesis: two-sided
>
> ks.test(time, "pgamma",1, 1/mean(time))
Asymptotic one-sample Kolmogorov-Smirnov test
data: time
D = 0.10669, p-value = 0.6197
alternative hypothesis: two-sided
 
2 標本問題については,確率変数 X1 , . . . , Xm が独立に分布関数 F (x) に従い,確率変数 Y1 , . . . , Yn
が独立に分布関数 G(x) に従うとする。2 つの標本の分布関数が等しいかを検定する問題「H0 :
F (x) = G(x) vs. H1 : F (x0 ) ̸= G(x0 ) となる x0 が存在する」を考える。それぞれの経験分布関数
を Fm (x), Gn (x) とするとき,2 標本のコルモゴロフ・スミルノフ検定を用いる。

Dm,n = sup |Fm (x) − Gn (x)|


x
p
N = m + n が大きいとき,xα = {−(1/2) log(α/2)}1/2 に対して,Dm,n > xα / mn/N のとき H0 を
棄却するのが有意水準 α の近似的な検定になる。代表的な棄却点の値は x0.05 = 1.36, x0.01 = 1.63
である。
N (168, 52 ) から 30 個の乱数を発生させたシミュレーションデータを tall.sim とし,tall のデータ
の分布の同等性を 2 標本のコルモゴロフ・スミルノフ検定を用いて検定してみた結果が以下の通
りです。有意水準 1% で有意になる。tall のデータの平均と分散は 172, 4.232 である。
16.5. ノンパラメトリック検定 121
 

> tall.sim <- rnorm(30, 168, 5)


> tall.sim
[1] 164.3649 170.5734 175.5381 169.0780 173.4944 169.9256 173.4780
[8] 175.3376 162.3839 169.0978 166.9275 165.2282 173.0298 166.6285
[15] 170.9800 168.4989 160.3604 164.3674 167.3143 167.8216 167.7574
[22] 171.8020 168.7307 165.7923 166.4840 168.2802 177.2791 161.0951
[29] 166.3703 167.7850
>
> ks.test(tall, tall.sim)
Exact two-sample Kolmogorov-Smirnov test
data: tall and tall.sim
D = 0.44, p-value = 0.0006324
alternative hypothesis: two-sided
 

連検定 ある事象がランダムに起こっているのか,何か傾向性があるのかを判断するための検定
が連検定とよばれる手法である。例えば,2 つの事象 O と X が,OXXXOOOXXOOO のように起
こるとき,全体は 12 回で,O が 7 回,X が 5 回起こる。O|XXX|OOO|XX|OOO のように同じ事
象が続く箇所で仕切ってみる。同じ事象が続いて起こることを連とよび,この場合,連の個数は
r = 5 になる。
一般に n 回の事象のうち連が r 個となる組み合わせを考えるときには,連に分けることは仕切
りをつけることに対応するので,仕切りとなる候補 n − 1 のうち仕切り r − 1 を選ぶ組み合わせに
なる。連の個数を表す確率変数を R としその確率分布を考え,中心極限定理を用いて検定するこ
とができる。
全体で n 個のうち,O が n1 個,X が n2 個,n = n1 + n2 とする。(n1 , n2 ) → ∞ のとき,(R −
µn1 ,n2 )/σn1 ,n2 →d N (0, 1) で近似できる。従って,
「H0 : 事象がランダムに起こる vs. H1 : 事象がラ
ンダムでない」の検定については,

|R − µn1 ,n2 | > σn1 ,n2 zα/2


のとき H0 を棄却するのが有意水準 α の近似的な検定になる。ただし,µn1 ,n2 , σn2 1 ,n2 は次で与えら
れる。
2n1 n2 2n1 n2 (2n1 n2 − n)
E[R] = µn1 ,n2 = 1 + , Var(R) = σn2 1 ,n2 =
n n2 (n − 1)
例えば,円周率の 20 桁は π = 3.1415926535897932384 であり,偶数を O,奇数を X で表すと,
XXOXXXOOXXXOXXXXOXOO となるので,n = 20, n1 = 7, n2 = 13, r = 10 となることがわ
かる。このとき,µn1 ,n2 = 10.1, σn1 ,n2 = 1.97 より,|10 − 10.1|/1.97 = 0.05 となり,有意水準 5%
で有意でない。従ってランダムであるという仮説は否定できない。
R では,パッケージ tseries に組み込まれている関数 runs.test を用いて検定を行うことができる。
円周率については,奇数には 1, 偶数には 0 を割り当ててデータを作り,runs.test を実行してみる。
 

> install.packages("tseries")
> library(tseries)
> r <- factor(c(1,1,0,1,1,1,0,0,1,1,1,0,1,1,1,1,0,1,0,0))
> runs.test(r)
Runs Test
data: r
Standard Normal = -0.050771, p-value = 0.9595
alternative hypothesis: two.sided
 
122 第 16 章 分布によらない推測法

以下のように,規則正しいデータについては棄却される。
 

> rr <- factor(c(1,0,1,0,1,0,1,0,1,0,1,0,1))


> runs.test(rr)
Runs Test
data: rr
Standard Normal = 3.2296, p-value = 0.001239
alternative hypothesis: two.sided
 

16.6 生存時間解析とカプラン・マイヤー推定
数値例としてこの分野でよく知られた Gehan(1965) のデータを解析してみよう。急性白血病を
薬物療法により寛解に達した患者を,治療薬 6-MP を投与する群 (処理群) とプラセボを投与する
群 (対照群) に 21 人ずつ割り付け,寛解から再発までの期間 (週数) を記録したのが次の表である。

対照群 1 1 2 2 3 4 4 5 5 8 8 8 8 11 11 12 12 15 17 22 23
処理群 6 6 6 6+ 7 9+ 10 10+ 11+ 13 16 17+ 19+ 20+ 22 23 25+ 32+ 32+ 34+ 35+

ここで 6+ は 6 週目に何らかの理由で打ち切られたこと (脱落) を意味する。対照群には xi = 1, 処


理群には xi = 0 とするダミー変数を入れて比例ハザードモデルを計算する。
まず,ハザード関数がワイブル分布に基づいた生存関数を考える。パラメータの推定値は α b=
−4.77, βb = 1.71, b̂ = 1.36 となり,H0 : β = 0 の検定は有意水準 1% で有意になる。ただし,R の
パッケージ survreg を用いるときには,
1
b̂ = b = −b̂ × (intercept), βb = −b̂ × (treatcontrol)
, α
scale

に対応することに注意する。この場合,ハザード関数の推定値は ĥ(t, x) = 1.36t0.36 e−4.77+1.71x ,生


存関数の推定値は S(t, b x) = exp{−t1.36 e−4.77+1.71x } となる。対照群の処理群に対するハザード比は
e1.71 = 5.5 となり,投薬をしないときのリスクが 5.5 倍になることがわかる。また生存率が 50% に
なる時点は S(t, b x) = exp{−t1.36 e−4.77+1.71x } = 0.5 の解を求めることにより,対照群では t = 7.2,
処理群では t = 25.4 となる。次の節で説明するカプラン・マイヤー法を用いて処理群と対照群の
生存関数 (階段関数) を描き,そこにワイブル分布による生存関数を重ねたものが図 16.5 である。
この範囲では両者は似た軌跡を描いている。
16.6. 生存時間解析とカプラン・マイヤー推定 123

1.0
0.8
6−MP

0.6
0.4
0.2
control
0.0

0 5 10 15 20 25 30 35

図 16.5: 対照群 (点線) と処理群 (実線) の生存関数


 

> install.packages("survminer")
> library(survival)
> SD <- read.table(file="C:gehan.txt", header=T)
> SD.surv <- survreg(Surv(time,cens)~1+treat,data=SD,dist="weibull")
>
> summary(SD.surv)
Call:
survreg(formula = Surv(time, cens) ~ 1 + treat, data = SD, dist = "weibull")
Value Std. Error z p
(Intercept) 3.516 0.252 13.96 < 2e-16
treatcontrol -1.267 0.311 -4.08 4.5e-05
Log(scale) -0.312 0.147 -2.12 0.034
Scale= 0.732
Weibull distribution
Loglik(model)= -106.6 Loglik(intercept only)= -116.4
Chisq= 19.65 on 1 degrees of freedom, p= 9.3e-06
Number of Newton-Raphson Iterations: 5
n= 42
 
124 第 16 章 分布によらない推測法
 

> b <- 1/0.732


> b
[1] 1.36612
> al <- - b*3.516
> al
[1] -4.803279
> be <- - b*(-1.267)
> be
[1] 1.730874
>
> exp(1.73)
[1] 5.640654
>
> exp( (log(log(2))+4.80-1.73)/1.37)
[1] 7.194726
> exp( (log(log(2))+4.80)/1.37)
[1] 25.43489
 
コックスの比例ハザードモデルを適用してみると,H0 : β = 0 の検定は有意水準 1% で有意と
なる。対照群の処理群に対するハザード比は e1.57 = 4.8 となり,投薬をしないときのリスクが 4.8
倍になると見積もられる。R でコックスの比例ハザードモデルを用いるときには,関数 coxph を
用いる。
 

> SD.cox <- coxph(Surv(time,cens)~1+treat,data=SD)


> summary(SD.cox)
Call:
coxph(formula = Surv(time, cens) ~ 1 + treat, data = SD)
n= 42, number of events= 30
coef exp(coef) se(coef) z Pr(>|z|)
treatcontrol 1.5721 4.8169 0.4124 3.812 0.000138 ***
---
Signif. codes: 0 ‘ *** ’ 0.001 ‘ ** ’ 0.01 ‘ * ’ 0.05 ‘ ’. 0.1 ‘ ’1
exp(coef) exp(-coef) lower .95 upper .95
treatcontrol 4.817 0.2076 2.147 10.81
Concordance= 0.69 (se = 0.041 )
Likelihood ratio test= 16.35 on 1 df, p=5e-05
Wald test = 14.53 on 1 df, p=1e-04
Score (logrank) test = 17.25 on 1 df, p=3e-05
>
> exp(1.57)
[1] 4.806648
 
図 16.5 は次のようにして描くことができる。
16.6. 生存時間解析とカプラン・マイヤー推定 125
 

> sr <- survreg(Surv(time,cens)~treat,SD,dist="weibull")


> sf <- survfit(Surv(time,cens)~treat, SD)
>
> plot(sf, lty=1:3)
> curve(1-pweibull(x,shape=1/sr$scale, scale=exp(coef(sr)[1])),add=TRUE, lty
=1)
> curve(1-pweibull(x,shape=1/sr$scale, scale=exp(coef(sr)[1]+coef(sr)[2])),
add=TRUE, lty=3)
> text(25,0.7,"6-MP",cex=1.5)
> text(5,0.2,"control",cex=1.5)
 

カプラン・マイヤー法 共変量の設定から離れるが,生存関数の分布系が特定できない場合でも
ノンパラメトリックに生存関数を推定する簡単な方法がある。例えば,ある物質の発がん性を調
べるため 15 匹の実験動物について物質投与から腫瘍発症までの日数が次のようであったとする。
40+ 40+ 42 42+ 45 45 45+ 48 50 50+ 57 58 58+ 100+ 120
一般に,n = n0 匹の動物について腫瘍発症が k 個の時点で起こるとし,その時点を t1 < t2 < · · · < tk
とする。時点 tj で腫瘍発症した個体数を xj , tj の直前まで発症していない個体数を nj とする。nj
は,tj までの脱落数と発症数の合計を n0 から引いた数である。
発症時点 t1 t2 ··· ti ··· tk
発症個体数 x1 x2 ··· xi ··· xk
直前まで発症していない個体数 n1 n2 ··· ni ··· nk

上の観測データについて同じ表を作成すると次のようになる。
発症時点 42 45 48 50 57 58 120
発症個体数 1 2 1 1 1 1 1
直前まで発症していない個体数 13 11 8 7 5 4 1
カプラン・マイヤー推定値 0.92 0.76 0.66 0.57 0.45 0.34 0.00

T を発症時間を表す確率変数とする。ベイズの定理を用いて生存関数を書き下し推定値を代入す
ると,カプラン・マイヤー推定量
j 
b j) =
Y xi 
S(t 1− (16.6.1)
i=1
ni

が得られる。上の数値例では,S(50) b = (1 − 1/13)(1 − 2/11)(1 − 1/8)(1 − 1/7) = 0.57 となり,


t = 50 日で生存率 57% と推定される。図 16.6 は,生存関数のカプラン・マイヤー推定値のグラフ
にワイブル分布による生存時間関数のグラフを重ねた図である。ワイブル分布の形状母数 b の推
定値は 2.43 になるのでハザード関数は増加関数になり,死亡率が増加する状況を表していること
がわかる。
 

> KP <- read.table(file="C:/KP.txt", header=T)


> surv.KP <- Surv(KP$time, KP$cens)
> fit.KP <- survfit(surv.KP ~ 1, data = KP)
> plot(fit.KP)
> sr <- survreg(Surv(time,cens)~1,KP,dist="weibull")
> sf <-survfit(Surv(time,cens)~1,conf.int=.8, KP)
>
> plot(sf, lty=1:3)
> curve(1-pweibull(x,shape=1/sr$scale, scale=exp(coef(sr)[1]+coef(sr)[2])),
add=TRUE, lty=3) %$
 
126 第 16 章 分布によらない推測法

1.0
0.8
0.6
0.4
0.2
0.0

0 20 40 60 80 100 120

図 16.6: カプラン・マイヤーとワイブルの生存関数
127

第 17 章 多変量解析手法

17.1 相関行列と偏相関
p 個の教科を (x1 , . . . , xp ) で表し,n 人の生徒の p 教科の成績が (x11 , . . . , xp1 ), . . . , (x1n , . . . , xpn )
であるとする。各教科の平均点を x1 , . . . , xp とすると,教科 xi と xj の標本共分散は

1X
n
Sij = (xik − xi )(xjk − xj )
n k=1

である。教科 xi の標本分散は Sii であるが,Si2 と表すこともある。Sij を (i, j)-成分とする p 次対


称行列を S = (Sij ) とし,p 変数の標本共分散行列とよぶ。教科 xi と xj の標本相関係数は

Sij Sij
rij = p =
Sii Sjj S i Sj

であり,rij を (i, j)-成分とする p 次対称行列 R = (rij ) を標本相関行列とよぶ。


次のデータは, 2010 年 47 都道府県の人口動態統計データである。第 1 行 (x1 ) が死亡率,第 2 行
(x2 ) が婚姻率で,1000 人あたりの 1 年間の数である。第 3 行 (x3 ) は 20 歳から 40 歳までの人口の
割合 (%) である。
 

> x1 <- c(10.1,11.7,11.9,9.4,13.2,12.1,11.3,9.8,10,10.3,7.8,8.2,


+ 8.1,7.6,11.3,11,10,10.6,10.9,10.9,9.9,9.8,8.1,10.3,8.4,9.1,8.8,
+ 9.4,9.4,12.1,11.9,12.8,10.5,9.7,12.3,11.9,11.2,11.5,12.8,9.3,
+ 10.9,11.5,10.6,10.9,10.9,11.9,7.3)
> x2 <- c(5.2,4.3,4.3,5.1,4,4.4,4.7,5.1,5.4,4.9,5.5,5.7,7.1,6.1,4.7,
+ 4.6,5,4.7,5,4.9,4.9,5.5,6.2,5.2,5.5,5.3,5.9,5.4,4.7,4.8,4.8,4.6,
+ 5.1,5.4,4.8,4.6,5,4.9,4.4,5.8,5,4.7,5,5.1,5.2,5.1,6.4)
> x3 <- c(23.3,21.0,20.7,25.4,19.1,20.7,21.9,24.1,24.4,23.2,26.4,
+ 25.9,29.9,27.5,21.9,22.2,23.8,22.0,22.2,21.6,22.9,23.3,26.9,
+ 23.1,25.9,25.8,26.0,24.3,23.3,20.9,21.8,19.9,23.6,24.0,21.1,
+ 21.5,22.2,21.5,20.6,25.3,22.0,20.5,21.9,21.8,21.1,20.9,26.1)
 
 

> cor(cbind(x1,x2,x3))
x1 x2 x3
x1 1.0000000 -0.8452115 -0.9371743
x2 -0.8452115 1.0000000 0.8922522
x3 -0.9371743 0.8922522 1.0000000
> mdata <- matrix(cbind(x1,x2,x3), 47,3)
 
3 つの変数の間の関係をプロットしたのが図 17.1 である。相関係数を求めてみると r12 = −0.845
となり,強い負の相関関係があることがわかる。また r13 = −0.937, r23 = 0.892 となる。
見かけの相関と偏相関
上のデータについて x1 と x2 の相関係数は r12 = −0.84 であった。しかし,死亡率と婚姻率とは
本来関係がないものと思われるのに,婚姻率が高い県では死亡率が低くなる傾向があるというの
128 第 17 章 多変量解析手法

7.0

7.0
13
6.5

6.5
12
6.0

6.0
11
5.5

5.5
10
5.0

5.0
9
4.5

4.5
8
4.0

4.0
8 9 10 11 12 13 20 22 24 26 28 30 20 22 24 26 28 30

図 17.1: 左図 (x1 , x2 ),中図 (x3 , x1 ),右図 (x3 , x2 ) のプロット

は不思議である。この場合,見かけの相関とよばれる現象が疑われる。これは,他の変数の影響
を受けて相関係数の値が見かけ上大きくなる現象のことである。
S12 S33 − S13 S23 r12 − r13 r23
r12|3 = p p =p p (17.1.1)
S11 S33 − S13 S22 S33 − S23
2 2
1 − r13
2
1 − r23
2

相関行列 R の逆行列を用いてさらに変形することができる。R = (rij ) の逆行列を R−1 = (rij ) と


書くことにすると,
r12
r12|3 = − √
r11 r22
と書けることがわかる。上のデータについて x3 の影響を取り除いた x1 と x2 の偏相関係数は

r12 − r13 r23 −0.845 − (−0.937) × 0.892


r12|3 = p p =p √ = −0.058
1 − r13 1 − r23
2 2 1 − (−0.937)2 1 − 0.8922

となって無相関に近くなり,婚姻率は死亡率とは関係がないという結論が出てくる。それぞれの
相関係数が r13 = −0.937, r23 = 0.892 となり,x3 が第 3 の変数となって x1 と x2 の間に見かけの
相関が生じていたことがわかる。婚姻率が高い県では適齢期の人口が多く x3 の値を増加させる傾
向にあり,死亡率の高い県では総人口に占める老人の割合が高くなるので x3 の値を減少させる傾
向にある。このため婚姻率と死亡率の間に見かけの相関が現れることになる。
R を用いて偏相関係数を求めるには,関数 ppcor を利用するのが便利である。estimate の値が
他を与えたときの偏相関係数を与えている。
17.2. 主成分分析 129
 

> install.packages("ppcor")
> library(ppcor)
> pcor(mdata)
$estimate
[,1] [,2] [,3]
[1,] 1.00000000 -0.05723347 -0.7584764
[2,] -0.05723347 1.00000000 0.5371178
[3,] -0.75847643 0.53711781 1.0000000
$p.value
[,1] [,2] [,3]
[1,] 0.000000e+00 0.7055766222 1.021401e-09
[2,] 7.055766e-01 0.0000000000 1.187742e-04
[3,] 1.021401e-09 0.0001187742 0.000000e+00
$statistic
[,1] [,2] [,3]
[1,] 0.0000000 -0.3802672 -7.720055
[2,] -0.3802672 0.0000000 4.223836
[3,] -7.7200549 4.2238363 0.000000
$n
[1] 47
$gp
[1] 1
$method
[1] "pearson"
 

17.2 主成分分析
一般に,p 次元データが n 個与えられるときに上述の直線を具体的に求める方法を説明しよう。
(??) で定義された xj = (xj1 , . . . , xjn )⊤ に対して aj = xj − xj 1 とし,w = (w1 , . . . , wp )⊤ とする。
P
∥w∥2 = w⊤ w = pi=1 wi2 とすると,条件 ∥w∥2 = 1 のもとで次の分散を最大にする解を求めるこ
とになる。

1X
n
1
{w1 (x11 − x1 )2 + · · · + wp (xpi − xp )2 }2 = ∥w1 a1 + · · · + wp ap ∥2
n i=1 n

A = (a1 , . . . , ap ) に対して w1 a1 + · · · + wp ap = Aw と書けることから, ∥w1 a1 + · · · + wp ap ∥2 =


(Aw)⊤ Aw = w⊤ A⊤ Aw と表される。標本共分散行列 S は S = n−1 A⊤ A と書けるから,次のよ
うに表される。
1 1
∥w1 a1 + · · · + wp ap ∥2 = ∥Aw∥2 = w⊤ Sw
n n

従って,∥w∥ = 1 なる条件のもとで w Sw を最大化する問題を解くことになる。線形代数で学ぶ
2

ように, λ は S の固有値で,w はその固有値に対応する固有ベクトルである。H = (w̃1 , . . . , w̃p ),


Λ = diag (λ1 , . . . , λp ) とおくと,H は直交行列になり

S = HΛH ⊤ = λ1 w̃1 w̃⊤ ⊤


1 + · · · + λp w̃ p w̃ p (17.2.1)

と表すことができる。いわゆる対称行列の対角化とスペクトル展開である。
130 第 17 章 多変量解析手法

主成分分析はスペクトル分解 (17.2.1) を利用して分析を行う手法である。w̃⊤ 1 S w̃ 1 = λ1 であ


るから w̃1 のときが一番長く λ1 になる。これを第 1 主成分とよぶ。各変数の重みは w̃1 の成分
w̃⊤1 = (w̃11 , . . . , w̃1p ) により与えられ,この成分の符号と大きさにより,第 1 主成分が何を意味
するのか検討しその解釈を与える。また w̃11 (x1i − x1 ) + · · · + w̃1p (xpi − xp ) の値を第 1 主成分
の i 番目のデータのスコアという。次に大きい固有値を第 2 主成分とよび,同様にして w̃⊤ 2 =
(w̃21 , . . . , w̃2p ) の符号と大きさにより第 2 主成分が意味するものの解釈を与えスコアを計算する。
tr (S) = λ1 + · · · + λp は分散の総和であるから全分散とよぶ。i 番目の固有値までの和を全分散で
割ったもの (λ1 + · · · + λi )/(λ1 + · · · + λp ) を累積寄与率とよぶ。また標本共分散行列 S の代わり
に標本相関行列 R を用いて主成分分析を行うこともできる。取り上げる主成分の個数は,標本相
関行列 R の固有値が 1 以上になる個数が目安になる。また,寄与率が 80% までの主成分を取り上
げる方法もある。
表 17.1 は, 気象庁による 2000 年の東京の月別平均気温と相対湿度のデータである。

表 17.1: 2020 年東京の平均気温と相対湿度

月 1 2 3 4 5 6 7 8 9 10 11 12
気温 7.6 6.0 9.4 14.5 19.8 22.5 27.7 28.3 25.6 18.8 13.3 8.8
湿度 51 38 44 55 68 74 70 69 69 67 63 46
スコア -1.3 -2.2 -1.6 -0.5 0.8 1.3 1.6 1.6 1.3 0.6 -0.1 -1.5

 

> temp <- c(7.6,6.0,9.4,14.5,19.8,22.5,27.7,28.3,25.6,18.8,13.3,8.8)


> mois <- c(51,38,44,55,68,74,70,69,69,67,63,46)
 
これは p = 2, n = 12 に対応する。この 2 次元のデータを標準化した上で主成分分析すると,
λ1 = 1.38, λ2 = 0.32 となり,第 1 主成分で 94% が説明される。第 1 主成分の固有ベクトルは
w̃1 = (0.707, 0.707)⊤ となるので主成分スコアは次の式で計算できる。

(気温 − 16.86) (湿度 − 59.50)


0.707 × + 0.707 ×
8.04 12.13
第 1 主成分は気温,湿度ともに大きいときに大きな値をとるので不快指数に近いものを表してい
るかもしれない。図 17.2 は横軸に第 1 主成分,縦軸に第 2 主成分をとって主成分スコアをプロッ
トしたものである。また第 1 主成分のスコアが表 17.1 に与えられている。第 1 主成分の絶対値は,
4 月 5 月 10 月 11 月で小さく,6 月∼9 月と 12 月∼3 月で大きいので,第 1 主成分の絶対値の大き
さが過ごしにくさの指標を表しているようである。例えば,気温が 22 度,湿度が 60% のときに
は,0.707 × (22 − 16.86)/8.04 + 0.707 × (60 − 59.50)/12.13 = 0.48 となり,10 月から 11 月にかけ
ての過ごしやすい気候に対応する。
R を用いた主成分分析の方法の一つは関数 prcomp を利用することである。
17.2. 主成分分析 131

−3 −2 −1 0 1 2 3

0.4

3
7
2

2
3

0.2
9

1
Var 1
12
4

Comp.2

0.0

0
Var 2

−1
−0.2
5
10

−2
1
−0.4 6

−3
11

−0.4 −0.2 0.0 0.2 0.4

Comp.1

図 17.2: 主成分スコアのプロット

 

> X <- matrix(cbind(temp, mois),nrow=12)


> X.new <- scale(X)
> TMI.pc <- prcomp(X.new)
> summary(TMI.pc)
Importance of components:
PC1 PC2
Standard deviation 1.377 0.32252
Proportion of Variance 0.948 0.05201
Cumulative Proportion 0.948 1.00000
> TMI.pc$rotation
PC1 PC2
[1,] 0.7071068 -0.7071068
[2,] 0.7071068 0.7071068
> TMI.pc$x
PC1 PC2
[1,] -1.3094114 0.31856385
[2,] -2.2077895 -0.29847197
[3,] -1.5591524 -0.24768722
[4,] -0.4696266 -0.05493979
[5,] 0.7540535 0.23679404
[6,] 1.3411469 0.34912242
[7,] 1.5651875 -0.34119936
[8,] 1.5596540 -0.45223618
[9,] 1.3222715 -0.21485365
[10,] 0.6078489 0.26642835
[11,] -0.1088487 0.51684476
[12,] -1.4953338 -0.07836525
> mean(temp)
[1] 16.85833
> mean(mois)
[1] 59.5
> biplot(TMI.pc)
%$
 
17.1 節で用いた人口動態統計データを標準化した上で主成分分析すると,固有値は λ1 = 1.67,
132 第 17 章 多変量解析手法

λ2 = 0.40, λ3 = 0.23 となり,第 1 主成分で 92% を説明することがわかる。第 1 主成分のスコアは


次の式で計算できる。

(死亡率 − 10.413) (婚姻率 − 5.106)


0.577 × − 0.577 ×
1.472 0.584
(20 歳∼40 歳の人口の割合 − 23.094)
− 0.578 ×
2.284
表 17.2 は, 11 都府県の第 1 主成分スコアの値を与えている。第 1 主成分は何か人口減少について
の指標を表しているようである。

表 17.2: 人口動態統計データのスコア

都府県 秋田 埼玉 東京 長野 愛知 大阪 和歌山 鳥取 高知 鹿児島 沖縄


スコア 3.2 -2.3 -4.6 0.78 -2.9 -2.1 1.5 1.2 2.3 1.2 -3.2

 

> mdata.new <- scale(mdata)


> mprc.pc <- prcomp(mdata.new)
> summary(mprc.pc)
Importance of components:
PC1 PC2 PC3
Standard deviation 1.6684 0.40162 0.23470
Proportion of Variance 0.9279 0.05377 0.01836
Cumulative Proportion 0.9279 0.98164 1.00000
> mprc.pc$rotation
PC1 PC2 PC3
[1,] 0.5773684 -0.5768835 -0.5777985
[2,] -0.5673346 -0.7923771 0.2242099
[3,] -0.5871773 0.1983534 -0.7847794
 
17.3. 判別分析 133
 

> mprc.pc$x
PC1 PC2 PC3
[1,] -0.26653876 0.01347837 0.08771616
[2,] 1.82559630 0.40747906 -0.09515212
[3,] 1.98110429 0.30309751 -0.07055231
[4,] -0.98361048 0.60557815 -0.39745351
[5,] 3.19320435 0.06179679 -0.14599226
[6,] 1.96241781 0.08916713 -0.11064197
[7,] 1.04912785 0.09990318 -0.09393649
[8,] -0.49267467 0.33603663 -0.10778583
[9,] -0.78264162 -0.12303929 -0.17419673
[10,] 0.12882154 0.33325224 -0.07149392
[11,] -2.25617880 0.77668684 0.04015703
[12,] -2.16503762 0.30541293 0.13174059
[13,] -4.59155442 -1.20646903 -0.66597803
[14,] -3.19982538 0.13694913 -0.02905390
[15,] 1.04912785 0.09990318 -0.09393649
[16,] 0.95150609 0.37904828 -0.11767560
[17,] -0.24008069 0.36725180 -0.12155426
[18,] 0.74902674 0.38275361 0.14631363
[19,] 0.52396238 -0.12417177 0.07502636
[20,] 0.77526534 -0.04067084 0.24277357
[21,] 0.04913101 0.46387166 0.18847963
[22,] -0.67539600 -0.27581130 0.32050778
[23,] -2.94669562 -0.24657752 0.01928503
[24,] -0.13673360 -0.08222055 0.07796340
[25,] -1.89246613 0.49827272 -0.02345382
[26,] -1.39819304 0.48661573 -0.34044044
[27,] -2.14971390 -0.19209884 -0.06124923
[28,] -0.99213732 0.10327905 0.09552959
[29,] -0.05550710 0.96562976 0.17047761
[30,] 1.52266819 -0.43585448 -0.02587412
[31,] 1.21294322 -0.27937714 -0.25658940
[32,] 2.24826675 -0.52565516 -0.03368755
[33,] -0.08976225 0.01845567 -0.21062564
[34,] -0.79742957 -0.04026933 0.08090045
[35,] 1.54966204 -0.49682287 -0.17303719
[36,] 1.48422369 -0.03423159 -0.23026817
[37,] 0.64156164 -0.24167225 -0.04266051
[38,] 1.03616670 -0.28435444 0.04175240
[39,] 2.26251892 -0.19368329 -0.35089209
[40,] -1.67670933 -0.31311469 -0.05529422
[41,] 0.57536804 -0.14153703 0.14373151
[42,] 1.48736698 -0.09998732 0.30854167
[43,] 0.48347160 -0.03271918 0.29577096
[44,] 0.52968770 -0.29449901 0.25080491
[45,] 0.61252152 -0.49087416 0.52964120
[46,] 1.15301071 -0.76431098 0.16768854
[47,] -3.24884300 -0.27389739 0.68467380
 

17.3 判別分析
血液検査でヘモグロビン (HbA1c) の数値が 6.5 を超えると糖尿病が疑われるが,6.5 は健常者の
群と糖尿病患者の群とを判別する閾値を与えている。一般に図 17.3 のように 2 つの群を区別する
ルールを与えることを判別分析とよぶ。
134 第 17 章 多変量解析手法

4
2
0.0
0.04

0.06

0.08

3
0.12
0.14

0.16

8
0.1 0.02

2
0.06

1
0.1
0.1

0.16

0
0.02

0.14

0.12
−1

0.08

0.04

2
−2

0.0

−4 −3 −2 −1 0 1 2

図 17.3: 2 群の判別

正規分布の判別式 2 つの正規分布 Π1 : N (µ1 , σ12 ), Π2 : N (µ2 , σ22 ) を判別するには,2 log f (x|µi , σi2 ) =
− log(2πσi2 ) − (x − µi )2 /σi2 と書けるので,
(x − µ2 )2 (x − µ1 )2 σ12
− > log + 2C =⇒ Π1 に判別
σ22 σ12 σ22
となり,逆の不等式のとき Π2 に判別することになる。i = 1, 2 に対して,µi , σi2 が未知の場合は,
Pni Pni
N (µi , σi2 ) に従う独立な確率変数 Xi1 , . . . , Xini に基づいて X i = n−1
i j=1 X ij , S 2
i = n −1
i j=1 (Xij −
X i ) により µi , σi を推定し,上の判別ルールに代入すればよい。
2 2

等分散の場合には σ12 = σ22 = σ 2 とおくと


 µ1 + µ2  (µ1 − µ2 )
x− > C =⇒ Π1 に判別
2 σ2
と表される。ここで σ 2 は σ̂ 2 = (n1 S12 + n2 S22 )/(n1 + n2 ) で推定される。
線形判別と2次判別 上の例を多変量正規分布に拡張してみよう。2 つの p-変量正規分布 Π1 :
Np (µ1 , Σ1 ), Π2 : Np (µ2 , Σ2 ) を判別するには
|Σ1 |
(x − µ2 )⊤ Σ−1 ⊤ −1
2 (x − µ2 ) − (x − µ1 ) Σ1 (x − µ1 ) > log + 2C
|Σ2 |
のとき Π1 に判別し,逆の不等式のとき Π2 に判別すると表される。これを 2 次判別関数とよぶ。
i = 1, 2 に対して,µi , Σi が未知の場合は,Np (µi , Σi ) に従う独立な確率変数 X i1 , . . . , X ini に基
P ni Pni
づいて X i = n−1
i
−1
j=1 X ij , S i = ni

j=1 (X ij − X i )(X ij − X i ) により µi , Σi を推定し,上の
判別ルールに代入すればよい。
2 つの共分散行列が等しい場合,Σ1 = Σ2 = Σ とおくと
 µ + µ2 ⊤ −1
x− 1 Σ (µ1 − µ2 ) > C =⇒ Π1 に判別 (17.3.1)
2
と表される。これをフィッシャーの線形判別関数とよぶ。これは次のように書き直すことができる。

(µ1 − µ2 )⊤ Σ−1 (x − µ1 ) + D2 /2 > C (17.3.2)


17.4. 因子分析 135

ここで D2 = (µ1 − µ2 )⊤ Σ−1 (µ1 − µ2 ) はマハラノビスの距離とよばれる。µ1 , µ2 , Σ が未知の場


合には µb 1 = X 1, µ
b 2 = X 2 で推定され,Σ は Σ b = (n1 S 1 + n2 S 2 )/(n1 + n2 ) で推定される。
Z = (µ1 − µ2 )⊤ Σ−1 (x − µ1 ) + D2 /2 とおくと,Π1 が正しいときには Z ∼ Np (D2 /2, D2 ) となり
誤判別確率は P(Z < C) を計算すればよい。同様に Π2 が正しいときには Z ∼ Np (−D2 /2, D2 ) と
なり誤判別確率は P(Z > C) を計算すればよいことになる。
ロジスティック判別 2値データの回帰モデルとしてロジスティック回帰モデルを学んだ。これは
p(x)
log = α + β ⊤ x, β ⊤ x = β1 x1 + . . . + βp xp
1 − p(x)
のように,0, 1 データにおいて 1 が生ずる確率のロジットを x の線形関数で関係づけるモデルであ
る。1 に対応する群を Π1 , 0 に対応する群を Π2 とすると,p(x) > 1/2 なら Π1 に判別し, p(x) < 1/2
なら Π2 に判別するルールを考える。このことは,上の式より,α + β ⊤ x > 0 なら Π1 に判別し,
α + β ⊤ x < 0 なら Π2 に判別することに対応する。
いま,n 個のデータ (y1 , x1 ), . . . , (yn , xn ) が与えられるとする。yi は,0 か 1 の値をとりベルヌー
イ分布 Ber(p(xi )) に従うとすると,尤度関数は
Y
n
{p(xi )}yi {1 − p(xi )}1−yi
i=1

となる。この尤度関数を最大化する α, β の推定値 α b を求めて判別式に代入すると,α


b, β b ⊤x > 0
b+β
b ⊤ x < 0 なら Π2 に判別する方式が得られる。これをロジスティック判別と
b+β
なら Π1 に判別し, α
よぶ。
13.1 節でとりあげた R のデータセット esoph は,食道ガンと喫煙・飲酒との関係を調べたもの
で,x1 が 6 つの年齢階級,x2 が 4 つの喫煙量の階級,x3 が 4 つの飲酒量の階級で,食道ガンの罹患
者と非罹患者の2群についてデータが得られている。i 番目のデータについて xi = (x1i , x2i , x3i )⊤
とおくと,推定されたロジット関数は (13.1.2) より
p(xi )
log = −7.16 + 0.74x1i + 1.10x2i + 0.43x3i
1 − p(xi )
で与えられる。従って,−7.16 + 0.74x1i + 1.10x2i + 0.43x3i > 0 なら食道ガンが疑われるグループ
に判別され,−7.16 + 0.74x1i + 1.10x2i + 0.43x3i < 0 なら非罹患者群に判別される。

17.4 因子分析
多変数のデータを少数の潜在因子によって説明する方法が因子分析である。
n 個の 3 次元データ (z11 , z21 , z31 ), . . . , (z1n , z2n , z3n ) について 2 因子モデルを考える。


 z1i = a11 f1i + a12 f2i + u1i , u1i ∼ N (0, d1 )
2

z2i = a21 f1i + a22 f2i + u2i , u2i ∼ N (0, d22 ) i = 1, . . . , n



 z = a f + a f + u , u ∼ N (0, d2 )
3i 31 1i 32 2i 3i 3i 3

ここで, u1i , u2i , u3i は独自因子, f1i , f2i は共通因子とよばれ,f1i ∼ N (0, 1), f2i ∼ N (0, 1) に従
い,f1i , f2i , u1i , u2i はすべて独立である。f1i , f2i は直接観測できない変量なので潜在因子, a1 =
(a11 , a21 , a31 )⊤ は f1i の係数で f1i の因子負荷量, a2 = (a12 , a22 , a32 )⊤ は f2i の因子負荷量とよば
れる。      
z1i a11 a12 ! u1i
    f1i  
z i = z2i  , A = (a1 , a2 ) = a21 a22  , f i = , ui = u2i 
f2i
z3i a31 a32 u3i
136 第 17 章 多変量解析手法

とおくと,2 因子モデルは行列を用いて次のように表すことができる。

z i = f1i a1 + f2i a2 + ui = Af i + ui , i = 1, . . . , n (17.4.1)

因子負荷量の行列 A と D の推定には,主因子分析法,セントロイド法などが利用される。また
z i ∼ N3 (0, Σ), i = 1, . . . , n, に注意すると,最尤法を用いて推定することもできる。推定方法の具
体的なやり方は多変量解析の専門書を参照されるのがよいが,R に組み込まれているパッケージを
利用することもできる。データから因子負荷量の推定値 â1 = (â11 , â21 , â31 )⊤ , â2 = (â12 , â22 , â32 )⊤
が求まると,この符号や大きさから因子 f1 , f2 の解釈を与えることができる。因子の推定には回
帰法とバートレット法などが知られている。因子モデルの大きな特徴は推定に回転の自由度があ
るという点である。因子分析では因子の解釈がしやすいような回転を選ぶことが重要である。因
子の解釈のためには,いくつかは絶対値が大きく,残りがゼロに近いという形になるような回転
H を与えることが望ましい。このような形を単純構造とよぶ。回転方法にはバリマックス法,プ
ロマックス法などの直交回転が知られている。
簡単な例として,中学生 20 人の 5 教科の成績を因子分析にかけてみる。国語, 社会, 数学, 理科,
英語の順に並んでいる。
 

> Sdata <- matrix( c(


37, 22, 56, 61, 13,
93, 87, 78, 100, 90,
69, 54, 58, 68, 43,
58, 57, 37, 56, 21,
69, 52, 33, 61, 53,
75, 63, 54, 57, 58,
35, 34, 21, 38, 28,
11, 10, 31, 37, 11,
53, 38, 85, 85, 72,
47, 50, 23, 35, 27,
69, 55, 79, 63, 71,
80, 86, 82, 90, 93,
43, 33, 22, 11, 44,
76, 66, 66, 76, 85,
48, 45, 71, 76, 53,
48, 53, 73, 59, 51,
49, 39, 63, 62, 42,
34, 50, 43, 65, 40,
76, 70, 87, 70, 71,
80, 65, 45, 52, 73), 5, 20)
 
R を用いて因子分析を行うには,パッケージ dplyr を用いて関数 factanal を利用するのが便利で
ある。項目数が 5 なので因子数を 2 とする.
17.5. クラスター分析 137
 

> install.packages(’dplyr’)
> library(dplyr)
> SS <- data.frame(t(Sdata))
> SS.new <- scale(SS)
> SS.fac <- factanal(SS.new, factors=2,rotation="promax", scores="Bartlett")
> SS.fac
Call:
factanal(x = SS.new, factors = 2, scores = "Bartlett", rotation = "promax")
Uniquenesses:
X1 X2 X3 X4 X5
0.091 0.105 0.005 0.277 0.202
Loadings:
Factor1 Factor2
X1 1.001
X2 1.014 -0.105
X3 -0.146 1.090
X4 0.165 0.730
X5 0.663 0.300
Factor1 Factor2
SS loadings 2.518 1.828
Proportion Var 0.504 0.366
Cumulative Var 0.504 0.869
Factor Correlations:
Factor1 Factor2
Factor1 1.000 -0.674
Factor2 -0.674 1.000
Test of the hypothesis that 2 factors are sufficient.
The chi square statistic is 0.9 on 1 degree of freedom.
The p-value is 0.343
 
このときプロマックス法で回転したときの因子負荷量が表??で与えられる.明らかに,因子 1
は文系能力,因子 2 は理系能力を表している.2 つの因子の累積寄与率が 87% なので,2 つの潜在
能力で 8.7 割ほど説明がつくことになる.

表 17.3: 5 教科の成績についての因子負荷量

項目 国語 社会 数学 理科 英語
因子 1 1.00 1.01 -0.15 0.17 0.66
因子 2 0.00 -0.11 1.10 0.73 0.30

17.5 クラスター分析
17.5.1 階層的分類法
クラスター分析の方法は階層的分類法と非階層的分類法に分かれる。階層的分類法は,小さい
クラスターから出発して ‘似たもの同士’ を逐次融合しながら大きなクラスターを構成していくも
のである。非階層的分類法は,予めクラスターの個数と各クラスターの核となる点を決め,そこ
から出発してクラスターを構成するもので,K-平均法 (K-mean method) が代表的である。大量の
データがある場合には,前者はすべての個体間で ‘似たもの同士’ かを調べるので計算が大変にな
138 第 17 章 多変量解析手法

るが,後者は計算量が少なくて済むという利点がある。この節では,前者についてクラスタリン
グの過程を説明しよう。
まず,‘似たもの同士’ の定義を与える必要がある。これは類似度とよばれ,個体間の距離に相当す
るもので測る。例えば,n 個の 3 次元のデータ x1 , . . . , xn が与えられ,各 xi は xi = (x1i , x2i , x3i )⊤
と書けるとする。2 つの個体 xi と xj の距離を d(xi , xj ) で表す。その代表的なものとしては

d1 (xi , xj ) =|x1i − x1j | + |x2i − x2j | + |x3i − x3j |


q
d2 (xi , xj ) = (x1i − x1j )2 + (x2i − x2j )2 + (x3i − x3j )2

があり,d1 (xi , xj ) を L1 距離,d2 (xi , xj ) をユークリッド距離とよぶ。すべての個体間で距離を計


算することができるので,それを行列 D で表したものを距離行列とよぶ。すなわち,D の対角成
分は 0 で,D の (i, j) 成分は d(xi , xj ) である。クラスターを構成していく方法には,最短距離法,
最長距離法,群平均法,重心法,メディアン法があるが,ここでは最も簡単な最短距離法を用い
ることにする。これは,2 つのクラスター Ca と Cb の間の距離を
(a) (b) (a) (b)
d(Ca , Cb ) = min{d(xi , xj ) | xi ∈ C a , xj ∈ C n }
i,j

で定義して,逐次クラスターを構成する方法である。
クラスタリングの一連のプロセスはデンドログラム (樹形図) を用いて視覚的に表現することがで
きる。17.1 節で扱った 47 都道府県の人口動態統計データ (死亡率, 婚姻率, 20∼40 歳人口割合) を群平
均法で距離をいれてクラスタリングすると,デンドログラムは図 17.4 で表される。6 個のクラスター
に分類する場合,A(13), B(14,23,47), C(5,32,39), D(4,11,12,25,26,27,40), E(1,8,9,10,17,21,22,24,28,29,33,34),
D(その他) のクラスターになる。小さいクラスターの名前を表示すると,A は東京,B は神奈川,
愛知,沖縄, C は秋田,島根,高知となる。
5
4
3
Height

2
1
0

28
9
17
8
34
29
22
21
33
10
1
24
5
32
39
38
31
36
46
30
35
42
2
3
6
45
20
44
18
43
37
19
41
16
7
15
13
40
4
26
11
27
12
25
47
14
23

図 17.4: 人口動態データによる都道府県のデンドログラム

表のデータを見るだけは都道府県の特徴がはっきりとはわからないが,クラスタリングを通し
て特徴が見えてくる。
R を用いてデンドログラムを表示するには次のパッケージを組み込む必要がある。
 

> install.packages("plotly")
> install.packages("ggdendro")
> library(plotly)
> library(ggdendro)
 
17.5. クラスター分析 139
 

> mdata.clus <- dist(mdata) #クラスター分析を行う。


> (mdata.hc <- hclust(mdata.clus, method="average"))
Call:
hclust(d = mdata.clus, method = "average")
Cluster method : average
Distance : euclidean
Number of objects: 47
> summary(mdata.hc)
Length Class Mode
merge 92 -none- numeric
height 46 -none- numeric
order 47 -none- numeric
labels 0 -none- NULL
method 1 -none- character
call 3 -none- call
dist.method 1 -none- character
> plot(mdata.hc, hang=-1,cex=0.5, xlab="", sub="", main="") #デンドログラムを
表示
 

17.5.2 有限混合モデルと EM アルゴリズム


有限混合モデルを用いてクラスター分析を行うことができる。m 個の分布の混合モデルは次の
ように記述される。(X, Y ) を確率変数とし,Y は P(Y = j) = πj , j = 1, . . . , m, π1 + · · · + πm = 1
を満たす離散型確率変数で,Y = j を与えたときの X の条件付き確率 (密度) 関数を fj (x|θj ) とす
る。このとき,X の周辺確率 (密度) 関数は有限混合分布となり

fX (x) = π1 f1 (x|θ1 ) + · · · + πm fm (x|θm )

と表される。クラスター分析の文脈では,m がクラスターの個数,fj (x|θj ) が各クラスターに従う


確率分布に対応する。(πj , θj ), j = 1, . . . , m, はすべて未知パラメータである。混合分布は階層モ
デルとして
X|(Y = j) ∼ fj (x|θj ), Y ∼ P(Y = j) = πj , j = 1, . . . , m
のように表され,ベイズの定理から,X = x を与えたときの Y = j となる条件付き分布は

fX,Y (x, j) fj (x|θj )πj


πY |X (j|x) = =
fX (x) π1 f1 (x|θ1 ) + · · · + πm fm (x|θm )

と書けるので,観測値 x を, j = 1, . . . , m の中で πY |X (j|x) を最大にするクラスター j に振り分け


るのが,混合分布によるクラスタリングの方法である。
尤度を直接最大化することによって MLE を求めることができるが,計算が大変である。そこで,
次の EM アルゴリズムを利用する。EM アルゴリズムを利用するために,独立な確率変数 Z 1 , . . . , Z n
を導入する。Z i = (Zi1 , . . . , Zim ),実現値を z i = (zi1 , . . . , zim ) とし,zi1 , . . . , zim のうち一つが 1
で残りがすべて 0 であるとする。P(Zij = 1) = πj とすると,(Xi , Z i ) の同時確率 (密度) 関数は次
のように表される。
m h
Y i
zij zij
fXi ,Z i (xi , z i ) = {fj (xi |θj )} πj (17.5.1)
j=1
P
周辺密度は fXi (xi ) = zi fXi ,Z i (xi , z i ) = π1 f1 (xi |θ1 ) + · · · + πm fm (xi |θm ) と書ける。確率変数 Z i
を導入することによって拡張された尤度方程式の解が明示的に得られるようになる。しかし,Xi
140 第 17 章 多変量解析手法

は観測可能であるが,Z i は観測できない確率変数である。そこで,Z i が含まれている項を,Xi


を与えたときの条件付き確率分布に関する期待値をとることによって置き換えるのが,EM アル
ゴリズムのアイデアである。
全変数 (X1 , Z 1 ), . . . , (Xn , Z n ) に基づいた対数尤度関数は

X
n X
m
ℓ(π, θ) = Zij {log fj (Xi |θj ) + log πj }
i=1 j=1

と表される。EM アルゴリズムの E ステップは X を与えたときの Zij の条件付き期待値をとるこ


とに対応するので
n X
X m
E[ℓ(π, θ)|X] = E[Zij |X]{log fj (Xi |θj ) + log πj }
i=1 j=1

と書けることがわかる。

fj (Xi |θj )πj


P (j|Xi , π, θ) = E[Zij |X] = Pm
k=1 fk (Xi |θk )πk
Pn
より,πj = n−1 i=1 P (j|Xi , π, θ) となる。EM アルゴリズムは次で与えられる。初期値 (π (0) , θ (0) )
から出発して (π (t) , θ (t) ) が得られたとする。このとき,j = 1, . . . , m に対して

1X
n
(t+1)
πj = P (j|Xi , π (t) , θ (t) ) (17.5.2)
n i=1

とし,θ (t+1) を次の方程式の解とする。


X
n

P (j|Xi , π (t) , θ (t) ) log fj (Xi |θj ) (t+1)
=0 (17.5.3)
i=1
∂θj θj =θj

こうして (π (t+1) , θ (t+1) ) が得られ,収束するまで繰り返し計算を続ける。


(t) (t) (t)
多変量正規分布 Np (µj , Σj ) の場合は, θ (t) = (µ1 , . . . , µm , Σ1 , . . . , Σ(t) m ) とおくと,同様にして
次のように表される。
Pn (t) (t)
(t+1) i=1 P (j|Xi , π , θ )X i
µj = Pn (t)
(t)
i=1 P (j|Xi , π , θ )
Pn
)(X i − µj )⊤
(t+1) (t+1)
i=1 P (j|Xi , π , θ )(X i − µj
(t) (t)
(t+1)
Σj = Pn (t) (t)
i=1 P (j|Xi , π , θ )

You might also like