osaka.stan#2 chap5-1
TRANSCRIPT
Chapter 5基本的な回帰とモデルのチェック
~重回帰~
Osaka.Stan#2 (2016.12.23)
広島大学大学院教育学研究科平川 真
2
重回帰 (multiple linear regression)
✓目的変数を複数の説明変数で予測する
→ 回帰分析の説明変数が複数になっただけ
𝑦𝑥2
𝑥1
3
本書で扱うデータ
出欠率に関する架空データ (n = 50) A: アルバイトが好きかどうかの 2 値 ( 好き = 1) Score: 学問への興味の強さ (200 点満点 ) Y: 1 年間の出欠率 ( 出席回数 / 総授業回数 ) * 総授業回数は 200~500( 人によって異なる )
4
解析の目的
✓2 つの説明変数 A と Score で、応答変数 Y がどれほど予測で
きるか知りたい
✓それぞれの説明変数が出欠率にどれほど影響しているか知りた
い
出欠率Score
A
5
データの分布の確認
{GGally} の ggpairs() を
カスタマイズ (↓) したら→に
カスタマイズ、、、
6
データの分布の確認
これでもまぁそれなりに
7
データの分布の確認
アルバイトが好きな学生は出席率が低そう
説明変数間に相関はなさそう
学問への興味が強い学生は出席率が高そう
Score は正規分布に従いそう
8
メカニズムの想像
✓アルバイトが好きな学生は出席率が低そう
✓学問への興味が強い学生は出席率が高そう
⇒A と Score の 2 変数の線形結合によって、
出席率 (Y) が決まる、と仮定
⇒(決定的な関係)
加えて、
出欠率は他の変数や測定誤差などの影響もうける、と仮定
それらの影響を ( ノイズ ) とし、平均 0 の正規分布に従う、と仮定
⇒(確率的な関係)
9
モデル式の記述
モデル式 5-1
A と Score の線形結合 ノイズ
ノイズは平均 0, 標準偏差の正規分布従う
10
モデル式の記述
モデル式 5-2 ( 消去 )
( 再 ) モデル式 5-1
11
モデル式の記述
モデル式 5-3
Y の予測値 * は A と Score の線形結合で決定する
予測値 * を中心に標準偏差の正規分布に従うノイズがのって、 Y の値が決まる
* ここでは予測値を一つの値の指すものとして使っており、本書とは異なる意味で使ってます。 本書では予測値は予測分布のとりうる値を指します。
12
モデル式 5-2( 再 )
Y は正規分布から発生している
正規分布の平均パラメタは、説明変数の線形結合で表現される
𝑌 [𝑛 ] 𝑁𝑜𝑟𝑚𝑎𝑙 (𝑏1+𝑏2𝐴 [𝑛 ]+𝑏3𝑆𝑐𝑜𝑟𝑒 [𝑛 ] ,𝜎 )𝑛=1 ,…,𝑁⇒ 平均パラメタを代入してやればモデル式 5-2
13
Stan で実装
( 再 ) モデル式 5-3そのまま
model5-3.stan
←Score は 200 点満点だったが、 0-1 の範囲で指定されている
← のちにベイズ予測区間を描くので、 予測分布からの MCMC サンプルを生成
14
とりあえず実行run-model5-3.R
1 秒だけ MCMC(*´Д`) ハァハァ
他にも 50 人分の mu と y_pred, lp__ が出力されるが省略
←Score を 200 で割って、 0-1 の範囲にしている
15
推定結果の解釈
得られた事後平均をモデル式に代入すると
回帰係数は「説明変数が 1 増えたときの y の平均的な変化量」
収束している模様
𝜇 [𝑛 ]=0.13−0.14∗ 𝐴 [𝑛 ]+0.32∗( 𝑆𝑐𝑜𝑟𝑒 [𝑛 ]200 )𝑛=1 ,…,𝑁
16
データのスケーリング
データのスケーリングをする理由:
大きさがバラバラだとパラメタの探索が非効率になり、
計算に時間がかかったり、収束しにくくなったりするため
←Score を 200 で割って、 0-1 の範囲にしている
run-model5-3.R
←Score は 200 点満点だったが、 0-1 の範囲で指定されている
model5-3.stan
17
試してみた
model5-3.stan
Score を 0-1 の範囲にせずデータをわたした場合
← 回帰係数は説明変数が 1 増加した ときの y の増分なので、小さくなる 0.32/200=0.0016
ほんとだ
18
外挿について外挿 : データ範囲の外側を予測すること
アルバイト好きで Score が 0 点の学生の出席率は?
𝜇 [𝑛 ]=0.13−0.14∗ 𝐴 [𝑛 ]+0.32∗( 𝑆𝑐𝑜𝑟𝑒 [𝑛 ]200 )𝑛=1 ,…,𝑁
出席率が負?
データの範囲外の値についての予測はしない方がよい
19
パラメタの幅の確認
分布でしょ!
95% ベイズ信頼区間
[0.06~0.19] [-0.17~-0.11]
[0.22~0.42] [0.04~0.06]
20
図によるモデルのチェック
ベイズ予測区間
* 説明変数が 2 つの場合、データに 平面をあてはまることになる ⇒3 次元の図は見にくいので、 A の値別に描画
* ここでは 80% 区間で描画している
21
実測値と予測値のプロット
先のような可視化は、 3 変数以上になると難しい
⇒ 実測値と予測値 * の関係を把握
多くの点がの直線の近く ⇒2 変数で応答変数を十分に予測 できている
* 予測値 = 予測分布の取りうる値
22
推定されたノイズの分布
ノイズについての仮定 : に従う
⇒ この仮定の妥当性をチェック
各人のノイズ(実測値―予測値)のMAP 推定値を集計
破線 : 平均 0, SD=0.05 の正規分布
乖離が小さい→
23
MCMC サンプルの散布図行列
パラメタ間の関係を把握
24
まとめ
重回帰 : 複数の変数で応答変数を予測する
モデル :
交互作用→ Chap7.1多重共線性→ Chap7.4
𝑌 [𝑛 ] 𝑁𝑜𝑟𝑚𝑎𝑙 (𝜇[𝑛] ,𝜎 )1) Y は正規分布から発生している2) 正規分布の平均パラメタは、 説明変数の線形結合で表現される
おまけ
~モデルの理解を深めるために~
Osaka.Stan#2 (2016.12.23)
26
架空データの作り方架空データを自分で作って (*´Д`) するハァハァ(真値がわかっているので、モデルの性質を把握しやすい)
rnorm(): 正規分布に従う乱数を発生
Cf. モデル式同じ
lm() で分析すると↓
← 平均 3, 標準偏差 1 の 正規分布に従う乱数を 100個発生
27
Stan で推定
モデル (modelブロックのみ )
実行コード
Cf. 発生させたデータ
パラメタの真値は
うまく推定できている
← パラメタについて 弱情報事前分布を設定
28
ノイズの大きさをいじってみる
𝜎=0.5
𝜎=10
cf .𝜎=3
実測値と予測値が
対応しにくくなる
パラメタのベイズ信頼区間
は
ノイズが大きくなると広が
る
* 事後平均値は lm() と一致する ノイズが大きいと乱数の発生毎に 係数は大きく変化
29
説明変数に相関をもたせてみる母相関が rho となる 2 変数の発生コード
↓MCMC サンプルの散布図行列
30
説明変数に相関をもたせてみる