Dear Stan users,
I’m looking at the latest version of the loo package (2.0.0 - thank you Stan developers!) and I’m getting the following error when computing PSIS-LOO for an rstanarm object:
loo1 <- loo(fit1, save_psis = TRUE)
Error: is.data.frame(data) || is.matrix(data) is not TRUE
Below there is a complete example (following http://mc-stan.org/loo/articles/loo2-example.html).
Note that it works correctly using log_lik, like here:
loo1 <- loo(log_lik(fit1), save_psis = TRUE)
In addition, loo works fine with rstan objects (eg, following http://mc-stan.org/loo/articles/loo2-with-rstan.html).
I wanted to check if this is a general issue to be fixed or there is something specific about my machine.
Thank you.
Luca
library("rstanarm")
library("bayesplot")
library("loo")
options(mc.cores = parallel::detectCores())
data(roaches)
str(roaches)
roaches$roach1 <- roaches$roach1 / 100
fit1 <-
stan_glm(
formula = y ~ roach1 + treatment + senior,
offset = log(exposure2),
data = roaches,
family = poisson(link = "log"),
prior = normal(0, 2.5, autoscale = TRUE),
prior_intercept = normal(0, 5, autoscale = TRUE),
seed = 12345
)
loo1 <- loo(fit1, save_psis = TRUE)
# Error: is.data.frame(data) || is.matrix(data) is not TRUE
loo1 <- loo(log_lik(fit1), save_psis = TRUE)
print(loo1)
# Computed from 4000 by 262 log-likelihood matrix
#
# Estimate SE
# elpd_loo -6244.5 726.8
# p_loo 292.5 72.9
# looic 12489.1 1453.7
# ------
# Monte Carlo SE of elpd_loo is NA.
#
# Pareto k diagnostic values:
# Count Pct. Min. n_eff
# (-Inf, 0.5] (good) 239 91.2% 399
# (0.5, 0.7] (ok) 8 3.1% 84
# (0.7, 1] (bad) 8 3.1% 13
# (1, Inf) (very bad) 7 2.7% 1
# See help('pareto-k-diagnostic') for details.
sessionInfo()
# R version 3.4.4 (2018-03-15)
# Platform: x86_64-pc-linux-gnu (64-bit)
# Running under: Ubuntu 16.04.4 LTS
#
# Matrix products: default
# BLAS: /usr/lib/libblas/libblas.so.3.6.0
# LAPACK: /usr/lib/lapack/liblapack.so.3.6.0
#
# locale:
# [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 LC_MONETARY=en_US.UTF-8
# [6] LC_MESSAGES=en_US.UTF-8 LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C LC_TELEPHONE=C
# [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
#
# attached base packages:
# [1] stats graphics grDevices utils datasets methods base
#
# other attached packages:
# [1] loo_2.0.0 bayesplot_1.5.0 rstanarm_2.17.3 Rcpp_0.12.16
#
# loaded via a namespace (and not attached):
# [1] lattice_0.20-35 zoo_1.8-1 gtools_3.5.0 assertthat_0.2.0 digest_0.6.15 mime_0.5 R6_2.2.2
# [8] plyr_1.8.4 ggridges_0.5.0 stats4_3.4.4 ggplot2_2.2.1 colourpicker_1.0 pillar_1.2.1 rlang_0.2.0
# [15] lazyeval_0.2.1 minqa_1.2.4 miniUI_0.1.1 nloptr_1.0.4 Matrix_1.2-14 DT_0.4 shinythemes_1.1.1
# [22] splines_3.4.4 shinyjs_1.0 lme4_1.1-17 stringr_1.3.0 htmlwidgets_1.0 igraph_1.2.1 munsell_0.4.3
# [29] shiny_1.0.5 compiler_3.4.4 httpuv_1.3.6.2 rstan_2.17.3 pkgconfig_2.0.1 base64enc_0.1-3 rstantools_1.4.0
# [36] htmltools_0.3.6 tibble_1.4.2 gridExtra_2.3 codetools_0.2-15 matrixStats_0.53.1 threejs_0.3.1 dplyr_0.7.4
# [43] MASS_7.3-49 grid_3.4.4 nlme_3.1-137 xtable_1.8-2 gtable_0.2.0 magrittr_1.5 StanHeaders_2.17.2
# [50] scales_0.5.0 stringi_1.1.7 reshape2_1.4.3 bindrcpp_0.2.2 dygraphs_1.1.1.4 xts_0.10-2 tools_3.4.4
# [57] glue_1.2.0 shinystan_2.4.0 markdown_0.8 crosstalk_1.0.0 survival_2.41-3 parallel_3.4.4 rsconnect_0.8.8
# [64] yaml_2.1.18 inline_0.3.14 colorspace_1.3-2 bindr_0.1.1