贝叶斯模型比较

使用 rstanarm 进行贝叶斯回归建模

Jake Thompson

Psychometrician, ATLAS, University of Kansas

loo 包

  • LOO = leave-one-out(留一法)
    • 近似交叉验证
    • ?loo-package
    • loo 比较模型
使用 rstanarm 进行贝叶斯回归建模

对单个模型使用 loo

library(rstanarm)
library(loo)
stan_model <- stan_glm(kid_score ~ mom_iq, data = kidiq)

loo(stan_model)
Computed from 4000 by 434 log-likelihood matrix

         Estimate   SE
elpd_loo  -1878.5 14.5
p_loo         2.9  0.3
looic      3757.1 29.0
 ------
Monte Carlo SE of elpd_loo is 0.0.

All Pareto k estimates are good (k < 0.5).
See help('pareto-k-diagnostic') for details.
使用 rstanarm 进行贝叶斯回归建模

使用 loo 进行模型比较

model_1pred <- stan_glm(kid_score ~ mom_iq, data = kidiq)
model_2pred <- stan_glm(kid_score ~ mom_iq * mom_hs, data = kidiq)

loo_1pred <- loo(model_1pred)
loo_2pred <- loo(model_2pred)

compare(loo_1pred, loo_2pred)
elpd_diff        se 
      6.1       3.9
使用 rstanarm 进行贝叶斯回归建模

使用 loo 进行模型比较

compare(loo_1pred, loo_2pred)
elpd_diff        se 
      6.1       3.9
  • 正值 = 更偏好第二个模型
  • 负值 = 更偏好第一个模型
  • 是否显著差异?
    • 绝对差值相对于标准误的大小
使用 rstanarm 进行贝叶斯回归建模

让我们来练习!

使用 rstanarm 进行贝叶斯回归建模

Preparing Video For Download...