Shrinkage

分析の目的

水槽ごとにカエルの卵の生存率を推定する。 階層ベイズモデルにおける縮退(Shrinkage)効果を確認する。

References

Richard McElreath, "Statistical Rethinking", Chapter12.1. Example: Multilevel tadpoles

データの概要

今回は水槽ごとのdensity(卵の数=水槽の大きさ)とsurv(生存数)の二つの変数を使用する.

モデル式

各水槽iにはDensity[i]個の卵があり, そのうちSurv[i]個が生き残る. このとき, 生存する卵は二項分布Binomial(Density[i], p[i])に従うと考える. ここで, p[i]は水槽iにおける生存確率である. 生存確率p[i]は水槽によって異なる係数αpond[i] をロジスティック関数${\rm inv_logit}$で(0, 1)の区間に変換したものとする. αpond[i]は平均α, 標準偏差σの正規分布から生成されるものとする. また, αの事前分布は平均0, 標準偏差1の正規分布, σの事前分布は平均0, 標準偏差1の半コーシー分布とする.

$$
\begin{align}
Surv[i] & \sim {\rm Binomial}(Density[i], p[i]) &i&=1,2,...,I\\
p[i] & = {\rm inv\_logit}(\alpha_{pond}[i]) &i&=1,2,...,I\\
\alpha_{pond}[i] & \sim {\rm Normal}(\alpha, \sigma) &i&=1,2,...,I\\
\alpha & \sim {\rm Normal}(0, 1)\\
\sigma & \sim {\rm HalfCauchy}(0, 1)\\
\end{align}
$$

パラメータ推定実行

推定結果

ms <-rstan::extract(fit)
propotion_survival <- reedfrogs$surv / reedfrogs$density
average_propotion <- sum(reedfrogs$surv)/sum(reedfrogs$density)
plot_df <- data.frame(pond_index=1:48, empirical=propotion_survival, estimated=colMeans(ms$p))
plot_df.long <- melt(plot_df, id.vars="pond_index", variable.name="kind", value.name="propotion")
ggplot(plot_df.long, aes(x=pond_index, y=propotion, colour=kind)) + 
  geom_point() +
  geom_hline(yintercept=average_propotion, linetype="dashed") +
  xlab("Pond Index") +
  ylab("Propotion Survival")

colMeans(ms$p)
##  [1] 0.8702066 0.9323779 0.7144771 0.9321336 0.8689858 0.8706553 0.9307631
##  [8] 0.8665497 0.4588228 0.8673171 0.7079410 0.6241969 0.7125905 0.5403379
## [15] 0.8649620 0.8713687 0.9351615 0.9003667 0.8686281 0.9623659 0.9034832
## [22] 0.9029950 0.9022850 0.8296456 0.2732475 0.5365202 0.2000485 0.3881909
## [29] 0.5388969 0.7968774 0.3506360 0.4249060 0.9508013 0.9263799 0.9259601
## [36] 0.8762601 0.8761870 0.9701417 0.9307551 0.9025013 0.1494744 0.3638514
## [43] 0.3924659 0.4178878 0.6398540 0.3600154 0.8790053 0.4968829
ggplot()+theme_set(theme_bw(base_size=18,base_family="HiraKakuProN-W3"))

