Model checking
- Dr. Jarad Niemi
STAT 544 - Iowa State University
February 28, 2019
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 1 / 23
Model checking Dr. Jarad Niemi STAT 544 - Iowa State University - - PowerPoint PPT Presentation
Model checking Dr. Jarad Niemi STAT 544 - Iowa State University February 28, 2019 Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 1 / 23 Outline We assume p ( y | ) and p ( ) , so it would be prudent to determine if these
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 1 / 23
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 2 / 23
Prior sensitivity analysis
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 3 / 23
Prior sensitivity analysis
n=10000 n=1e+05 n=1e+06 n=10 n=100 n=1000 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 0.00 0.25 0.50 0.75 1.00 10 20 30 40 500 1000 10 20 100 200 300 400 10 20 30 40 50 100
θ p(θ|y) type
skeptic agnostic believer Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 4 / 23
Prior sensitivity analysis
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 5 / 23
Prior sensitivity analysis
Unif(0,20) Ca^*(0,5) IG(1,1) IG(e,e) 5 10 15 20 5 10 15 20 5 10 15 20 5 10 15 20 1 2 0.00 0.05 0.10 0.15 0.0 0.2 0.4 0.6 0.8 0.025 0.050 0.075 0.100
x density variable
prior posterior
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 6 / 23
Prior sensitivity analysis
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 7 / 23
Posterior predictive checks
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 8 / 23
Posterior predictive checks Airline example
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 9 / 23
Posterior predictive checks Airline example
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 10 / 23
Posterior predictive checks Airline example 16 17 18 19 20 11 12 13 14 15 6 7 8 9 10 1 2 3 4 5 10 20 30 40 10 20 30 40 10 20 30 40 10 20 30 40 10 20 30 40 1 2 3 1 2 3 1 2 3 1 2 3
fatal_accidents count
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 11 / 23
Posterior predictive checks Airline example 16 17 18 19 20 11 12 13 14 15 6 7 8 9 10 1 2 3 4 5 10 20 30 40 10 20 30 40 10 20 30 40 10 20 30 40 10 20 30 40 1 2 3 1 2 3 1 2 3 1 2 3
fatal_accidents count
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 12 / 23
Posterior predictive checks Airline example
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 13 / 23
Posterior predictive checks Airline example 16 17 18 19 20 11 12 13 14 15 6 7 8 9 10 1 2 3 4 5 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 10 20 30 40 10 20 30 40 10 20 30 40 10 20 30 40
year fatal_accidents
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 14 / 23
Posterior predictive checks Airline example 16 17 18 19 20 11 12 13 14 15 6 7 8 9 10 1 2 3 4 5 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 10 20 30 40 10 20 30 40 10 20 30 40 10 20 30 40
year fatal_accidents
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 15 / 23
Posterior predictive checks Airline example 16 17 18 19 20 11 12 13 14 15 6 7 8 9 10 1 2 3 4 5 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 1977.5 1980.0 1982.5 1985.0 10 20 30 40 10 20 30 40 10 20 30 40 10 20 30 40
year fatal_accidents
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 16 / 23
Posterior predictive checks Posterior predictive pvalues
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 17 / 23
Posterior predictive checks Posterior predictive pvalues
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 18 / 23
Posterior predictive checks Posterior predictive pvalues mean(rep$beta1>observed_slope) [1] 1 ggplot(rep, aes(x=beta1)) + geom_histogram(binwidth=0.1) + geom_vline(xintercept=observed_slope, color="red") + theme_bw()
25 50 75 −1 1 2 3
beta1 count
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 19 / 23
Posterior predictive checks Update model
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 20 / 23
Posterior predictive checks Update model
model = " data { int<lower=0> n; int<lower=0> y[n]; vector<lower=0>[n] x; } transformed data { vector[n] log_x; log_x = log(x); # both x and logx need to be vectors } parameters { real beta[2]; } transformed parameters { vector[n] log_lambda; for (i in 1:n) log_lambda[i] = beta[1] + beta[2]*i; } model { y ~ poisson_log(log_x + log_lambda); # _log indicates mean on log scale } " m = stan_model(model_code = model) r = sampling(m, list(n=nrow(d), y=d$fatal_accidents, x=d$miles_flown)) Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 21 / 23
Posterior predictive checks Update model Inference for Stan model: c5fd0896f3ea971d9c6ac34c2a2fbedd. 4 chains, each with iter=2000; warmup=1000; thin=1; post-warmup draws per chain=1000, total post-warmup draws=4000. mean se_mean sd 2.5% 25% 50% 75% 97.5% n_eff Rhat beta[1]
0.00 0.13
1148 1 beta[2]
0.00 0.02
1113 1 log_lambda[1]
0.00 0.11
1208 1 log_lambda[2]
0.00 0.10
1332 1 log_lambda[3]
0.00 0.08
1614 1 log_lambda[4]
0.00 0.07
2331 1 log_lambda[5]
0.00 0.06
3979 1 log_lambda[6]
0.00 0.07
4790 1 log_lambda[7]
0.00 0.08
3051 1 log_lambda[8]
0.00 0.09
2225 1 log_lambda[9]
0.00 0.11
1839 1 log_lambda[10]
0.00 0.13
1629 1 lp__ 516.87 0.03 0.95 514.34 516.48 517.16 517.55 517.83 1308 1 Samples were drawn using NUTS(diag_e) at Wed Feb 27 21:08:40 2019. 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). Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 22 / 23
Posterior predictive checks Update model
# Posterior predictive pvalue: slope mean(rep_slopes>observed_slope) [1] 0.4955
50 100 150 200 −4 −2
slopes count
Jarad Niemi (STAT544@ISU) Model checking February 28, 2019 23 / 23