Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
第六回「データ解析のた
めの統計モデリング入門」
読書会
第六章 GLMの応用範囲を広げる
@gepuro
自己紹介
• 電気通信大学大学院 修士2年
• 専門:信頼性工学、生存時間解析
6.1 さまざまな種類のデータで応用できるGLM
• GLMの特徴
• 確率分布・リンク関数・線形予測子の組み合わ
せを指定することによって、さまざまなタイプの
データを表現できる
確率分布 乱数生成 glm()のfamily
指定
よく使うリ...
6.2 例題:上限のあるカウントデータ
• 二項分布を使う
• 応答変数𝑦 ∈ {0, 1, 2, … , 𝑁}の範囲の値をとる
• 「N個体の実験対象に同じ処理をしたら、y個体で
反応が陽性、N-y個体では陰性」
例題のデータ
N y x f
8 1 9.8 C
8 6 10 C
8 5 11 C
8 6 11 C
8 1 9.4 C
8 1 8.8 C
・・・ ・・・ ・・・ ・・・
• 𝑁𝑖個の観察種子のうち生きていて発芽能力がある
ものは𝑦𝑖個、死...
植物の体サイズ𝑥𝑖と生存種子数𝑦𝑖
植物の体サイズ𝑥𝑖
生存種子数𝑦𝑖
○:肥料あり
○:肥料なし
• 体サイズ𝑥𝑖が大きくなると
生存種子数𝑦𝑖が大きくなるらしい
• 肥料をやると生存種子数
が多くなるらしい
6.3 二項分布で表現する「あり・なし」カウントデータ
• 二項分布の確率分布
N個中のy個で事象が生起する確率
𝑝 𝑦 𝑁, 𝑞 =
𝑁
𝑦
𝑞 𝑦
1 − 𝑞 𝑁−𝑦
確率𝑝(𝑦𝑖|8,𝑞)
𝑦𝑖
ー:q=0.1
ー:q=0.3
ー:q=0...
6.4 ロジスティック回帰とロジットリンク関数
線形予測子𝑧
確率𝑞
𝑞𝑖 = 𝑙𝑜𝑔𝑖𝑠𝑡𝑖𝑐 𝑧𝑖 =
1
1 + exp(−𝑧𝑖)
• 6.4.1 ロジットリンク関数
種子の生存確率𝑞𝑖をパラメータにする
• ロジスティック関数と線形予測子𝑧𝑖 = 𝛽1 + 𝛽2 𝑥𝑖の
関係を見る
𝛽1 = 2
𝛽1 = 0
𝛽1 = −3
𝛽2 = 4
𝛽2 = 2
𝛽1 = −1
確率𝑞
確率𝑞
説明変数𝑥 説明変数𝑥
𝛽2 = 2の時 𝛽1 = 0の時
6.4.2 パラメータ推定
𝐿 𝛽𝑗 =
𝑖
𝑁𝑖
𝑦𝑖
𝑞𝑖
𝑦 𝑖
1 − 𝑞𝑖
𝑁 𝑖−𝑦 𝑖
log(𝐿 𝛽𝑗 =
𝑖
𝑙𝑜𝑔
𝑁𝑖
𝑦𝑖
+ 𝑦𝑖 log 𝑞𝑖 + 𝑁𝑖 − 𝑦𝑖 log(1 − 𝑞𝑖)
尤度関数
対数尤度関数
対数...
> model <- glm(cbind(y, N-y)~x+f, data=data4a, family=binomial)
> model
Call: glm(formula = cbind(y, N - y) ~ x + f, famil...
例題データの一部(肥料なし)
xx
生存種子数𝑦𝑖
6.4.3 ロジットリンク関数の意味・解釈
𝑞𝑖
1 − 𝑞𝑖
= exp 線形予測子
= exp(𝛽1 + 𝛽2 𝑥𝑖 + 𝛽3 𝑓𝑖)
= exp 𝛽1 exp 𝛽2 exp(𝛽3)
ロジスティック関数:𝑞𝑖 =
1
1+exp(−𝑧 𝑖)...
𝑞𝑖
1 − 𝑞𝑖
= exp −19.5 exp 1.95𝑥𝑖 exp(2.02𝑓𝑖)
𝑥𝑖が1単位増加したらexp(1.95 𝑥𝑖 + 1 )になる。
exp 1.95 ≈ 7
オッズが7倍ぐらい増加する。
「病気であれば、発病リスクが7倍...
6.4.4 ロジスティック回帰のモデル選択
library(MASS)
stepAIC(fit.xf)
AIC最少のモデルを選択すること
ができる。
おまけ
glmを使わずに推定する。
対数尤度関数を定義する
funQ <- function(beta1, beta2, beta3, x){
1 / (1 + exp(-(beta1 + beta2*x$x + beta3*x$f)))
}
logLikelyhood.part...
optimで対数尤度の最大値を求める
> optim(c(1,1,1), logLikelyhood, control=list(fnscale=-1))
$par
[1] -19.537817 1.952571 2.022927
$value...
それぞれの2階微分を求める
f <- expression(
y*log(1/(1+exp(-b1-b2*x-b3*z)))
+ (N-y)*log(1-1/(1+exp(-b1-b2*x-b3*z)))
)
b11 <- D(D(f, "b1...
ヘッセ行列を求める
rslt <- NULL
for(hen in c(b11, b12, b13, b21, b22, b23, b31, b32, b33)){
tmp <- 0
for(i in 1:nrow(data4a)){
N <-...
逆行列を求める
> solve(hessian)
[,1] [,2] [,3]
[1,] 1.9991552 -0.19551996 -0.19765617
[2,] -0.1955200 0.01928951 0.01778859
[3,] ...
対角行列の平方根を求める
> (se <- sqrt(diag(solve(hessian))))
[1] 1.4139149 0.1388867 0.2313375
これらが標準誤差になる。
glmの結果
Std. Error
1.4138
...
z統計量を求める
> (zvalue <- c(b1, b2, b3)/ se)
[1] -13.818242 14.058736 8.744485
glmの結果
z value
-13.82
14.06
8.74
glmの結果
Pr(>|z|) Pr(>|z|)
<2e-16 ***
<2e-16 ***
<2e-16 ***を求める
> pnorm(abs(zvalue), lower.tail=F)
[1] 9.892197e-44 3.404587...
おしまい
Upcoming SlideShare
Loading in …5
×

of

第六回「データ解析のための統計モデリング入門」前半 Slide 1 第六回「データ解析のための統計モデリング入門」前半 Slide 2 第六回「データ解析のための統計モデリング入門」前半 Slide 3 第六回「データ解析のための統計モデリング入門」前半 Slide 4 第六回「データ解析のための統計モデリング入門」前半 Slide 5 第六回「データ解析のための統計モデリング入門」前半 Slide 6 第六回「データ解析のための統計モデリング入門」前半 Slide 7 第六回「データ解析のための統計モデリング入門」前半 Slide 8 第六回「データ解析のための統計モデリング入門」前半 Slide 9 第六回「データ解析のための統計モデリング入門」前半 Slide 10 第六回「データ解析のための統計モデリング入門」前半 Slide 11 第六回「データ解析のための統計モデリング入門」前半 Slide 12 第六回「データ解析のための統計モデリング入門」前半 Slide 13 第六回「データ解析のための統計モデリング入門」前半 Slide 14 第六回「データ解析のための統計モデリング入門」前半 Slide 15 第六回「データ解析のための統計モデリング入門」前半 Slide 16 第六回「データ解析のための統計モデリング入門」前半 Slide 17 第六回「データ解析のための統計モデリング入門」前半 Slide 18 第六回「データ解析のための統計モデリング入門」前半 Slide 19 第六回「データ解析のための統計モデリング入門」前半 Slide 20 第六回「データ解析のための統計モデリング入門」前半 Slide 21 第六回「データ解析のための統計モデリング入門」前半 Slide 22 第六回「データ解析のための統計モデリング入門」前半 Slide 23 第六回「データ解析のための統計モデリング入門」前半 Slide 24 第六回「データ解析のための統計モデリング入門」前半 Slide 25
Upcoming SlideShare
統計的学習の基礎 4.4~
Next
Download to read offline and view in fullscreen.

6 Likes

Share

Download to read offline

第六回「データ解析のための統計モデリング入門」前半

Download to read offline

読書会

Related Books

Free with a 30 day trial from Scribd

See all

第六回「データ解析のための統計モデリング入門」前半

  1. 1. 第六回「データ解析のた めの統計モデリング入門」 読書会 第六章 GLMの応用範囲を広げる @gepuro
  2. 2. 自己紹介 • 電気通信大学大学院 修士2年 • 専門:信頼性工学、生存時間解析
  3. 3. 6.1 さまざまな種類のデータで応用できるGLM • GLMの特徴 • 確率分布・リンク関数・線形予測子の組み合わ せを指定することによって、さまざまなタイプの データを表現できる 確率分布 乱数生成 glm()のfamily 指定 よく使うリン ク関数 (離散) 二項分布 rbinom() binomial logit ポアソン分布 rpois() poisson log 負の二項分布 rnbinom() (glm.nb()関数) log (連続) ガンマ分布 rgamma() gamma logかな? 正規分布 rnomd() Gaussian identity
  4. 4. 6.2 例題:上限のあるカウントデータ • 二項分布を使う • 応答変数𝑦 ∈ {0, 1, 2, … , 𝑁}の範囲の値をとる • 「N個体の実験対象に同じ処理をしたら、y個体で 反応が陽性、N-y個体では陰性」
  5. 5. 例題のデータ N y x f 8 1 9.8 C 8 6 10 C 8 5 11 C 8 6 11 C 8 1 9.4 C 8 1 8.8 C ・・・ ・・・ ・・・ ・・・ • 𝑁𝑖個の観察種子のうち生きていて発芽能力がある ものは𝑦𝑖個、死んだ種子は𝑁𝑖 − 𝑦𝑖個 • xは体サイズ • fは肥料の有無。Cは肥料なし、Tは肥料あり > summary(data4a) N y x f Min. :8 Min. :0.00 Min. : 7.660 C:50 1st Qu. :8 1st Qu. :3.00 1st Qu. : 9.338 T:50 Median :8 Median :6.00 Median: 9.965 Mean :8 Mean :5.08 Mean : 9.967 3rd Qu. :8 3rd Qu. :8.00 3rd Qu.:10.770 Max. :8 Max. :8.00 Max. :12.440 表: データ例
  6. 6. 植物の体サイズ𝑥𝑖と生存種子数𝑦𝑖 植物の体サイズ𝑥𝑖 生存種子数𝑦𝑖 ○:肥料あり ○:肥料なし • 体サイズ𝑥𝑖が大きくなると 生存種子数𝑦𝑖が大きくなるらしい • 肥料をやると生存種子数 が多くなるらしい
  7. 7. 6.3 二項分布で表現する「あり・なし」カウントデータ • 二項分布の確率分布 N個中のy個で事象が生起する確率 𝑝 𝑦 𝑁, 𝑞 = 𝑁 𝑦 𝑞 𝑦 1 − 𝑞 𝑁−𝑦 確率𝑝(𝑦𝑖|8,𝑞) 𝑦𝑖 ー:q=0.1 ー:q=0.3 ー:q=0.8
  8. 8. 6.4 ロジスティック回帰とロジットリンク関数 線形予測子𝑧 確率𝑞 𝑞𝑖 = 𝑙𝑜𝑔𝑖𝑠𝑡𝑖𝑐 𝑧𝑖 = 1 1 + exp(−𝑧𝑖) • 6.4.1 ロジットリンク関数 種子の生存確率𝑞𝑖をパラメータにする
  9. 9. • ロジスティック関数と線形予測子𝑧𝑖 = 𝛽1 + 𝛽2 𝑥𝑖の 関係を見る 𝛽1 = 2 𝛽1 = 0 𝛽1 = −3 𝛽2 = 4 𝛽2 = 2 𝛽1 = −1 確率𝑞 確率𝑞 説明変数𝑥 説明変数𝑥 𝛽2 = 2の時 𝛽1 = 0の時
  10. 10. 6.4.2 パラメータ推定 𝐿 𝛽𝑗 = 𝑖 𝑁𝑖 𝑦𝑖 𝑞𝑖 𝑦 𝑖 1 − 𝑞𝑖 𝑁 𝑖−𝑦 𝑖 log(𝐿 𝛽𝑗 = 𝑖 𝑙𝑜𝑔 𝑁𝑖 𝑦𝑖 + 𝑦𝑖 log 𝑞𝑖 + 𝑁𝑖 − 𝑦𝑖 log(1 − 𝑞𝑖) 尤度関数 対数尤度関数 対数尤度関数を最大にする推定値のセット{ 𝛽𝑗}を 探し出す。 最尤法
  11. 11. > model <- glm(cbind(y, N-y)~x+f, data=data4a, family=binomial) > model Call: glm(formula = cbind(y, N - y) ~ x + f, family = binomial, data = data4a) Coefficients: (Intercept) x fT -19.536 1.952 2.022 Degrees of Freedom: 99 Total (i.e. Null); 97 Residual Null Deviance: 499.2 Residual Deviance: 123 AIC: 272.2 6.4.2 パラメータ推定
  12. 12. 例題データの一部(肥料なし) xx 生存種子数𝑦𝑖
  13. 13. 6.4.3 ロジットリンク関数の意味・解釈 𝑞𝑖 1 − 𝑞𝑖 = exp 線形予測子 = exp(𝛽1 + 𝛽2 𝑥𝑖 + 𝛽3 𝑓𝑖) = exp 𝛽1 exp 𝛽2 exp(𝛽3) ロジスティック関数:𝑞𝑖 = 1 1+exp(−𝑧 𝑖) ロジット関数:𝑙𝑜𝑔𝑖𝑡 𝑞𝑖 = log 𝑞 𝑖 1−𝑞𝑖 = 𝑧𝑖 変換 オッズ 生存する確率 生存しない確率 𝑞𝑖 = 0.5ならオッズは1倍 𝑞𝑖 = 0.8ならオッズは4倍
  14. 14. 𝑞𝑖 1 − 𝑞𝑖 = exp −19.5 exp 1.95𝑥𝑖 exp(2.02𝑓𝑖) 𝑥𝑖が1単位増加したらexp(1.95 𝑥𝑖 + 1 )になる。 exp 1.95 ≈ 7 オッズが7倍ぐらい増加する。 「病気であれば、発病リスクが7倍になる」と 表現されることがある。
  15. 15. 6.4.4 ロジスティック回帰のモデル選択 library(MASS) stepAIC(fit.xf) AIC最少のモデルを選択すること ができる。
  16. 16. おまけ glmを使わずに推定する。
  17. 17. 対数尤度関数を定義する funQ <- function(beta1, beta2, beta3, x){ 1 / (1 + exp(-(beta1 + beta2*x$x + beta3*x$f))) } logLikelyhood.part <- function(beta1, beta2, beta3, x){ log(choose(x$N, x$y))+x$y*log(funQ(beta1, beta2, beta3, x))+(x$N-x$y)*log(1-funQ(beta1, beta2, beta3, x)) } logLikelyhood <- function(param){ beta1 <- param[1] beta2 <- param[2] beta3 <- param[3] tmp <- 0 for(i in 1:nrow(data4a)){ tmp <- tmp + logLikelyhood.part(beta1, beta2, beta3, data4a[i,]) } return(tmp) }
  18. 18. optimで対数尤度の最大値を求める > optim(c(1,1,1), logLikelyhood, control=list(fnscale=-1)) $par [1] -19.537817 1.952571 2.022927 $value [1] -133.1056 $counts function gradient 228 NA $convergence [1] 0 $message NULL これらが推定値になる。 glmの結果 Coefficients: (Intercept) x fT -19.536 1.952 2.022
  19. 19. それぞれの2階微分を求める f <- expression( y*log(1/(1+exp(-b1-b2*x-b3*z))) + (N-y)*log(1-1/(1+exp(-b1-b2*x-b3*z))) ) b11 <- D(D(f, "b1"),"b1") b12 <- D(D(f, "b1"),"b2") b13 <- D(D(f, "b1"),"b3") b21 <- D(D(f, "b2"),"b1") b22 <- D(D(f, "b2"),"b2") b23 <- D(D(f, "b2"),"b3") b31 <- D(D(f, "b3"),"b1") b32 <- D(D(f, "b3"),"b2") b33 <- D(D(f, "b3"),"b3") b1 <- -19.537817 b2 <- 1.952571 b3 <- 2.022927 の推定値の定義も忘れずに
  20. 20. ヘッセ行列を求める rslt <- NULL for(hen in c(b11, b12, b13, b21, b22, b23, b31, b32, b33)){ tmp <- 0 for(i in 1:nrow(data4a)){ N <- data4a[i,]$N y <- data4a[i,]$y x <- data4a[i,]$x z <- data4a[i,]$f tmp <- tmp + eval(hen) } rslt <- c(rslt, tmp) } hessian <- -matrix(rslt, 3,3 )
  21. 21. 逆行列を求める > solve(hessian) [,1] [,2] [,3] [1,] 1.9991552 -0.19551996 -0.19765617 [2,] -0.1955200 0.01928951 0.01778859 [3,] -0.1976562 0.01778859 0.05351702
  22. 22. 対角行列の平方根を求める > (se <- sqrt(diag(solve(hessian)))) [1] 1.4139149 0.1388867 0.2313375 これらが標準誤差になる。 glmの結果 Std. Error 1.4138 0.1389 0.2313
  23. 23. z統計量を求める > (zvalue <- c(b1, b2, b3)/ se) [1] -13.818242 14.058736 8.744485 glmの結果 z value -13.82 14.06 8.74
  24. 24. glmの結果 Pr(>|z|) Pr(>|z|) <2e-16 *** <2e-16 *** <2e-16 ***を求める > pnorm(abs(zvalue), lower.tail=F) [1] 9.892197e-44 3.404587e-45 1.120176e-18 glmを使わずに、推定できた。
  25. 25. おしまい
  • ykamex

    Feb. 24, 2019
  • WataruHarakita

    Jun. 4, 2015
  • dmasubuchi

    Dec. 22, 2014
  • kensukekoshijima

    Dec. 18, 2014
  • hugokawamura

    Sep. 2, 2014
  • otanet

    Aug. 17, 2014

読書会

Views

Total views

4,030

On Slideshare

0

From embeds

0

Number of embeds

2,145

Actions

Downloads

34

Shares

0

Comments

0

Likes

6

×