print(fit)
## Inference for Stan model: Shrinkage.
## 4 chains, each with iter=500; warmup=250; thin=1; 
## post-warmup draws per chain=250, total post-warmup draws=1000.
## 
##                   mean se_mean   sd    2.5%     25%     50%     75%
## alpha_pond[1]     2.14    0.03 0.85    0.70    1.55    2.07    2.65
## alpha_pond[2]     3.08    0.06 1.16    1.24    2.29    2.95    3.76
## alpha_pond[3]     1.00    0.02 0.63   -0.24    0.59    0.98    1.43
## alpha_pond[4]     3.05    0.03 1.10    1.31    2.24    2.98    3.77
## alpha_pond[5]     2.14    0.03 0.88    0.64    1.50    2.10    2.67
## alpha_pond[6]     2.15    0.03 0.85    0.69    1.54    2.05    2.68
## alpha_pond[7]     3.10    0.04 1.19    0.96    2.29    2.95    3.82
## alpha_pond[8]     2.13    0.03 0.89    0.56    1.55    2.06    2.67
## alpha_pond[9]    -0.18    0.02 0.61   -1.39   -0.59   -0.17    0.25
## alpha_pond[10]    2.14    0.03 0.91    0.53    1.55    2.04    2.67
## alpha_pond[11]    0.97    0.02 0.64   -0.26    0.52    0.96    1.37
## alpha_pond[12]    0.55    0.02 0.62   -0.64    0.15    0.54    0.92
## alpha_pond[13]    1.00    0.02 0.68   -0.25    0.51    0.98    1.48
## alpha_pond[14]    0.18    0.02 0.62   -1.04   -0.21    0.18    0.58
## alpha_pond[15]    2.13    0.03 0.92    0.48    1.52    2.09    2.70
## alpha_pond[16]    2.20    0.03 0.94    0.61    1.51    2.10    2.80
## alpha_pond[17]    2.93    0.03 0.83    1.51    2.34    2.89    3.42
## alpha_pond[18]    2.38    0.02 0.71    1.20    1.87    2.31    2.79
## alpha_pond[19]    2.01    0.02 0.59    1.00    1.60    1.98    2.34
## alpha_pond[20]    3.66    0.03 1.04    1.97    2.90    3.55    4.32
## alpha_pond[21]    2.41    0.02 0.68    1.24    1.93    2.35    2.82
## alpha_pond[22]    2.40    0.02 0.67    1.20    1.94    2.34    2.80
## alpha_pond[23]    2.38    0.02 0.64    1.24    1.92    2.33    2.79
## alpha_pond[24]    1.68    0.02 0.57    0.67    1.29    1.65    2.06
## alpha_pond[25]   -1.02    0.01 0.44   -1.89   -1.32   -0.99   -0.71
## alpha_pond[26]    0.15    0.01 0.39   -0.58   -0.12    0.15    0.42
## alpha_pond[27]   -1.45    0.02 0.48   -2.43   -1.75   -1.41   -1.13
## alpha_pond[28]   -0.47    0.01 0.41   -1.34   -0.72   -0.48   -0.19
## alpha_pond[29]    0.16    0.01 0.39   -0.61   -0.10    0.16    0.41
## alpha_pond[30]    1.44    0.02 0.51    0.52    1.09    1.41    1.78
## alpha_pond[31]   -0.64    0.01 0.42   -1.46   -0.92   -0.62   -0.36
## alpha_pond[32]   -0.31    0.01 0.38   -1.05   -0.58   -0.30   -0.05
## alpha_pond[33]    3.16    0.02 0.71    2.00    2.65    3.11    3.62
## alpha_pond[34]    2.70    0.02 0.65    1.56    2.25    2.66    3.08
## alpha_pond[35]    2.68    0.02 0.63    1.55    2.23    2.67    3.09
## alpha_pond[36]    2.04    0.02 0.49    1.12    1.71    2.03    2.36
## alpha_pond[37]    2.06    0.02 0.53    1.11    1.68    2.04    2.40
## alpha_pond[38]    3.87    0.03 1.01    2.23    3.15    3.75    4.54
## alpha_pond[39]    2.76    0.02 0.64    1.66    2.30    2.72    3.15
## alpha_pond[40]    2.34    0.02 0.56    1.34    1.95    2.31    2.71
## alpha_pond[41]   -1.82    0.02 0.51   -2.98   -2.13   -1.78   -1.48
## alpha_pond[42]   -0.58    0.01 0.35   -1.31   -0.81   -0.57   -0.33
## alpha_pond[43]   -0.45    0.01 0.34   -1.16   -0.68   -0.43   -0.23
## alpha_pond[44]   -0.34    0.01 0.37   -1.05   -0.60   -0.34   -0.10
## alpha_pond[45]    0.59    0.01 0.34   -0.06    0.37    0.59    0.82
## alpha_pond[46]   -0.59    0.01 0.34   -1.29   -0.81   -0.59   -0.36
## alpha_pond[47]    2.09    0.02 0.54    1.13    1.69    2.07    2.43
## alpha_pond[48]   -0.01    0.01 0.33   -0.65   -0.22   -0.02    0.20
## alpha             1.30    0.01 0.26    0.82    1.12    1.29    1.47
## sigma             1.62    0.01 0.21    1.25    1.48    1.60    1.75
## p[1]              0.87    0.00 0.09    0.67    0.82    0.89    0.93
## p[2]              0.93    0.00 0.06    0.78    0.91    0.95    0.98
## p[3]              0.71    0.00 0.12    0.44    0.64    0.73    0.81
## p[4]              0.93    0.00 0.06    0.79    0.90    0.95    0.98
## p[5]              0.87    0.00 0.09    0.65    0.82    0.89    0.93
## p[6]              0.87    0.00 0.09    0.67    0.82    0.89    0.94
## p[7]              0.93    0.00 0.07    0.72    0.91    0.95    0.98
## p[8]              0.87    0.00 0.09    0.64    0.83    0.89    0.94
## p[9]              0.46    0.00 0.14    0.20    0.36    0.46    0.56
## p[10]             0.87    0.00 0.09    0.63    0.82    0.89    0.94
## p[11]             0.71    0.00 0.12    0.44    0.63    0.72    0.80
## p[12]             0.62    0.00 0.13    0.35    0.54    0.63    0.72
## p[13]             0.71    0.00 0.13    0.44    0.63    0.73    0.81
## p[14]             0.54    0.00 0.14    0.26    0.45    0.54    0.64
## p[15]             0.86    0.00 0.10    0.62    0.82    0.89    0.94
## p[16]             0.87    0.00 0.09    0.65    0.82    0.89    0.94
## p[17]             0.94    0.00 0.05    0.82    0.91    0.95    0.97
## p[18]             0.90    0.00 0.06    0.77    0.87    0.91    0.94
## p[19]             0.87    0.00 0.06    0.73    0.83    0.88    0.91
## p[20]             0.96    0.00 0.03    0.88    0.95    0.97    0.99
## p[21]             0.90    0.00 0.05    0.78    0.87    0.91    0.94
## p[22]             0.90    0.00 0.05    0.77    0.87    0.91    0.94
## p[23]             0.90    0.00 0.05    0.77    0.87    0.91    0.94
## p[24]             0.83    0.00 0.07    0.66    0.78    0.84    0.89
## p[25]             0.27    0.00 0.08    0.13    0.21    0.27    0.33
## p[26]             0.54    0.00 0.09    0.36    0.47    0.54    0.60
## p[27]             0.20    0.00 0.07    0.08    0.15    0.20    0.24
## p[28]             0.39    0.00 0.09    0.21    0.33    0.38    0.45
## p[29]             0.54    0.00 0.09    0.35    0.48    0.54    0.60
## p[30]             0.80    0.00 0.08    0.63    0.75    0.80    0.86
## p[31]             0.35    0.00 0.09    0.19    0.29    0.35    0.41
## p[32]             0.42    0.00 0.09    0.26    0.36    0.43    0.49
## p[33]             0.95    0.00 0.03    0.88    0.93    0.96    0.97
## p[34]             0.93    0.00 0.04    0.83    0.90    0.93    0.96
## p[35]             0.93    0.00 0.04    0.83    0.90    0.94    0.96
## p[36]             0.88    0.00 0.05    0.75    0.85    0.88    0.91
## p[37]             0.88    0.00 0.05    0.75    0.84    0.88    0.92
## p[38]             0.97    0.00 0.03    0.90    0.96    0.98    0.99
## p[39]             0.93    0.00 0.04    0.84    0.91    0.94    0.96
## p[40]             0.90    0.00 0.05    0.79    0.88    0.91    0.94
## p[41]             0.15    0.00 0.06    0.05    0.11    0.14    0.18
## p[42]             0.36    0.00 0.08    0.21    0.31    0.36    0.42
## p[43]             0.39    0.00 0.08    0.24    0.34    0.39    0.44
## p[44]             0.42    0.00 0.09    0.26    0.35    0.42    0.48
## p[45]             0.64    0.00 0.08    0.49    0.59    0.64    0.69
## p[46]             0.36    0.00 0.08    0.22    0.31    0.36    0.41
## p[47]             0.88    0.00 0.05    0.76    0.84    0.89    0.92
## p[48]             0.50    0.00 0.08    0.34    0.44    0.50    0.55
## lp__           -533.70    0.29 5.52 -544.94 -537.09 -533.26 -529.74
##                  97.5% n_eff Rhat
## alpha_pond[1]     3.98  1000 1.00
## alpha_pond[2]     5.56   441 1.00
## alpha_pond[3]     2.21  1000 1.00
## alpha_pond[4]     5.20  1000 1.00
## alpha_pond[5]     4.07  1000 1.00
## alpha_pond[6]     3.97  1000 1.00
## alpha_pond[7]     5.72  1000 1.00
## alpha_pond[8]     4.12  1000 1.00
## alpha_pond[9]     0.97  1000 1.00
## alpha_pond[10]    4.11  1000 1.00
## alpha_pond[11]    2.31  1000 1.00
## alpha_pond[12]    1.85  1000 1.00
## alpha_pond[13]    2.36  1000 1.00
## alpha_pond[14]    1.33  1000 1.00
## alpha_pond[15]    4.04  1000 1.01
## alpha_pond[16]    4.23  1000 1.00
## alpha_pond[17]    4.77   664 1.00
## alpha_pond[18]    3.96  1000 1.00
## alpha_pond[19]    3.25  1000 1.00
## alpha_pond[20]    5.94  1000 1.00
## alpha_pond[21]    3.79  1000 1.00
## alpha_pond[22]    3.82  1000 1.01
## alpha_pond[23]    3.73  1000 1.00
## alpha_pond[24]    2.83  1000 1.00
## alpha_pond[25]   -0.17  1000 1.00
## alpha_pond[26]    0.94  1000 1.00
## alpha_pond[27]   -0.56  1000 1.00
## alpha_pond[28]    0.31  1000 1.00
## alpha_pond[29]    0.97  1000 1.00
## alpha_pond[30]    2.48  1000 1.00
## alpha_pond[31]    0.16  1000 1.00
## alpha_pond[32]    0.40  1000 1.00
## alpha_pond[33]    4.67  1000 1.00
## alpha_pond[34]    4.10  1000 1.00
## alpha_pond[35]    4.01  1000 1.00
## alpha_pond[36]    3.05  1000 1.00
## alpha_pond[37]    3.15  1000 1.00
## alpha_pond[38]    6.09  1000 1.00
## alpha_pond[39]    4.15  1000 1.00
## alpha_pond[40]    3.55  1000 1.00
## alpha_pond[41]   -0.95   820 1.00
## alpha_pond[42]    0.10  1000 1.00
## alpha_pond[43]    0.23  1000 1.00
## alpha_pond[44]    0.38  1000 1.00
## alpha_pond[45]    1.25  1000 1.00
## alpha_pond[46]    0.08  1000 1.00
## alpha_pond[47]    3.22  1000 1.00
## alpha_pond[48]    0.64  1000 1.00
## alpha             1.81  1000 1.00
## sigma             2.11   403 1.01
## p[1]              0.98  1000 1.00
## p[2]              1.00  1000 1.00
## p[3]              0.90  1000 1.00
## p[4]              0.99  1000 1.00
## p[5]              0.98  1000 1.00
## p[6]              0.98  1000 1.00
## p[7]              1.00  1000 1.00
## p[8]              0.98  1000 1.00
## p[9]              0.72  1000 1.00
## p[10]             0.98  1000 1.00
## p[11]             0.91  1000 1.00
## p[12]             0.86  1000 1.00
## p[13]             0.91  1000 1.00
## p[14]             0.79  1000 1.00
## p[15]             0.98  1000 1.00
## p[16]             0.99  1000 1.00
## p[17]             0.99  1000 1.00
## p[18]             0.98  1000 1.00
## p[19]             0.96  1000 1.00
## p[20]             1.00  1000 1.00
## p[21]             0.98  1000 1.00
## p[22]             0.98  1000 1.00
## p[23]             0.98  1000 1.00
## p[24]             0.94  1000 1.00
## p[25]             0.46  1000 1.00
## p[26]             0.72  1000 1.00
## p[27]             0.36  1000 1.00
## p[28]             0.58  1000 1.00
## p[29]             0.72  1000 1.00
## p[30]             0.92  1000 1.00
## p[31]             0.54  1000 1.00
## p[32]             0.60  1000 1.00
## p[33]             0.99  1000 1.00
## p[34]             0.98  1000 1.00
## p[35]             0.98  1000 1.00
## p[36]             0.95  1000 1.00
## p[37]             0.96  1000 1.00
## p[38]             1.00  1000 1.00
## p[39]             0.98  1000 1.00
## p[40]             0.97  1000 1.00
## p[41]             0.28  1000 1.00
## p[42]             0.53  1000 1.00
## p[43]             0.56  1000 1.00
## p[44]             0.59  1000 1.00
## p[45]             0.78  1000 1.00
## p[46]             0.52  1000 1.00
## p[47]             0.96  1000 1.00
## p[48]             0.65  1000 1.00
## lp__           -524.08   355 1.00
## 
## Samples were drawn using NUTS(diag_e) at Sun Jul 29 22:37:40 2018.
## For each parameter, n_eff is a crude measure of effective sample size,
## and Rhat is the potential scale reduction factor on split chains (at 
## convergence, Rhat=1).

結果

traceplot(fit, pars=c("sigma"))

plot(fit, pars=c("alpha", "sigma"))
## ci_level: 0.8 (80% intervals)

## outer_level: 0.95 (95% intervals)

ms <- extract(fit, permuted=TRUE)
#library(shinystan)
#sso <- launch_shinystan(fit)