osaka.stan #3 chapter 5-2

67
StanとRでベイズ統計モデリング 読書会 (Chapter 5-2) Osaka.Stan #3 2017/2/26 https:// atnd.org/events/85291 @関西学院大学 梅田キャンパス 京都大学 高等教育研究開発推進センター 後藤 崇志 Web: http://g01beza.web.fc2.com /

Upload: takayuki-goto

Post on 12-Apr-2017

680 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Osaka.Stan #3 Chapter 5-2

StanとRでベイズ統計モデリング読書会 (Chapter 5-2)

Osaka.Stan #3 2017/2/26

https://atnd.org/events/85291

@関西学院大学梅田キャンパス

京都大学高等教育研究開発推進センター

後藤崇志

Web: http://g01beza.web.fc2.com/

Page 2: Osaka.Stan #3 Chapter 5-2

スライドの概要

• 第5章 「基本的な回帰とモデルのチェック」後半戦です• 5.2 二項ロジスティック回帰• 5.3 ロジスティック回帰• 5.4 ポアソン回帰• 練習問題(4) ~ (7)前半戦(5.1 重回帰)についてはOsaka.Stan #2の平川先生のスライド参照

(https://www.slideshare.net/makotohirakawa3/osakastan2-chap51)

• 発表者はこんな感じです• 専門は心理学(特に社会・教育・認知周辺)• 縦断データ・反復測定データの分析機会が多い気がする• データ分析によく使うのはRとMplus• 普段は素R派(特にこだわりがあるわけではないですが)

• ggplot2は報告する時には使うけど、分析途中ではあまり使わないなので、今日の発表の作図では基本的にはggplot2は使っていない

• ベイズ統計は勉強中、まだ本格的には使っていない

2017/2/26 Osaka.Stan #3 Chapter 5-2 2

Page 3: Osaka.Stan #3 Chapter 5-2

このスライドで実行しているコードについて

2017/2/26 Osaka.Stan #3 Chapter 5-2 3

自分のwebサイト( http://g01beza.web.fc2.com/ )の”materials”内に置いてあります

Page 4: Osaka.Stan #3 Chapter 5-2

5.2 二項ロジスティック回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 4

Page 5: Osaka.Stan #3 Chapter 5-2

5.2 二項ロジスティック回帰

• 著者提供の架空データ

• PersonID: 学生のID

• A: アルバイトを好きかどうか(0=好きでない、1=好き)

• Score: 学問への興味の強さ(0 - 200)

• M: 3か月間における履修登録した科目の総授業回数

• Y: Mのうち、実際に出席した回数

「AとScoreでどれほど授業の出席を予測できるか?

また、どれほど出席率に影響しているか?」を知りたい

2017/2/26 Osaka.Stan #3 Chapter 5-2 5

Page 6: Osaka.Stan #3 Chapter 5-2

データイメージ

2017/2/26 Osaka.Stan #3 Chapter 5-2 6

学生 n (PersonID)

月 火 水 木 金

Week 1 3 2 2 1 4

Week 2 1 2 1 0 0

・・・

月 火 水 木 金

Week 1 3 2 2 2 4

Week 2 3 2 1 2 4

・・・履修登録した科目の総授業回数M

Mのうち、実際に出席した回数 Y

Q1. アルバイトは好きですか(Yes / No)

Q2. 学問にどのくらい興味がありますか (0 – 200)

A

Score

統制予測したい

影響を知りたい

学生N人のデータ

Page 7: Osaka.Stan #3 Chapter 5-2

データの分布を確認する

2017/2/26 Osaka.Stan #3 Chapter 5-2 7

出席数Y/授業数Mの割合も求めた

Corr:

0.112

Corr:

0.275

Corr:

0.89

Corr:

0.376

Corr:

-0.298

Corr:

0.13

Af Score M Y ratioA

fS

co

reM

Yra

tio

0 1 2 3 40 1 2 3 4 50 100 150 25 50 75 20 40 60 0.6 0.8 1.0

0

10

20

30

80

120

160

25

50

75

20

40

60

0.6

0.8

1.0

1.0付近の人がそれなりにいる

Page 8: Osaka.Stan #3 Chapter 5-2

とりあえず重回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 8

model5_4_normal.stan

𝜇 𝑛 = 𝑏1 + 𝑏2 ∗ 𝐴 𝑛 + 𝑏3 ∗ 𝑆𝑐𝑜𝑟𝑒 𝑛 𝑛 = 1,… , 𝑁

𝑅𝑎𝑡𝑖𝑜 𝑛 ~ 𝑁𝑜𝑟𝑚𝑎𝑙 𝜇 𝑛 , 𝜎 𝑛 = 1,… , 𝑁

モデル式(式5 – 3を参考に)

Page 9: Osaka.Stan #3 Chapter 5-2

とりあえず重回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 9

• 収束してる様子

モデルはちゃんと当てはまってる?

Page 10: Osaka.Stan #3 Chapter 5-2

とりあえず重回帰:実測値・予測値のプロット

2017/2/26 Osaka.Stan #3 Chapter 5-2 10

この辺は4章参照

実測値と予測値の中央値を散布図で描く

95%区間を描く

凡例を描く

Page 11: Osaka.Stan #3 Chapter 5-2

とりあえず重回帰:実測値・予測値のプロット

2017/2/26 Osaka.Stan #3 Chapter 5-2 11

0.4 0.5 0.6 0.7 0.8 0.9 1.0

0.4

0.6

0.8

1.0

observed

pre

dic

ted

A=0

A=1

割合なのになんか1超えてる

このへんが気になる

Page 12: Osaka.Stan #3 Chapter 5-2

とりあえず重回帰の問題点

• 今回の例では、出席率の実測値が1に近いデータがいくつかある

• 説明変数の組み合わせによっては予測値が1を超えてしまう

• 独立変数の線型結合(𝑏1 + 𝑏2 ∗ 𝐴 + 𝑏3 ∗ 𝑆𝑐𝑜𝑟𝑒)が −∞,∞ の

範囲をとりうるため

0, 1 の範囲しかとりえないようにしたい

2017/2/26 Osaka.Stan #3 Chapter 5-2 12

Page 13: Osaka.Stan #3 Chapter 5-2

ロジスティック変換

• ロジスティック関数1

1+ 𝑒−𝑥を使った変換

2017/2/26 Osaka.Stan #3 Chapter 5-2 13

(0, 1)の範囲に収まった!

-10 -5 0 5 10

0.0

0.2

0.4

0.6

0.8

1.0

test

log

istic(t

est)

Page 14: Osaka.Stan #3 Chapter 5-2

係数値が変わるとどうなる?

2017/2/26 Osaka.Stan #3 Chapter 5-2 14

• 𝑏1, 𝑏2の値を変えながら𝑦 =1

1+𝑒− 𝑏1+𝑏2∗𝑥の曲線を描いてみた

-10 -5 0 5 10

0.0

0.2

0.4

0.6

0.8

1.0

b1 = 0, b2 = ?

x

y

b2 = -1

b2 = 1

b2 = 5

-10 -5 0 5 10

0.0

0.2

0.4

0.6

0.8

1.0

b1 = ?, b2 = 0

x

y

b1 = -3

b1 = 1

b1 = 3

Page 15: Osaka.Stan #3 Chapter 5-2

とりあえず重回帰の問題点モデルの改善

• ロジスティック変換を行っても、正規分布に従うノイズが加わると

考えると、範囲 0, 1 を外れてしまう

• 出席率の分母である授業回数が小さめなので、出席率を連続

変数とみなすのは難しい

出席回数(カウントデータ) 𝑌は確率𝑞、試行回数𝑀の二項分布に

従って生成されたと考える

モデル式5-4

𝑞 𝑛 =1

1+ 𝑒− 𝑏1+ 𝑏2∗𝐴 𝑛 + 𝑏3∗𝑆𝑐𝑜𝑟𝑒 𝑛

𝑌 𝑛 = 𝐵𝑖𝑛𝑜𝑚𝑖𝑎𝑙 𝑀 𝑛 , 𝑞 𝑛

2017/2/26 Osaka.Stan #3 Chapter 5-2 15

AとScoreの線形結合は出席率qを決める

実際の出席率Yは授業回数Mと出席率qをパラメータとする二項分布に従って生成

Page 16: Osaka.Stan #3 Chapter 5-2

データイメージ

2017/2/26 Osaka.Stan #3 Chapter 5-2 16

学生 n (PersonID)

月 火 水 木 金

Week 1 3 2 2 1 4

Week 2 1 2 1 0 0

・・・

月 火 水 木 金

Week 1 3 2 2 2 4

Week 2 3 2 1 2 4

・・・履修登録した科目の総授業回数M

Mのうち、実際に出席した回数 Y

Q1. アルバイトは好きですか(Yes / No)

Q2. 学問にどのくらい興味がありますか (0 – 200)

A

Score

学生N人のデータ

出席率q

二項分布

Page 17: Osaka.Stan #3 Chapter 5-2

出席回数を二項ロジスティック回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 17

𝑞 𝑛 =1

1 + 𝑒− 𝑏1+ 𝑏2∗𝐴 𝑛 + 𝑏3∗𝑆𝑐𝑜𝑟𝑒 𝑛𝑛 = 1, 2,… , 𝑁

𝑌 𝑛 = 𝐵𝑖𝑛𝑜𝑚𝑖𝑎𝑙 𝑀 𝑛 , 𝑞 𝑛 𝑛 = 1, 2,… , 𝑁

モデル式(式5 – 4)

予測分布も二項分布から得る

応答変数(出席回数)は整数なのでint型に

model5_4_binomial.stan

Page 18: Osaka.Stan #3 Chapter 5-2

出席回数を二項ロジスティック回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 18

• 今度も収束してる様子

今度はモデルもちゃんと当てはまってる?

Page 19: Osaka.Stan #3 Chapter 5-2

出席回数を二項ロジスティック回帰

• 重回帰よりよく当てはまっているように見える

2017/2/26 Osaka.Stan #3 Chapter 5-2 19

0 20 40 60 80

02

04

06

08

0

observed

pre

dic

ted

A=0A=1

Page 20: Osaka.Stan #3 Chapter 5-2

二項ロジスティック回帰の結果の解釈

事後平均値をモデル式に代入する

𝑞 𝑛 =1

1+ 𝑒− 0.09 + −0.62 ∗𝐴 𝑛 +1.90 ∗

𝑆𝑐𝑜𝑟𝑒 𝑛200

𝑌 𝑛 = 𝐵𝑖𝑛𝑜𝑚𝑖𝑎𝑙 𝑀 𝑛 , 𝑞 𝑛

アルバイトが好きな学生の方がそうでない学生より出席しなさそう

学問への興味の高い学生の方が出席しそう

係数値はどう解釈すればよい?

2017/2/26 Osaka.Stan #3 Chapter 5-2 20

Page 21: Osaka.Stan #3 Chapter 5-2

二項ロジスティック回帰の結果の解釈

2017/2/26 Osaka.Stan #3 Chapter 5-2 21

𝑞 𝑛 =1

1+ 𝑒− 𝑏1+ 𝑏2∗𝐴 𝑛 + 𝑏3∗𝑆𝑐𝑜𝑟𝑒 𝑛

• 変形すると𝑞

1 − 𝑞= 𝑒 𝑏1+ 𝑏2∗𝐴 𝑛 + 𝑏3∗𝑆𝑐𝑜𝑟𝑒 𝑛

• 左辺は(起こる確率)/(起こらない確率)の比=オッズ

• オッズが1より大きい

起こる確率の方が高い(起こらない確率の方が低い)

• オッズが1より小さい

起こる確率の方が低い(起こらない確率の方が高い)

Page 22: Osaka.Stan #3 Chapter 5-2

二項ロジスティック回帰の結果の解釈

アルバイトが好きな学生とそうでない学生の違いは?

アルバイトが好きな学生のオッズはそうでない学生のオッズより

平均して0.54倍くらい低い2017/2/26 Osaka.Stan #3 Chapter 5-2 22

アルバイトが好きな学生のオッズ = 𝑒0.09 + −0.62 ∗1+1.90 ∗

𝑆𝑐𝑜𝑟𝑒 𝑛

200

そうでない学生のオッズ = 𝑒0.09 + −0.62 ∗0+1.90 ∗

𝑆𝑐𝑜𝑟𝑒 𝑛200

アルバイトが好きな学生のオッズ

そうでない学生のオッズ=𝑒

0.09 + −0.62 ∗1+1.90 ∗𝑆𝑐𝑜𝑟𝑒 𝑛200

𝑒0.09 + −0.62 ∗0+1.90 ∗

𝑆𝑐𝑜𝑟𝑒 𝑛200

=𝑒0.09 ∗ 𝑒−0.62 ∗ 𝑒

1.90∗𝑆𝑐𝑜𝑟𝑒 𝑛200

𝑒0.09 ∗ 𝑒0 ∗ 𝑒1.90∗

𝑆𝑐𝑜𝑟𝑒 𝑛200

= 1

= 𝑒−0.62 ≒ 0.54

Page 23: Osaka.Stan #3 Chapter 5-2

二項ロジスティック回帰の結果の解釈

学問の興味の高い学生とそうでない学生の違いは?

学問の興味が1SD高いと、オッズは平均して1.31倍くらい高い

2017/2/26 Osaka.Stan #3 Chapter 5-2 23

学問の興味が平均値な学生のオッズ = 𝑒0.09 + −0.62 ∗𝐴[𝑛]+1.90 ∗

121.7

200

学問の興味が平均値+1SDな学生のオッズ = 𝑒0.09 + −0.62 ∗𝐴[𝑛]+1.90 ∗

121.7+28.1200

学問の興味が平均値+1SDな学生のオッズ

学問の興味が平均値な学生のオッズ=𝑒

0.09 + −0.62 ∗𝐴[𝑛]+1.90 ∗121.7+28.1

200

𝑒0.09 + −0.62 ∗𝐴[𝑛]+1.90 ∗

121.7200

=𝑒0.09 ∗ 𝑒−0.62∗𝐴[𝑛] ∗ 𝑒

1.90∗121.7200 ∗ 𝑒

1.90∗28.1200

𝑒0.09 ∗ 𝑒−0.62∗𝐴[𝑛] ∗ 𝑒1.90∗

121.7200

= 𝑒1.90∗

28.1

200 ≒ 1.31

Page 24: Osaka.Stan #3 Chapter 5-2

5.3ロジスティック回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 24

Page 25: Osaka.Stan #3 Chapter 5-2

5.3 ロジスティック回帰

• 著者提供の架空データ

• PersonID: 学生のID

• A: アルバイトを好きかどうか(0=好きでない、1=好き)

• Score: 学問への興味の強さ(0 - 200)

• Weather: 授業日の天気(A=晴れ、B=曇り、C=雨)

• Y: 授業に出席したかどうか(0=欠席、1=出席)

「AとScoreに授業日の天気を加えた3つの説明変数で授業の

出席をどれほど予測できるか?また、どれほど出席率に

影響しているか?」を知りたい2017/2/26 Osaka.Stan #3 Chapter 5-2 25

Page 26: Osaka.Stan #3 Chapter 5-2

データイメージ

2017/2/26 Osaka.Stan #3 Chapter 5-2 26

学生 n (PersonID)

Class 1 Class 2 Class 3 Class 4

天気 晴れ 雨 曇り 晴れ

ある学生のある授業iの天気Weather

Q1. アルバイトは好きですか(Yes / No)

Q2. 学問にどのくらい興味がありますか (0 – 200)

A

Score

学生N人から得られたI件の出欠データ

出欠 出席 欠席 出席 出席

ある学生がある授業iに出席したかどうか Y

出席率q

なにかの分布

予測したい影響を知りたい

反復測定である点や、人によって授業回数が違う点などは今回はおいておく

8章の階層モデルあたりで向き合うことに

Page 27: Osaka.Stan #3 Chapter 5-2

モデル式

出席したかどうか(0/1の二値)𝑌は確率𝑞のベルヌーイ分布に

従って生成されたと考える

AとScore、Weatherの線形結合は確率𝑞を決めると考える

確率𝑞の範囲は(0, 1)なのでロジスティック変換

モデル式5-5

𝑞 𝑖 =1

1+ 𝑒− 𝑏1+ 𝑏2∗𝐴 𝑖 + 𝑏3∗𝑆𝑐𝑜𝑟𝑒 𝑖 +𝑏4∗𝑊𝑒𝑎𝑡ℎ𝑒𝑟 𝑖

𝑌 𝑖 = 𝐵𝑒𝑟𝑛𝑜𝑢𝑙𝑙𝑖 𝑞 𝑖

2017/2/26 Osaka.Stan #3 Chapter 5-2 27

Page 28: Osaka.Stan #3 Chapter 5-2

Weatherの値の変換

• Weatherは(A=晴れ、B=曇り、C=雨)の離散的な文字列データ

なのでこのままでは扱いにくい

• ここでは経験的に、「晴れと比較したときの曇りの出席率への

影響」と「晴れと比較したときの雨の出席率への影響」の比率が

1:5であると考えたと仮定して、値を変換する

2017/2/26 Osaka.Stan #3 Chapter 5-2 28

晴れ 曇り 雨

Page 29: Osaka.Stan #3 Chapter 5-2

Weatherの値の変換

• Weatherは(A=晴れ、B=曇り、C=雨)の離散的な文字列データ

なのでこのままでは扱いにくい

• ここでは経験的に、「晴れと比較したときの曇りの出席率への

影響」と「晴れと比較したときの雨の出席率への影響」の比率が

1:5であると考えたと仮定して、値を変換する

2017/2/26 Osaka.Stan #3 Chapter 5-2 29

晴れ 曇り 雨

1

0.2

Page 30: Osaka.Stan #3 Chapter 5-2

Weatherの値の変換

2017/2/26 Osaka.Stan #3 Chapter 5-2 30

Page 31: Osaka.Stan #3 Chapter 5-2

出席率をロジスティック回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 31

𝑞 𝑖 =1

1 + 𝑒− 𝑏1+ 𝑏2∗𝐴 𝑖 + 𝑏3∗𝑆𝑐𝑜𝑟𝑒 𝑖 +𝑏4∗𝑊𝑒𝑎𝑡ℎ𝑒𝑟 𝑖𝑖 = 1, 2,… , 𝐼

𝑌 𝑖 = 𝐵𝑒𝑟𝑛𝑜𝑢𝑙𝑙𝑖 𝑞 𝑖 𝑖 = 1, 2,… , 𝐼

モデル式(式5 – 5)model5_5.stan

Page 32: Osaka.Stan #3 Chapter 5-2

出席率をロジスティック回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 32

• 収束してる様子

モデルはちゃんと当てはまってる?

Page 33: Osaka.Stan #3 Chapter 5-2

確率qの80%信頼区間を出席Yと重ねて描いてみる

2017/2/26 Osaka.Stan #3 Chapter 5-2 33

以下、残りの5パターンは省略

Scoreを30 ~ 200の範囲で変化させたときの予測値の中央値と80%信頼区間を求める(天気=晴れ(A)、アルバイトの好み=1の場合に限定)

予測値の中央値を実線で、80%信頼区間の上限と下限を破線で描く

興味Scoreと出席Yの実測値も重ねてプロット

Page 34: Osaka.Stan #3 Chapter 5-2

確率qの80%信頼区間を出席Yと重ねて描いてみる

2017/2/26 Osaka.Stan #3 Chapter 5-2 34

50 100 150 200

0.0

0.2

0.4

0.6

0.8

1.0

A = 0, Weather = A

Score

q

50 100 150 2000.0

0.2

0.4

0.6

0.8

1.0

A = 0, Weather = B

Score

q

50 100 150 200

0.0

0.2

0.4

0.6

0.8

1.0

A = 0, Weather = C

Score

q

50 100 150 200

0.0

0.2

0.4

0.6

0.8

1.0

A = 1, Weather = A

Score

q

50 100 150 200

0.0

0.2

0.4

0.6

0.8

1.0

A = 1, Weather = B

Score

q

50 100 150 200

0.0

0.2

0.4

0.6

0.8

1.0

A = 1, Weather = C

Score

q

Page 35: Osaka.Stan #3 Chapter 5-2

確率と実測値のプロット

• 左の図であれば、Y=0

では横軸の小さい方に、

Y=1では横軸の大きい

方に集まっているとよく

予測できているといえる

グラフを見る限りは

十分には予測できて

いない様子

2017/2/26 Osaka.Stan #3 Chapter 5-2 35

※このスライドではvioplot関数を使用

Page 36: Osaka.Stan #3 Chapter 5-2

ROC曲線

• ある値以上を出席、

未満を欠席とするように

分類すると、1. 正しく出席を分類できた人2. 誤って出席に分類した人3. 正しく欠席に分類できた人4. 誤って欠席に分類した人

の割合が求まる

様々な値で区切ったとき

のTrue positive(1)とFalse

positive(2)をプロットした

もの

2017/2/26 Osaka.Stan #3 Chapter 5-2 36

カーブの下の面積が大きい(一般に0.8以上)ほど分類性能がよい今回は80%信頼区間が

0.6155 ~ 0.6179であまりよくない

Page 37: Osaka.Stan #3 Chapter 5-2

練習問題(4)

• 晴れの影響を0とし、曇りの影響と雨の影響をともにパラメータと

するモデルをStanで実装して推定する

• 発表者の考え①:「曇り/晴れ・雨」、「雨/晴れ・曇り」を弁別

する二値変数を使ったモデルを考えてみた

2017/2/26 Osaka.Stan #3 Chapter 5-2 37

晴れ 曇り 雨

𝒃𝒓𝒂𝒊𝒏

𝒃𝒄𝒍𝒐𝒖𝒅

Page 38: Osaka.Stan #3 Chapter 5-2

練習問題(4) ①こんな感じ?

2017/2/26 Osaka.Stan #3 Chapter 5-2 38

𝑞 𝑖 =1

1 + 𝑒− 𝑏1+ 𝑏2∗𝐴 𝑖 + 𝑏3∗𝑆𝑐𝑜𝑟𝑒 𝑖 +𝑏4∗𝐶𝑙𝑜𝑢𝑑 𝑖 +𝑏5∗𝑅𝑎𝑖𝑛 𝑖𝑖 = 1, 2, … , 𝐼

𝑌 𝑖 = 𝐵𝑒𝑟𝑛𝑜𝑢𝑙𝑙𝑖 𝑞 𝑖 𝑖 = 1, 2,… , 𝐼

曇り、雨それぞれの二値変数をint型で宣言

model_5_5_ex1.stan

Page 39: Osaka.Stan #3 Chapter 5-2

練習問題(4) ①こんな感じ?

2017/2/26 Osaka.Stan #3 Chapter 5-2 39

• 曇りの日は晴れの日と比べてexp(-0.380) ≒ 0.68倍

• 雨の日は晴れの日と比べてexp(-0.496) ≒ 0.61倍

晴れよりは確率が下がるけど、雨と曇りではそんなに変わらない?

二値変数はT/Fを数値化して作成

Page 40: Osaka.Stan #3 Chapter 5-2

練習問題(4) ②

• ヒント:天気のデータを1~3のインデックスにしてStanに渡す

• 「晴れ」「曇り」「雨」によって𝑏1の値に𝑏𝑤[𝑊𝑒𝑎𝑡ℎ𝑒𝑟]が加わると

いうモデルを作成

2017/2/26 Osaka.Stan #3 Chapter 5-2 40

晴れ 曇り 雨

𝒃𝟏 + 𝒃𝒘[𝑺𝒖𝒏𝒏𝒚] 𝒃𝟏 + 𝒃𝒘[𝑪𝒍𝒐𝒖𝒅] 𝒃𝟏 + 𝒃𝒘[𝑹𝒂𝒊𝒏]

Page 41: Osaka.Stan #3 Chapter 5-2

練習問題(4) ②こんな感じ

2017/2/26 Osaka.Stan #3 Chapter 5-2 41

曇りの効果をbw2、雨の効果をbw3としてreal型で宣言

天気の効果を入れるbwという配列を作成

「晴れ」は基準なので0、「曇り」「雨」はそれぞれbw2、bw3を入れる

𝑞 𝑖 =1

1 + 𝑒− 𝑏1+ 𝑏2∗𝐴 𝑖 + 𝑏3∗𝑆𝑐𝑜𝑟𝑒 𝑖 + 𝑏𝑤[𝑊𝑒𝑎𝑡ℎ𝑒𝑟[𝑖]]𝑖 = 1, 2,… , 𝐼

𝑌 𝑖 = 𝐵𝑒𝑟𝑛𝑜𝑢𝑙𝑙𝑖 𝑞 𝑖 𝑖 = 1, 2, … , 𝐼

天気の違いは1~3のインデックスで渡すのでint型

model_5_5_ex2.stan

Page 42: Osaka.Stan #3 Chapter 5-2

練習問題(4) ②こんな感じ

2017/2/26 Osaka.Stan #3 Chapter 5-2 42

①で二値のダミー変数を使ったものと同じ結果が得られた

インデックス化するためにあらかじめtmpというベクトルを準備

Page 43: Osaka.Stan #3 Chapter 5-2

5.4 ポアソン回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 43

Page 44: Osaka.Stan #3 Chapter 5-2

5.4 ポアソン回帰

• 5.2 と同じ架空データ

• PersonID: 学生のID

• A: アルバイトを好きかどうか(0=好きでない、1=好き)

• Score: 学問への興味の強さ(0 - 200)

• M: 3か月間における履修登録した科目の総授業回数

• Y: Mのうち、実際に出席した回数

「AとScoreでどれほど総授業回数を予測できるか?

また、どれほど総授業回数に影響しているか?」を知りたい

2017/2/26 Osaka.Stan #3 Chapter 5-2 44

Page 45: Osaka.Stan #3 Chapter 5-2

データイメージ

2017/2/26 Osaka.Stan #3 Chapter 5-2 45

学生 n (PersonID)

月 火 水 木 金

Week 1 3 2 2 1 4

Week 2 1 2 1 0 0

・・・

月 火 水 木 金

Week 1 3 2 2 2 4

Week 2 3 2 1 2 4

・・・履修登録した科目の総授業回数M

Mのうち、実際に出席した回数 Y

Q1. アルバイトは好きですか(Yes / No)

Q2. 学問にどのくらい興味がありますか (0 – 200)

A

Score

予測したい影響を知りたい

学生N人のデータ

Page 46: Osaka.Stan #3 Chapter 5-2

とりあえず重回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 46

𝜇 𝑛 = 𝑏1 + 𝑏2 ∗ 𝐴 𝑛 + 𝑏3 ∗ 𝑆𝑐𝑜𝑟𝑒 𝑛 𝑛 = 1,… , 𝑁

𝑀 𝑛 ~ 𝑁𝑜𝑟𝑚𝑎𝑙 𝜇 𝑛 , 𝜎 𝑛 = 1,… , 𝑁

model_5_6_normal.stan

Page 47: Osaka.Stan #3 Chapter 5-2

とりあえず重回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 47

• 収束してる様子

↓ しかし、予測値が小数値をとっている(場合によっては負の値も)

Page 48: Osaka.Stan #3 Chapter 5-2

とりあえず重回帰モデル式

0以上の整数値のみをとるようにするために、総授業回数

(カウントデータ)𝑌は平均𝜆のポアソン分布に従って生成されたと

考える

AとScoreの線形結合は平均𝜆を決めると考える

平均𝜆は0以上の値なので、線形結合は指数変換する

よって、モデル式は

λ 𝑛 = 𝑒 𝑏1+ 𝑏2∗𝐴 𝑛 + 𝑏3∗𝑆𝑐𝑜𝑟𝑒 𝑛

𝑌 𝑛 = 𝑃𝑜𝑖𝑠𝑠𝑜𝑛 𝜆 𝑛

2017/2/26 Osaka.Stan #3 Chapter 5-2 48

Page 49: Osaka.Stan #3 Chapter 5-2

総授業回数をポアソン回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 49

λ 𝑛 = 𝑒 𝑏1+ 𝑏2∗𝐴 𝑛 + 𝑏3∗𝑆𝑐𝑜𝑟𝑒 𝑛 𝑛 = 1,… ,𝑁

𝑌 𝑛 = 𝑃𝑜𝑖𝑠𝑠𝑜𝑛 𝜆 𝑛 𝑛 = 1,… , 𝑁

model_5_6_poisson.stan

Page 50: Osaka.Stan #3 Chapter 5-2

総授業回数をポアソン回帰

2017/2/26 Osaka.Stan #3 Chapter 5-2 50

• 収束してる様子

↓ 予測値も整数値をとっている!

Page 51: Osaka.Stan #3 Chapter 5-2

ポアソン回帰の結果の解釈

学問の興味の高い学生とそうでない学生の違いは?

学問の興味が1SD高いと、授業回数が平均して1.04倍くらい高い

2017/2/26 Osaka.Stan #3 Chapter 5-2 51

学問の興味が平均値な学生の授業回数の平均 = 𝑒3.58 +0.26 ∗𝐴[𝑛]+0.29 ∗

121.7

200

学問の興味が平均値+1SDな学生の授業回数の平均 = 𝑒3.58 + 0.26 ∗𝐴[𝑛]+0.29 ∗

121.7+28.1200

学問の興味が平均値+1SDな学生の授業回数の平均

学問の興味が平均値な学生の授業回数の平均=𝑒

3.58 + 0.26 ∗𝐴[𝑛]+0.29 ∗121.7+28.1

200

𝑒3.58 +0.26 ∗𝐴[𝑛]+0.29 ∗

121.7200

=𝑒3.58 ∗ 𝑒0.26∗𝐴[𝑛] ∗ 𝑒

0.29∗121.7200 ∗ 𝑒

0.29∗28.1200

𝑒3.58 ∗ 𝑒0.26∗𝐴[𝑛] ∗ 𝑒0.29∗

121.7200

= 𝑒0.29∗

28.1

200 ≒ 1.04

Page 52: Osaka.Stan #3 Chapter 5-2

練習問題(5)

2017/2/26 Osaka.Stan #3 Chapter 5-2 52

• 横軸に実測値、縦軸に

予測値の中央値と90%

予測区間を描画

• あまりあてはまりがよく

なさそうに見える

Page 53: Osaka.Stan #3 Chapter 5-2

飛ばした話①

• パラメータは個別に宣言しても、配列で宣言しても大丈夫

2017/2/26 Osaka.Stan #3 Chapter 5-2 53

Page 54: Osaka.Stan #3 Chapter 5-2

飛ばした話②

• binomial_logit, bernoulli_logit, poisson_logといった関数もある

2017/2/26 Osaka.Stan #3 Chapter 5-2 54

Page 55: Osaka.Stan #3 Chapter 5-2

練習問題(6)、(7)

2017/2/26 Osaka.Stan #3 Chapter 5-2 55

Page 56: Osaka.Stan #3 Chapter 5-2

練習問題(6)、(7)

• 別のデータを使ってStanで分析する• data3a.csv ポアソン回帰

• data4a.csv 二項ロジスティック回帰

• いずれも久保拓弥先生の『データ

解析のための統計モデリング入門

―一般化線形モデル・階層ベイズ

モデル・MCMC―』(2012年岩波書店)

のサンプルデータ

2017/2/26 Osaka.Stan #3 Chapter 5-2 56

http://amzn.asia/c0kUD8B

Page 57: Osaka.Stan #3 Chapter 5-2

• 久保(2012) 3章 p.40の例題データ

• 架空植物100個体を調査して得られた種子数のデータ

• y: 個体から得られた種子数

• x: 個体の体サイズ

• f: 肥料を加えたか否か(T=加えた、C=加えていない)

「xとfでどれほど種子数yを予測できるか?

また、どれほど種子数yに影響しているか?」を知りたい

練習問題(6)

2017/2/26 Osaka.Stan #3 Chapter 5-2 57

Page 58: Osaka.Stan #3 Chapter 5-2

練習問題(6)

2017/2/26 Osaka.Stan #3 Chapter 5-2 58久保(2012) p. 41より

予測したい影響を知りたい

Page 59: Osaka.Stan #3 Chapter 5-2

練習問題(6) 久保(2012)に従ってglmで分析

2017/2/26 Osaka.Stan #3 Chapter 5-2 59

• 推定された結果は

𝜆 = 𝑒(1.26 + 0.08∗𝑥 + −0.03 ∗𝑓)

f=Cと比べたときのf=Tの影響

Page 60: Osaka.Stan #3 Chapter 5-2

練習問題(6) Stanに実装

2017/2/26 Osaka.Stan #3 Chapter 5-2 60

λ 𝑛 = 𝑒 𝑏1+ 𝑏2∗𝑋 𝑛 + 𝑏3∗𝐹 𝑛 𝑛 = 1,… ,𝑁

𝑌 𝑛 = 𝑃𝑜𝑖𝑠𝑠𝑜𝑛 𝜆 𝑛 𝑛 = 1,… , 𝑁

fは後でT=1、C=0として変換する

model_ex6.stan

Page 61: Osaka.Stan #3 Chapter 5-2

練習問題(6) Stanに実装

2017/2/26 Osaka.Stan #3 Chapter 5-2 61

• 推定された結果は

𝜆[𝑛] = 𝑒(1.25 + 0.08∗𝑥[𝑛] + −0.03 ∗𝑓[𝑛])

・・・ということでだいたいglmの結果と似た感じに

Page 62: Osaka.Stan #3 Chapter 5-2

• 久保(2012) 6章 p.116の例題データ

• 架空植物100個体を調査して得られた種子数のデータ• N: 個体から得られた種子数• y: Nのうち、発芽した種子数• x: 個体の体サイズ• f: 肥料を加えたか否か(T=加えた、C=加えていない)

「xとfでどれほど発芽した種子数yを予測できるか?

また、どれほど種子の発芽率に影響しているか?」を知りたい

練習問題(7)

2017/2/26 Osaka.Stan #3 Chapter 5-2 62

Page 63: Osaka.Stan #3 Chapter 5-2

練習問題(7)

2017/2/26 Osaka.Stan #3 Chapter 5-2 63

予測したい影響を知りたい

発芽率q

二項分布

久保(2012) p. 116より

Page 64: Osaka.Stan #3 Chapter 5-2

練習問題(7) 久保(2012)に従ってglmで分析

2017/2/26 Osaka.Stan #3 Chapter 5-2 64

• 推定された結果は

𝑞 =1

1+𝑒−(−19.54 +1.95∗𝑥 +2.02∗𝑓)

Page 65: Osaka.Stan #3 Chapter 5-2

練習問題(7) Stanに実装

2017/2/26 Osaka.Stan #3 Chapter 5-2 65

𝑞 𝑖 =1

1 + 𝑒− 𝑏1+ 𝑏2∗𝑋 𝑖 + 𝑏3∗𝐹 𝑖𝑖 = 1, 2,… , 𝐼

𝑌 𝑖 = 𝐵𝑖𝑛𝑜𝑚𝑖𝑎𝑙 𝑁 𝑖 , 𝑞 𝑖 𝑖 = 1, 2,… , 𝐼

model_ex7.stan

Page 66: Osaka.Stan #3 Chapter 5-2

練習問題(7) Stanに実装

2017/2/26 Osaka.Stan #3 Chapter 5-2 66

• 推定された結果は

𝑞 𝑛 =1

1+𝑒− −19.72 +1.97∗𝑥 𝑛 +2.05∗𝑓 𝑛

・・・ということでそこそこglmの結果と似た感じに

Page 67: Osaka.Stan #3 Chapter 5-2

練習問題(7)実測値と予測値のプロット

2017/2/26 Osaka.Stan #3 Chapter 5-2 67

0 2 4 6 8

02

46

8

observed

pre

dic

ted

F=C

F=T

• おおむね当てはまっている

と言えそう