From e0205f339028e113f6a24aa4362b63ba774d1256 Mon Sep 17 00:00:00 2001 From: Tristan Jay Mahr Date: Fri, 17 Nov 2017 12:30:59 -0600 Subject: [PATCH 1/2] fix mcmc_area_ridges and visual tests. closes --- DESCRIPTION | 4 +- R/mcmc-intervals.R | 55 ++++-- tests/figs/deps.txt | 6 + .../mcmc-diagnostics/mcmc-neff-default.svg | 119 +++++++++++++ .../mcmc-neff-hist-binwidth.svg | 134 +++++++++++++++ .../mcmc-neff-hist-default.svg | 161 ++++++++++++++++++ .../mcmc-diagnostics/mcmc-rhat-default.svg | 76 +++++++++ .../mcmc-rhat-hist-binwidth.svg | 88 ++++++++++ .../mcmc-rhat-hist-default.svg | 145 ++++++++++++++++ .../figs/mcmc-diagnostics/mcmc-rhat-sized.svg | 76 +++++++++ .../mcmc-intervals/mcmc-areas-default.svg | 77 +++++++++ .../figs/mcmc-intervals/mcmc-areas-inner.svg | 77 +++++++++ .../figs/mcmc-intervals/mcmc-areas-means.svg | 77 +++++++++ .../mcmc-intervals/mcmc-areas-no-points.svg | 67 ++++++++ .../figs/mcmc-intervals/mcmc-areas-outer.svg | 75 ++++++++ .../figs/mcmc-intervals/mcmc-areas-rhats.svg | 98 +++++++++++ .../mcmc-areas-ridges-default.svg | 87 ++++++++++ .../mcmc-areas-ridges-inner.svg | 87 ++++++++++ .../mcmc-areas-ridges-outer.svg | 89 ++++++++++ .../mcmc-intervals/mcmc-intervals-default.svg | 64 +++++++ .../mcmc-intervals/mcmc-intervals-inner.svg | 64 +++++++ .../mcmc-intervals/mcmc-intervals-means.svg | 64 +++++++ .../mcmc-intervals-no-points.svg | 59 +++++++ .../mcmc-intervals/mcmc-intervals-outer.svg | 60 +++++++ .../mcmc-intervals/mcmc-intervals-rhats.svg | 79 +++++++++ tests/testthat/data-for-mcmc-tests.R | 3 + tests/testthat/test-mcmc-combo.R | 1 - tests/testthat/test-mcmc-diagnostics.R | 50 ++++++ tests/testthat/test-mcmc-intervals.R | 64 +++++++ 29 files changed, 2092 insertions(+), 14 deletions(-) create mode 100644 tests/figs/deps.txt create mode 100644 tests/figs/mcmc-diagnostics/mcmc-neff-default.svg create mode 100644 tests/figs/mcmc-diagnostics/mcmc-neff-hist-binwidth.svg create mode 100644 tests/figs/mcmc-diagnostics/mcmc-neff-hist-default.svg create mode 100644 tests/figs/mcmc-diagnostics/mcmc-rhat-default.svg create mode 100644 tests/figs/mcmc-diagnostics/mcmc-rhat-hist-binwidth.svg create mode 100644 tests/figs/mcmc-diagnostics/mcmc-rhat-hist-default.svg create mode 100644 tests/figs/mcmc-diagnostics/mcmc-rhat-sized.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-areas-default.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-areas-inner.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-areas-means.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-areas-no-points.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-areas-outer.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-areas-rhats.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-areas-ridges-default.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-areas-ridges-inner.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-areas-ridges-outer.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-intervals-default.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-intervals-inner.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-intervals-means.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-intervals-no-points.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-intervals-outer.svg create mode 100644 tests/figs/mcmc-intervals/mcmc-intervals-rhats.svg diff --git a/DESCRIPTION b/DESCRIPTION index 052b7805..4ee18b71 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -38,7 +38,7 @@ Suggests: rstantools (>= 1.2.0), scales, shinystan (>= 2.3.0), - testthat -RoxygenNote: 6.0.1 + testthat, + vdiffr VignetteBuilder: knitr Encoding: UTF-8 diff --git a/R/mcmc-intervals.R b/R/mcmc-intervals.R index b05b666d..660b5df8 100644 --- a/R/mcmc-intervals.R +++ b/R/mcmc-intervals.R @@ -362,7 +362,9 @@ mcmc_areas_ridges <- function(x, prob = prob, prob_outer = prob_outer, bw = bw, adjust = adjust, kernel = kernel, n_dens = n_dens) - datas <- split(data, data$interval) + + datas <- data %>% + split(data$interval) # faint vertical line at zero if zero is within x_lim x_lim <- range(datas$outer$x) @@ -376,14 +378,6 @@ mcmc_areas_ridges <- function(x, geom_ignore() } - args_inner <- list( - mapping = aes_(height = ~ density), - data = datas$inner, - fill = get_color("light"), - color = get_color("dark"), - stat = "identity" - ) - args_outer <- list( mapping = aes_(height = ~ density), color = get_color("dark"), @@ -391,16 +385,55 @@ mcmc_areas_ridges <- function(x, stat = "identity" ) - layer_inner <- do.call(ggridges::geom_density_ridges, args_inner) layer_outer <- do.call(ggridges::geom_density_ridges, args_outer) + # Force ggridges to compute the scaling now + test_plot <- ggplot(datas$outer) + + aes_(x = ~ x, y = ~ parameter) + + layer_outer + + soft_build <- ggplot_build(test_plot) + scaler1 <- unique(soft_build$data[[1]][["scale"]]) + scaler2 <- unique(soft_build$data[[1]][["iscale"]]) + scale <- scaler1 * scaler2 + + # Draw each ridgeline from top the bottom + layer_list_inner <- list() + par_draw_order <- levels(unique(data$parameter)) + bg <- theme_get()[["panel.background"]][["fill"]] %||% "white" + + for (par_num in seq_along(unique(data$parameter))) { + # Basically, draw the current ridgeline normally, but draw all the ones + # under it (which would overlap it vertically) with a blank fill + this_par <- par_draw_order[par_num] + next_pars <- par_draw_order[par_num < seq_along(par_draw_order)] + + this_par_data <- datas$inner %>% + dplyr::filter(.data$parameter == this_par) %>% + mutate(color = get_color("dark"), fill = get_color("light")) + + next_par_data <- datas$outer %>% + dplyr::filter(.data$parameter %in% next_pars) %>% + mutate(color = get_color("dark"), fill = bg) + + args_inner <- list( + mapping = aes_(height = ~ density, color = ~ color, fill = ~ fill), + data = dplyr::bind_rows(this_par_data, next_par_data), + scale = scale, + stat = "identity") + + layer_list_inner[[par_num]] <- do.call(ggridges::geom_ridgeline, args_inner) + } + ggplot(datas$outer) + aes_(x = ~ x, y = ~ parameter) + layer_vertical_line + layer_outer + - layer_inner + scale_y_discrete(limits = unique(rev(data$parameter)), expand = c(0.05, .6)) + + layer_list_inner + + scale_fill_identity() + + scale_color_identity() + xlim(x_lim) + yaxis_title(FALSE) + xaxis_title(FALSE) + diff --git a/tests/figs/deps.txt b/tests/figs/deps.txt new file mode 100644 index 00000000..ed6d5a67 --- /dev/null +++ b/tests/figs/deps.txt @@ -0,0 +1,6 @@ +Fontconfig: 2.11.94 +FreeType: 2.6.0 +Cairo: 1.14.2 +vdiffr: 0.2.1 +svglite: 1.2.1 +ggplot2: 2.2.1 diff --git a/tests/figs/mcmc-diagnostics/mcmc-neff-default.svg b/tests/figs/mcmc-diagnostics/mcmc-neff-default.svg new file mode 100644 index 00000000..9ecca9ea --- /dev/null +++ b/tests/figs/mcmc-diagnostics/mcmc-neff-default.svg @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 +0.1 +0.25 +0.5 +0.75 +1 +N +e +f +f + +N + + + + + + +N +e +f +f + +N + +0.1 +N +e +f +f + +N + +0.5 +N +e +f +f + +N +> +0.5 +mcmc neff (default) + diff --git a/tests/figs/mcmc-diagnostics/mcmc-neff-hist-binwidth.svg b/tests/figs/mcmc-diagnostics/mcmc-neff-hist-binwidth.svg new file mode 100644 index 00000000..892df4ec --- /dev/null +++ b/tests/figs/mcmc-diagnostics/mcmc-neff-hist-binwidth.svg @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.00 +0.25 +0.50 +0.75 +1.00 +N +e +f +f + +N + + + +N +e +f +f + +N + +0.1 +N +e +f +f + +N + +0.5 +N +e +f +f + +N +> +0.5 +mcmc neff hist (binwidth) + diff --git a/tests/figs/mcmc-diagnostics/mcmc-neff-hist-default.svg b/tests/figs/mcmc-diagnostics/mcmc-neff-hist-default.svg new file mode 100644 index 00000000..ecac768a --- /dev/null +++ b/tests/figs/mcmc-diagnostics/mcmc-neff-hist-default.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0.00 +0.25 +0.50 +0.75 +1.00 +N +e +f +f + +N + + + +N +e +f +f + +N + +0.1 +N +e +f +f + +N + +0.5 +N +e +f +f + +N +> +0.5 +mcmc neff hist (default) + diff --git a/tests/figs/mcmc-diagnostics/mcmc-rhat-default.svg b/tests/figs/mcmc-diagnostics/mcmc-rhat-default.svg new file mode 100644 index 00000000..66f0f2b3 --- /dev/null +++ b/tests/figs/mcmc-diagnostics/mcmc-rhat-default.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1.00 +1.05 +1.10 +R +^ + + + + + + +R +^ + +1.05 +R +^ + +1.1 +R +^ +> +1.1 +mcmc rhat (default) + diff --git a/tests/figs/mcmc-diagnostics/mcmc-rhat-hist-binwidth.svg b/tests/figs/mcmc-diagnostics/mcmc-rhat-hist-binwidth.svg new file mode 100644 index 00000000..7edb866d --- /dev/null +++ b/tests/figs/mcmc-diagnostics/mcmc-rhat-hist-binwidth.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1.00 +1.05 +1.10 +1.15 +1.20 +R +^ + + + +R +^ + +1.05 +R +^ + +1.1 +R +^ +> +1.1 +mcmc rhat hist (binwidth) + diff --git a/tests/figs/mcmc-diagnostics/mcmc-rhat-hist-default.svg b/tests/figs/mcmc-diagnostics/mcmc-rhat-hist-default.svg new file mode 100644 index 00000000..5bc7e78a --- /dev/null +++ b/tests/figs/mcmc-diagnostics/mcmc-rhat-hist-default.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1.00 +1.05 +1.10 +1.15 +1.20 +R +^ + + + +R +^ + +1.05 +R +^ + +1.1 +R +^ +> +1.1 +mcmc rhat hist (default) + diff --git a/tests/figs/mcmc-diagnostics/mcmc-rhat-sized.svg b/tests/figs/mcmc-diagnostics/mcmc-rhat-sized.svg new file mode 100644 index 00000000..7e3c2d0a --- /dev/null +++ b/tests/figs/mcmc-diagnostics/mcmc-rhat-sized.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1.00 +1.05 +1.10 +R +^ + + + + + + +R +^ + +1.05 +R +^ + +1.1 +R +^ +> +1.1 +mcmc rhat (sized) + diff --git a/tests/figs/mcmc-intervals/mcmc-areas-default.svg b/tests/figs/mcmc-intervals/mcmc-areas-default.svg new file mode 100644 index 00000000..42db4622 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-areas-default.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + +-4 +-2 +0 +2 +mcmc areas (default) + diff --git a/tests/figs/mcmc-intervals/mcmc-areas-inner.svg b/tests/figs/mcmc-intervals/mcmc-areas-inner.svg new file mode 100644 index 00000000..0cd233a5 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-areas-inner.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + +-4 +-2 +0 +2 +mcmc areas (inner) + diff --git a/tests/figs/mcmc-intervals/mcmc-areas-means.svg b/tests/figs/mcmc-intervals/mcmc-areas-means.svg new file mode 100644 index 00000000..6345a22d --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-areas-means.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + +-4 +-2 +0 +2 +mcmc areas (means) + diff --git a/tests/figs/mcmc-intervals/mcmc-areas-no-points.svg b/tests/figs/mcmc-intervals/mcmc-areas-no-points.svg new file mode 100644 index 00000000..2e184871 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-areas-no-points.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + +-4 +-2 +0 +2 +mcmc areas (no points) + diff --git a/tests/figs/mcmc-intervals/mcmc-areas-outer.svg b/tests/figs/mcmc-intervals/mcmc-areas-outer.svg new file mode 100644 index 00000000..f90b40cb --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-areas-outer.svg @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + +-1 +0 +1 +mcmc areas (outer) + diff --git a/tests/figs/mcmc-intervals/mcmc-areas-rhats.svg b/tests/figs/mcmc-intervals/mcmc-areas-rhats.svg new file mode 100644 index 00000000..eca8d999 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-areas-rhats.svg @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + +-4 +-2 +0 +2 + + + + + + + + + +R +^ + +1.05 +R +^ + +1.1 +R +^ +> +1.1 +mcmc areas (rhats) + diff --git a/tests/figs/mcmc-intervals/mcmc-areas-ridges-default.svg b/tests/figs/mcmc-intervals/mcmc-areas-ridges-default.svg new file mode 100644 index 00000000..1102bf00 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-areas-ridges-default.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + +-4 +-2 +0 +2 +mcmc areas ridges (default) + diff --git a/tests/figs/mcmc-intervals/mcmc-areas-ridges-inner.svg b/tests/figs/mcmc-intervals/mcmc-areas-ridges-inner.svg new file mode 100644 index 00000000..1687d989 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-areas-ridges-inner.svg @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + +-4 +-2 +0 +2 +mcmc areas ridges (inner) + diff --git a/tests/figs/mcmc-intervals/mcmc-areas-ridges-outer.svg b/tests/figs/mcmc-intervals/mcmc-areas-ridges-outer.svg new file mode 100644 index 00000000..a6295ba5 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-areas-ridges-outer.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + + +-2 +-1 +0 +1 +2 +mcmc areas ridges (outer) + diff --git a/tests/figs/mcmc-intervals/mcmc-intervals-default.svg b/tests/figs/mcmc-intervals/mcmc-intervals-default.svg new file mode 100644 index 00000000..1bf34537 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-intervals-default.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + + +-2 +-1 +0 +1 +2 +mcmc intervals (default) + diff --git a/tests/figs/mcmc-intervals/mcmc-intervals-inner.svg b/tests/figs/mcmc-intervals/mcmc-intervals-inner.svg new file mode 100644 index 00000000..0afa504e --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-intervals-inner.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + + +-2 +-1 +0 +1 +2 +mcmc intervals (inner) + diff --git a/tests/figs/mcmc-intervals/mcmc-intervals-means.svg b/tests/figs/mcmc-intervals/mcmc-intervals-means.svg new file mode 100644 index 00000000..0ccc6967 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-intervals-means.svg @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + + +-2 +-1 +0 +1 +2 +mcmc intervals (means) + diff --git a/tests/figs/mcmc-intervals/mcmc-intervals-no-points.svg b/tests/figs/mcmc-intervals/mcmc-intervals-no-points.svg new file mode 100644 index 00000000..f1d3ad00 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-intervals-no-points.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + + +-2 +-1 +0 +1 +2 +mcmc intervals (no points) + diff --git a/tests/figs/mcmc-intervals/mcmc-intervals-outer.svg b/tests/figs/mcmc-intervals/mcmc-intervals-outer.svg new file mode 100644 index 00000000..d75300f2 --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-intervals-outer.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + +-1 +0 +1 +mcmc intervals (outer) + diff --git a/tests/figs/mcmc-intervals/mcmc-intervals-rhats.svg b/tests/figs/mcmc-intervals/mcmc-intervals-rhats.svg new file mode 100644 index 00000000..b4bcb9ba --- /dev/null +++ b/tests/figs/mcmc-intervals/mcmc-intervals-rhats.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +V5 +V4 +V3 +V2 +V1 + + + + + + + + + + + +-2 +-1 +0 +1 +2 + + + +R +^ + +1.05 +R +^ + +1.1 +R +^ +> +1.1 +mcmc intervals (rhats) + diff --git a/tests/testthat/data-for-mcmc-tests.R b/tests/testthat/data-for-mcmc-tests.R index a6183962..350656d8 100644 --- a/tests/testthat/data-for-mcmc-tests.R +++ b/tests/testthat/data-for-mcmc-tests.R @@ -24,3 +24,6 @@ chainlist1 <- list(chainlist[[1]][, 1, drop=FALSE], dframe_multiple_chains <- dframe dframe_multiple_chains$chain <- rep(1:4, 25) +set.seed(11172017) +vdiff_dframe <- as.data.frame(matrix(rnorm(1000), nrow = 100, ncol = 5)) +set.seed(seed = NULL) diff --git a/tests/testthat/test-mcmc-combo.R b/tests/testthat/test-mcmc-combo.R index ed4f96a1..9efdf29f 100644 --- a/tests/testthat/test-mcmc-combo.R +++ b/tests/testthat/test-mcmc-combo.R @@ -4,7 +4,6 @@ context("MCMC: combo") source(test_path("data-for-mcmc-tests.R")) test_that("mcmc_combo returns a gtable object", { - print(mcmc_combo(arr, regex_pars = "beta")) expect_gtable(mcmc_combo(arr, regex_pars = "beta")) expect_gtable(mcmc_combo(mat, regex_pars = "beta", binwidth = 1/20, combo = c("dens", "hist"), diff --git a/tests/testthat/test-mcmc-diagnostics.R b/tests/testthat/test-mcmc-diagnostics.R index bb999d74..b5bb08b9 100644 --- a/tests/testthat/test-mcmc-diagnostics.R +++ b/tests/testthat/test-mcmc-diagnostics.R @@ -72,3 +72,53 @@ test_that("mcmc_acf & mcmc_acf_bar throw correct errors", { regexp = "Too few iterations for lags=200") }) + + + +# Visual tests + +test_that("mcmc_rhat renders correctly", { + testthat::skip_on_cran() + + rhats <- seq(from = 1, to = 1.20, length = 10) + + p_base <- mcmc_rhat(rhats) + vdiffr::expect_doppelganger("mcmc rhat (default)", p_base) + + p_size <- mcmc_rhat(rhats, size = 3) + vdiffr::expect_doppelganger("mcmc rhat (sized)", p_size) +}) + +test_that("mcmc_rhat_hist renders correctly", { + testthat::skip_on_cran() + + rhats <- seq(from = 1, to = 1.20, length = 10) + + p_base <- mcmc_rhat_hist(rhats) + vdiffr::expect_doppelganger("mcmc rhat hist (default)", p_base) + + p_binwidth <- mcmc_rhat_hist(rhats, binwidth = .02) + vdiffr::expect_doppelganger("mcmc rhat hist (binwidth)", p_binwidth) +}) + + +test_that("mcmc_neff renders correctly", { + testthat::skip_on_cran() + + neffs <- seq(from = 0, to = 1, length = 20) + + p_base <- mcmc_neff(neffs) + vdiffr::expect_doppelganger("mcmc neff (default)", p_base) +}) + +test_that("mcmc_neff_hist renders correctly", { + testthat::skip_on_cran() + + neffs <- seq(from = 0, to = 1, length = 20) + + p_base <- mcmc_neff_hist(neffs) + vdiffr::expect_doppelganger("mcmc neff hist (default)", p_base) + + p_binwidth <- mcmc_neff_hist(neffs, binwidth = .05) + vdiffr::expect_doppelganger("mcmc neff hist (binwidth)", p_binwidth) +}) diff --git a/tests/testthat/test-mcmc-intervals.R b/tests/testthat/test-mcmc-intervals.R index f810ab7b..78b79a6f 100644 --- a/tests/testthat/test-mcmc-intervals.R +++ b/tests/testthat/test-mcmc-intervals.R @@ -146,3 +146,67 @@ test_that("compute_column_density can use density options (#118)", { expect_error(mcmc_areas_data(arr, adjust = stop())) expect_error(mcmc_areas_data(arr, kernel = stop())) }) + + + + +# Visual tests + +test_that("mcmc_intervals renders correctly", { + testthat::skip_on_cran() + + p_base <- mcmc_intervals(vdiff_dframe) + vdiffr::expect_doppelganger("mcmc intervals (default)", p_base) + + p_outer <- mcmc_intervals(vdiff_dframe, prob_outer = .8) + vdiffr::expect_doppelganger("mcmc intervals (outer)", p_outer) + + p_inner <- mcmc_intervals(vdiff_dframe, prob = .1) + vdiffr::expect_doppelganger("mcmc intervals (inner)", p_inner) + + rhats <- seq(from = 1, to = 1.15, length = 5) + p_rhats <- mcmc_intervals(vdiff_dframe, rhat = rhats) + vdiffr::expect_doppelganger("mcmc intervals (rhats)", p_rhats) + + p_no_points <- mcmc_intervals(vdiff_dframe, point_est = "none") + vdiffr::expect_doppelganger("mcmc intervals (no points)", p_no_points) + + p_mean_points <- mcmc_intervals(vdiff_dframe, point_est = "mean") + vdiffr::expect_doppelganger("mcmc intervals (means)", p_mean_points) +}) + +test_that("mcmc_areas renders correctly", { + testthat::skip_on_cran() + + p_base <- mcmc_areas(vdiff_dframe) + vdiffr::expect_doppelganger("mcmc areas (default)", p_base) + + p_outer <- mcmc_areas(vdiff_dframe, prob_outer = .8) + vdiffr::expect_doppelganger("mcmc areas (outer)", p_outer) + + p_inner <- mcmc_areas(vdiff_dframe, prob = .1) + vdiffr::expect_doppelganger("mcmc areas (inner)", p_inner) + + rhats <- seq(from = 1, to = 1.15, length = 5) + p_rhats <- mcmc_areas(vdiff_dframe, rhat = rhats) + vdiffr::expect_doppelganger("mcmc areas (rhats)", p_rhats) + + p_no_points <- mcmc_areas(vdiff_dframe, point_est = "none") + vdiffr::expect_doppelganger("mcmc areas (no points)", p_no_points) + + p_mean_points <- mcmc_areas(vdiff_dframe, point_est = "mean") + vdiffr::expect_doppelganger("mcmc areas (means)", p_mean_points) +}) + +test_that("mcmc_areas_ridges renders correctly", { + testthat::skip_on_cran() + + p_base <- mcmc_areas_ridges(vdiff_dframe) + vdiffr::expect_doppelganger("mcmc areas ridges (default)", p_base) + + p_inner <- mcmc_areas_ridges(vdiff_dframe, prob = .5) + vdiffr::expect_doppelganger("mcmc areas ridges (inner)", p_inner) + + p_outer <- mcmc_areas_ridges(vdiff_dframe, prob = .5, prob_outer = .95) + vdiffr::expect_doppelganger("mcmc areas ridges (outer)", p_outer) +}) From 7645bf9f9301589df5197c54471ea046b6448b29 Mon Sep 17 00:00:00 2001 From: Tristan Jay Mahr Date: Fri, 17 Nov 2017 12:44:44 -0600 Subject: [PATCH 2/2] restore roxygen note --- DESCRIPTION | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 4ee18b71..d2748b06 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -27,7 +27,7 @@ Imports: utils, rlang, ggridges -Suggests: +Suggests: arm, gridExtra (>= 2.2.1), knitr (>= 1.16), @@ -40,5 +40,6 @@ Suggests: shinystan (>= 2.3.0), testthat, vdiffr +RoxygenNote: 6.0.1 VignetteBuilder: knitr Encoding: UTF-8