統計モデリング 第九回 配布資料 - osaka...
TRANSCRIPT
2016年6月21日@統計モデリング
担当:田中冬彦
統計モデリング 第九回 配布資料
文献: a) A. J. Dobson and A. G. Barnett: An Introduction to Generalized Linear Models 3rd ed., CRC Press, 2008.
配布資料の一部は以下からもDLできます. 短縮URL http://tinyurl.com/lxb7kb8
b) J. J. Faraway: Extending the Linear Model with R: Generalized Linear, Mixed Effects and Nonparametric Regression Models., (Texts in Statistical Science), Chapman and Hall/CRC, Boca Raton, 2006.
ベイズ統計の基本と事後分布の数値的なサンプリング方法を学んだ
前回までの内容
ベイズ解析で再アプローチ
第八回と第九回では, これまでの知識を前提としてさまざまなモデルとベイズ解析の例をみていく
参考:
第十回 (6/28): 第二回 グループ発表
7/5: 基礎工入試で休講
1. Gibbs Sampling と 階層モデル
2. 線形モデルでのベイズ的なアプローチ
3. ベイズ予測分布 (時間があれば)
4. 一般化線形モデルでのベイズ的なアプローチ
第8,9 回でとりあげるテーマ
今後の予定
第十回 グループ発表2
第十二回 スパースモデリング2
x
y
第九回 一般化線形モデルのベイズ解析
第十一回 スパースモデリング1・因子分析
今日の内容
1.一般化線形モデル(GLM)の復習 2.一般化線形モデルのベイズ解析 3.MCMCサンプリングの例 4.MCMCサンプルを用いた分析例 5.ロジット回帰の拡張
nλλ ,,1 各ポンプの故障率
→ ポンプの種類と運転期間以外に故障率を説明する変数なし
原発ポンプの故障率
もし、それぞれ、説明変数をとることができると解析はどのようになる?
前回の復習
スポーツ射撃の命中率
nqq ,,1
→ 各高校生の命中率を説明する変数なし
各高校生の命中率
・海の近くか否か ・ポンプの製造年代 ・・・・
説明変数の例
・視力 ・使用した機材
No ポンプ形式 観測度数
運転年数
1 竪型特X 16 887.38 2 横型高圧 16 1832.21 3 竪型特Y 5 424.62 4 竪型ーC 4 877.38 5 竪型ーA 1 861.50 6 横型低圧 1 1440.70
生データ:型式別ポンプ故障観測度数
文献: 真田 高宥, 中村 誠: BWRプラントPSA対象ポンプの故障原因
分析と故障率評価~ 形式別およびプラント個別ポンプ故障率の仮説検定, 原子力技術研究所 研究報告L08008, 2009.
原発ポンプの故障率
小分けにして分析することが可能 (ほとんどが観測度数 =0 になるが ベイズ的なアプローチが可能)
考えてみよう スポーツ射撃の例(詳細は前回資料)で、
中心部への命中率に影響を与える要素を挙げてみよ.
ここでは「筋力」など漠然としたものでよい.
1.一般化線形モデル(GLM)の 復習
以下のような n件のデータを仮定 (欠測・はずれ値は考えない)
例:ガラパゴス諸島のカメの種類(第三回)
> galapagos NS Area Anear Dist DistSC Elevation Bartolome 31 1.24 572.33 0.6 26.3 109 Caldwell 3 0.21 0.78 2.8 58.7 114 .....
GLMによるモデリング【復習】
npnn
p
p
xxy
xxyxxy
,,;
,,;
,,;
1
2212
1111
iy は確率変数 の実現値 iY
),,( 1 ipi xx
各 i=1,2,...,n について
は説明変数 (共変量)
説明変数 (共変量)
GLMによるモデリング【復習】
iy は確率変数 の実現値 iY
),,( 1 ipi xx
(1) 各 i=1,2,...,n について
の分布は, 適当な 指数型分布族 を仮定 iY
iY と の線形和 を以下のように結びつける
(2) 各 i=1,2,...,n について
一般化線形モデル(GLM)によるモデリング
][E ii Y=µ
∑=
=p
jijji xg
1)( βµ
)(µg
とおいて, 適当な関数 g() を用いて
∑=
p
jijj x
1β
は リンク関数 という
(G)
(L)
(M)
典型的な例【復習】
(1) 2値のカウントデータ
ii ky ,,1,0~ =
1. 目的変数の分布 ][E ii Y=µ
(上限あり) iii kyy /~=
,1,0=iy (上限なし)
),(~~iii kBinY µ
)(~ ii PoY µ
(2) 連続値
0>iy ガンマ分布など
∞<<∞− iy
(半直線)
(実数全体) 正規分布など
※ここではスカラー変数のみを考える
その他, 負の二項分布など
),(~ 2σµii NY
),(~~ii aGaY µ
ayy ii /~=
典型的な例【復習】
(1)
µµµ−
=1
log)(g
2. g() の形状 ][E ii Y=µ
(← (絶対)連続確率変数の累積分布関数で狭義単調増加なら, 逆関数を利用可)
∞<<∞− iµ (実数全体)
を実数全体に1:1でうつすことがポイント
10 ≤≤ iµ
)(1 µ−Φ
ロジット関数
プロビット: 標準正規分布の累積分布関数の逆関数
(2) 0≥iµ
µµ log)( =g
(3)
µµ =)(g
2.一般化線形モデルのベイズ解析
ベイズによるアプローチ
および他のパラメータに事前分布を導入 βベイズによる方法
ベイズ解析の流れ【復習】
∑=
=p
jijji xg
1)( βµ
1,2,4,5 の選択肢は次に紹介
Step. 1: 統計モデルの設定
Step. 2: 尤度関数を具体的に書き出す
Step. 3: 事前分布の設定
Step. 4: 事後分布の計算 (MCMCサンプリング)
Step. 5: 事後分布 (MCMCサンプル)を用いた分析
ここが目標
グループワークなどで評価
選択肢【不要なものあり】
次に答え合わせ!
・統計モデルの設定
・尤度関数を具体的に書き出す
・事後分布の計算 (MCMCサンプリング)
・事後分布 (MCMCサンプル)を用いた分析
・読者モデルに応募
・散布図の計算 (相関分析)
・都知事候補を具体的に書き出す
・PM2.5分布の計算 (中国でサンプリング)
・事前分布 (MCMCサンプル)を用いた分析
-5 0 5 10 15 20 25 30
0.0
0.2
0.4
0.6
0.8
1.0
Fitted Curve by Logit Regress
Temperature(C)
Pro
b of
dam
age
23,,2,1 =i
気温(C)
Oリング破損数と気温の関係 (再掲)
破損数 破損率 摂氏温度 5 5/6 11.6 ・・・・ ・・・・ 0 0/6 27.2
Oリングの破損数 iy~ix
第一回で紹介したデータ (23件) ・Oリング: スペースシャトルに6つ搭載 ・毎回の打ち上げ時, 6つのうちいくつか破損 ・共変量は気温のみ
][ ii YE=µ
ii
ii xg 211
log)( ββµ
µµ +=
−
=
ロジスティック回帰(ロジット回帰)で分析する!!
Step1
したがって,
23,,2,1 =i
気温(C)
Oリングの破損数 ),6(~~ii BinY µ
Oリングの破損率
6
~i
iYY =
とおくと の動く範囲は iµ
10 ≤≤ iµ
Step2
23,,2,1 =i
(a) i 番目の打ち上げでOリングが 破損する確率は Step1のモデルを用いて
( ) ii mi
mi
iii m
mY −−
== 6)1(
6~Pr µµ
(b) は を用いて具体的に書くことができ以下のようになる. iµ
im
ix,, 21 ββ
i
i
x
x
i ee
21
21
1 ββ
ββ
µ +
+
+=
(c) 尤度関数は
( ) ∏∏=
−
++
+
=
+
+
===
23
1
623
12121
21
11
16~Pr)(
i
m
x
m
x
x
iiii
i
i
i
i
i
eee
mmYL ββββ
ββ
β
Step3-Step4
たとえば以下のように設定 (分散を十分大きく取る)
)10,0(~),10,0(~ 62
61 NN ββ
Step3: 事前分布の設定
Step4:
標本数 M → ∞ で, 事後分布からの独立標本とみなせる
※ただし、ここでは説明の都合で一様分布 (improper!)を利用
( ) )|(~, 21 Dβπβββ =
MCMCサンプルの生成 (MCMCサンプリング)
事後分布
)()2()1( ,,, Mβββ
3.MCMCサンプリングの例
一般MH法(再掲) 今,
(a) 行き先候補
Θ∈tz が所与の下 1+tz
)|(~ tprop zzqz
次の行き先 を条件付き分布で定める.
(b) しきい値を計算, 本当に移動するか踏みとどまるか決める
1≥ρ propt zz =+1
1<ρ propt zz =+1ρ確率 で
確率 ρ−1 で tt zz =+1
)|()|()|()|(
xzzzqxzzzq
ttprop
proppropt
ππ
ρ =
次に, ロジット回帰の例で(a), (b) で必要な計算を見てみる
一般MH法の要点
(a) 行き先候補
( ) 221 R, ∈= ttt βββ 1+tβ次の行き先 を条件付き分布で提案.
(b) しきい値の計算
)|()()|()(
DqDq
ttprop
proppropt
βπβββπββ
ρ−
−=
← 尤度関数の比
1. 現在地を中心とする正規分布 (分散はサンプリングを見て調整)
)|()()|()(
)|()|(
tt
propprop
t
prop
DpDp
DD
ββπββπ
βπβπ
== 2. 事前分布に一様分布
)|()|(
t
prop
DpDp
ββ
=
1)( ∝βπ
))2.0(,(~),1,(~ 22211tproptprop NN ββββ
MH法の実装例 (a) 行き先候補
なら更新 (それ以外は却下) )(log)(log curprop LL ββ −
for(j in 2:Nsim){ beta_prop[1] <- beta_cur[1] + rnorm(1, sd=SDEV); beta_prop[2] <- beta_cur[2] + rnorm(1, sd=SDEV2); log_ratio <- like(beta_prop[1], beta_prop[2]) - like(beta_cur[1], beta_cur[2]); u <- runif(1); if ( log(u) log_ratio ){ beta_prop <- beta_cur; } beta <- rbind(beta, beta_prop); beta_cur <- beta_prop; }
Rでの実装例(一部抜粋; 上のアルゴリズムと異なったものになる)
(b) 更新ステップ
ulog)1,0(~ Uu
))2.0(,(~),1,(~ 22211curpropcurprop NN ββββ
tcur ββ ←
→ 時系列データとして相関が0ならよい
MCMCのチェック
old.par <- par(no.readonly = TRUE);par(mfrow=c(2,1)); beta_chk1 <- beta[(floor(Nsim/2)):Nsim, 1];beta_chk2 <- beta[(floor(Nsim/2)):Nsim, 2]; acf(beta_chk1);acf(beta_chk2); par(old.par);
Rでの実装例(一部抜粋)
簡便なチェック方法
)()2()1( ,,, Mβββ が独立に生成したように見える
MCMCサンプルの自己相関関数をプロット
MCMCの最初の方のステップのこと. 初期値依存性が残るため Burn-in 部分は捨てる. 明確な基準はなく, たとえば, MCMCサンプルの後ろ半分のみを使う.
自己相関関数の定義? (必要に応じて 統計研究室の人に聞こう!)
理想的なMCMCサンプル
Burn-in ステップ
うまくいってない例 左:パラメータの値の変化を時系列プロット
0 100 200 300 400 500
24
6
beta1
Index
beta
[(flo
or(N
sim
/2)
0 100 200 300 400 500
-0.6
-0.4
-0.2
beta2
Index
beta
[(flo
or(N
sim
/2))
→ 100ステップくらい同じ場所にとどまっている・・・
0 5 10 15 20 25
0.0
0.2
0.4
0.6
0.8
1.0
Lag
AC
F
Series beta_chk
右:パラメータを時系列データと見た自己相関関数
うまくいっている例
2000 2500 3000 3500 4000
-5.0
-3.5
-2.0
beta1
iteration
beta
1
2000 2500 3000 3500 4000
-0.7
-0.4
-0.1
beta2
iteration
beta
2
0 5 10 15 20 25 30
0.0
0.4
0.8
LagAC
F
Series beta_chk1
0 5 10 15 20 25 30
0.0
0.4
0.8
Lag
ACF
Series beta_chk2
-5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
Random Walk Monte Carlo
beta1
beta
2
プログラム例 plot( beta[(floor(Nsim/2)):Nsim, 1], beta[(floor(Nsim/2)):Nsim, 2], type="b", xlab="beta1", ylab="beta2", main="Random Walk Monte Carlo"); points(beta_mle[1], beta_mle[2], col=2, pch=2);
4.MCMCサンプルを用いた分析例
Step5 (a) MCMCサンプルの例
),( 21 ββ
(b) MCMCサンプルを用いた分析
-4.251900 -0.4722423 -4.251900 -0.4722423 -4.251900 -0.4722423 -3.967638 -0.4631124 -3.710819 -0.4088345 -3.710819 -0.4088345 -3.739178 -0.4965064 -3.455387 -0.3499806 .... -5.0 -4.5 -4.0 -3.5 -3.0 -2.5 -2.0
-0.7
-0.6
-0.5
-0.4
-0.3
-0.2
-0.1
Random Walk Monte Carlo
beta1be
ta2
・パラメータの推定値と信用区間(省略) ・曲線へのあてはめのよさの視覚化 ・摂氏 -0.56度での破損確率と信用区間
プログラム例 plot(damage/6 ~ temp, orings_new_org, xlim=(c(25,85)-32)*5/9, ylim=c(0,1), xlab="Temperature(C)", ylab="Prob of damage", main="Fitted Curve by Logit Regression"); for( j in (Nsim-500):Nsim){ curve(ilogit(beta[j,1] + beta[j,2]*(x - mean_temp ) ), add=T, col=rgb(1,0,1, alpha=0.1)); } curve(ilogit(beta_mle[1] + beta_mle[2]*(x - mean_temp ) ), add=T, col="blue", lwd=3);
標準偏差 1, 0.2 でRW 青線: MLEでの推定値 ピンク(透過色): MCMC4000のうち最後の500サンプル
・気温が低い所 → データがないため曲線のばらつきが大きい ・気温が高い所 → データがあり、曲線のばらつきが小さい
曲線へのあてはめ
MLEでの推定値を太線; モンテカルロサンプルを透過色で重ねて書く
あてはめのよさの視覚化
視覚的にわかること
(a) 摂氏 度で打ち上げる場合
C
C
x
x
ee
21
21
1)( ββ
ββ
βµ +
+
+=
(b) 事後分布を用いたベイズ推定値は以下の積分でかける
56.0−=CxOリングの破損確率 を を用いてかくと µ Cx,, 21 ββ
∫= 2)|()()(ˆ
RdD ββπβµβµ
(c) MCMCサンプル(*) を用いた (b) の近似値は
∑=
≈M
ttM 1)( )(1)(ˆ βµβµ
)()2()1( ,,, Mβββ
摂氏 -0.56度での予測(1/2)
*前半のサンプルを捨てて, 番号を付けなおしている.
プログラム例 (一部抜粋) L_NUM <- 100; INTERVAL <- seq(from=0, to=1, length.out=L_NUM); L <- array(0, L_NUM); for (j in 1:(L_NUM-1) ){ L[j] <- sum( ( INTERVAL[j] < p_sample ) & (p_sample <= INTERVAL[j+1]) )/length(p_sample) ; } # L の要素を大きい順に並べ替えて逐次足していく → ぎりぎり95%となる最大の番号(MAX_INTE)を見つける MAX_INTE <- sum( cumsum(sort(L, decreasing=TRUE)) < 0.95 ); # 大きい順に 番号(MAX_INTE) の値以上の確率をもつLの番号を調べる(連続した値) which( L >= sort(L, decreasing=TRUE)[MAX_INTE]); # 大きい順に 番号(MAX_INTE) の値以上の確率をもつ Lに対応する INTERVAL(左端の値)を調べる INTERVAL[ L >= sort(L, decreasing=TRUE)[MAX_INTE] ];
*ベイズ推定値は40000サンプル発生して後半20000 を利用.3ケタ目以降は安定しないので, 2ケタで表示
破損確率と95%信用区間
ベイズ*: 破損確率: 0.98, 95%信用区間= [0.93, 1.00]
摂氏 -0.56度での予測(2/2)
理解度チェック:GLMのベイズ分析
MCMCサンプリングでは通常, Burn-in ステップといって, 全体のうち前半部分のみを取り出してMCMCサンプルにする.
MCMCサンプルをつかってパラメータの推定値を求めたら, MCMCサンプルは破棄してよい.
WinBUGSなどのツールを使わずに事後分布を求める場合, 尤度関数を具体的に書き下す必要がある.
第三回で扱ったポアソン回帰もGLMの一種なので、同様にベイズ分析ができる.
目的変数が連続値のGLMも同様にベイズ分析を行ってよい
少なくとも理論の上では, GLMのベイズ分析はもうバッチリである.
5.ロジット回帰の拡張
本日のデータ
アンケート調査:車の購入で何を重視するか 性別: 男・女 年代: 18-23, 24-40, 41- 回答: 「エアコンとパワステ」をセットにして, あまり重視しない, 重視, とても重視 (3段階)
・パワーステアリング(Power Steering)の略; 自動車の運転でハンドルを切るのを楽にする機構 (普通の車にはついてる)
パワステ
* M. McFadden, J. Powers, W. Brown, and M. Walker: Vehicle and driver attributes affecting distance from the steering wheel in motor vehicles. Human Factors, 42 (2000), 676—682.
エアコン ・エアコンディショナー(Air Conditioner) の略; ここでは自動車に搭載されているエアコンのこと(普通の車にはついてる)
回答
性別 年齢層 重視 しない
重視 とても 重視
合計
女性 18-23 26 12 7 45 24-40 9 21 15 45 > 40 5 14 41 60
男性 18-23 40 17 8 65 24-40 17 15 12 44 > 40 8 15 18 41
全体 105 94 101 300
整理したデータ アンケート結果 (Dobson & Barnett (2008) 表8-1; オリジナルは文献(a) )
(a) M. McFadden, J. Powers, W. Brown, and M. Walker: Vehicle and driver attributes affecting distance from the steering wheel in motor vehicles. Human Factors, 42(2000), 676—682.
エアコンとパワステ (1/2)
freq <- array(0, c(6,3)); freq[,1] <- c(26,9,5,40,17,8); freq[,2] <- c(12,21,14,17,15,15); freq[,3] <- c(7,15,41,8,12,18); rel_freq <- freq/apply(freq, 1, sum); # 男女別にする rel_freq_f <- rel_freq[1:3,]; rel_freq_m <- rel_freq[4:6,]; # 女性のプロット (男性も同様) plot(rel_freq_f[,1], type="b", ylim=c(0, 0.8), main="Car Preferences of Woman", xlab="Age", ylab="Proportion", xaxt="n"); points(rel_freq_f[,2], type="b", lty=2, col=3); points(rel_freq_f[,3], type="b", lty=3, col=4); axis(side=1, at = 1:3, labels=c("18-23", "24-40", "Over40"));
実線: 重視しない 緑点線: 重視 青点線: とても重視
0.0
0.2
0.4
0.6
0.8
Car Preferences of Woman
Age
Pro
porti
on
18-23 24-40 Over40
エアコンとパワステ (2/2)
男女別に比較; 年齢が増えるとエアコンとパワステ重視の比率が増える傾向がみえる
実線: 重視しない 緑点線: 重視 青点線: とても重視
0.0
0.2
0.4
0.6
0.8
Car Preferences of Woman
Age
Pro
porti
on
18-23 24-40 Over40
0.0
0.2
0.4
0.6
0.8
Car Preferences of Man
Age
Pro
porti
on
18-23 24-40 Over40
左図:女性; 右図:男性
→ ロジット回帰, ポアソン回帰など
今回のデータの難しさ
例: Oリングデータ(Oリングの1つ1つが破損, 破損してない) 二択アンケート(YES/NO)
例: 三択アンケート (YES/NO / どちらともいえない) 朝ごはんの質問 (ごはん/パン/食べない/その他) Amazonの点数評価 (1,2,3,4,5)
目的変数が2値のカウントデータ
目的変数が3値以上のカウントデータ
これまでのGLMの方法は使えない!
→
多項分布を用いたモデル化
i
ijij m
YY
~= ][ ijij YE=ξ
各分類の添え字 (アンケートでは女性 18-23歳, ..., 男性41歳以上)
目的変数がk値(k 種類)のカウントデータ
ikii yyy ~,,~,~21 iikii myyy =+++ ~~~
21
多項分布(Multinomial distribution)を用いたモデル
( ) ),(~~,,~,~21 iiikii mMNYYY ξ
ni ,,2,1 =
kj ,,2,1 =
( )ikii ξξξ ,,1 =
次に, 上の を説明変数と結びつける iξ
名目尺度データの場合
各 i=1,2,...,n
・名目尺度(Nominal scale) ・順序尺度(Ordinal scale)
一般のカウントデータの分類
名目尺度 (Nominal Scale)データ
∑=s
issjij xβφ )log(
∑=
= k
jij
ijij
1φ
φξ
k種類の値に順序はなくラベルを張り替えられるようなデータ ※今回は三段階評価だが簡単のため名目尺度で扱う.
説明変数とのリンク (Nominal Logistic Regression)
*他にも対数線形モデルなどがある (交互作用項をみる場合に使う)
kj ,,2,1 =
ijφ i 番目のグループが選択肢 j を選ぶ重み (0以上)
11 ≡iφ
kj ,,2 =
カテゴリカル説明変数の扱い
・連続変数 ・順序つきカテゴリカル変数 ・順序なしカテゴリカル変数
一般の説明変数の分類
説明変数の例 (ダミー変数の使用例)
年代3通り → 2値変数を2つ用意 ( k通りの分類なら k-1個の2値変数)
=01
1ix
=01
2ix
男性
女性
24~40歳 41歳~
i 番目のグループの説明変数(共変量)は以下で設定 【今回の場合】
それ以外
=01
3ixそれ以外
参考:順序尺度データの場合
分類を表す添え字 i は省略
]),(( 1 sss CCZP −∈=ξ
潜在変数モデル (Latent Variable Model)
潜在変数Zの分布, カットポイントと説明変数Xの対応付けはGLMとは大きく異なるため今回は触れない.(累積ロジットモデルなどがある)
← 観測できない連続変数Z (潜在変数)によって決まる
+∞=−∞= − kk CCCC ,,,, 110
← k-1個のカットポイントがパラメータ
k種類の値に自然な順序がつけられるデータ (点数評価など)
順序尺度 (Ordinal Scale)データ
Bayesian Nominal Logistic Regression
(参照基準)
3322110)log( ijijijjij xxx ββββφ +++=
∑=
= 3
1kk
jj
φ
φξ
Nominal Logistic Regression の式
3,2=j
11 =iφ
11 ≡iφ エ・パ重視しない
2iφ3iφ
エ・パ重視 エ・パとても重視
重み
【本来はいろいろ試すべき】
3,2=j)10,0(~,,, 43210 Njjjj ββββ
事前分布 (平坦)
WinBUGSを利用した結果を紹介 (詳細は別資料)
オッズ比 推定値 (事後平均)
95%信用区間 (事後分布から計算)
0.70 (0.350,1.23) 3.32 (1.65,6.23) 5.35 (2.16,10.7)
0.457 (0.240,0.818) 4.90 (2.14,10.2) 21.6 (8.42,49.7)
分析結果 オッズ比の推定値と信用区間 (Dobson & Barnett (2008) 表14-4と似た結果)
32βe
22βe
12βe
33βe
23βe
13βe
分析結果について考察せよ. (結果は非ベイズでも同様になる.) たとえばエアコンとパワステを重視する度合いは、男女の違いと年齢の違い、どちらの影響が大きいだろうか.
理解度チェック:ロジット回帰の拡張 ネット通販の商品のレビュー(5点満点評価)を, 商品の属性(メーカーや色、性能)で説明したい. この場合, レビューの点数は順序尺度データとして扱うべきである.
4種類の職業グループを説明変数にする場合 のように等間隔にとるのが望ましい.
レトルトカレーで消費者モニターに5種類のブランドから1つ選んでもらった. 消費者モニターの年代や嗜好(辛いのが好き etc.)など4つの説明変数を用いて分析する場合, 4項分布を用いる.
3,2,1,0=x
O大学では, 学部で統計の授業を受講することが重要かどうか, 理学研究科の大学院生にアンケートをとった. 対象専攻は, 生物, 化学, 物理の 3つである. この場合, 専攻に関する説明変数は2つ用いて, 例えば以下のように設定する.
=01
1x 生物 化学
それ以外
=01
2xそれ以外