mcp (development version) Unreleased

New features:

  • ex = mcp_example("demo", with_fit = TRUE) is the new interface that replaces the ex_* datasets in prior versions. This reduces clutter of the namespace/documentation and the size of the package. It also gives the user richer details on the simulation and analyses. For “demo”, the ex_demo dataset is now ex$data and the ex_fit is ex$fit.

  • Nicer printing of lists and texts all over. E.g., try print(demo_fit$jags_code) and print(demo_fit$pars).

Other changes

mcp 0.3.0 2020-08-03

New features:

  • Get fits and predictions for in-sample and out-of-sample data. Read more in the article on these functions.

    All of the above functions include many arguments that align with (and extends) the options already in plot.mcpfit(), including getting fits/predictions for sigma (which_y = "sigma"), for the prior (prior = TRUE), and arbitrary quantiles (probs = c(0.1, 0.5, 0.999)). Use the newdata argument to get out-of-sample fitted/predicted values. Set summary = FALSE to get per-draw values.

  • Added support for weighted regression for gaussian families: model = list(y | weights(weight_column) ~ 1 + x). Weights are visualized as dot sizes in plot(fit).

  • Support for more link functions across families (e.g., family = gaussian(link = "log")):

    • gaussian: “identity”, “log”
    • binomial: “logit”, “probit”, “identity”
    • bernoulli: “logit”, “probit”, “identity”
    • poisson: “log”, “identity”
  • New argument scale in fitted(), plot(), and fit$simulate(). When scale = "response" (default), they return fits on the observed scale. When scale = "linear", they return fits on the parameter scale where the linear trends are. Useful for model understanding and debugging.

  • Use pp_check(fit) to do prior/posterior predictive checking. See pp_check(fit, type = "x") for a list of plot types. pp_check(fit, facet_by = "varying_column") facets by a data column.

  • Improvements to plot():

    • Change point densities are now computed on a per-panel basis in plot(fit, facet_by = "varying_column"). Previous releases only displayed population-level change points.
    • You can now plot varying effects with rate = FALSE for binomial models.
    • Change point densities in plot(fit) are not located directly on the x-axis. They were “floating” 5% above the x-axis in the previous releases.
  • New argument nsamples reduces the number of samples used in most functions to speed up processing. nsamples = NULL uses all samples for maximum accuracy.

  • New argument arma in many functions toggles whether autoregressive effects should be modelled.

  • Although the API is still in alpha, feel free to try extracting samples using mcp:::tidy_samples(fit). This is useful for further processing using tidybayes, bayesplot, etc. and is used extensively internally in mcp. One useful feature is computing absolute values for varying change points: mcp:::tidy_samples(fit, population = FALSE, absolute = TRUE). Feedback is appreciated before tidy_samples will to become part of the mcp API in a future release.

Other changes

  • Change point densities in plot(fit) are now scaled to 20% of the plot for each chain X changepoint combo. This addresses a common problem where a wide posterior was almost invisibly low when a narrow posterior was present. This means that heights should only be compared within each chain x changepoint combo - not across.
  • Removed the implicit ceiling of 1000 lines and samples in plot.mcpfit().
  • Rownames are removed from ranef() and fixef() returns.
  • A major effort has been put into making mcp robust and agile to develop. mcp now use defensive programming with helpful error messages. The Test suite includes 3600+ tests.
  • plot(), predict(), etc. are now considerably faster for AR(N) due to vectorization of the underlying code.

Bug fixes

  • Sigma is now forced to stay positive via a floor at 0.
  • Fixed: support and require dplyr 1.0.0. Now also requires tidybayes 2.0.3.
  • Fixed: Parallel sampling sometimes produced identical chains.
  • Fixed several small bugs

mcp 0.2.0 2020-01-09

The API and internal structure should be stable now. v0.2.0 will be released on CRAN.

New features:

Other changes:

  • Some renaming: “segments” –> “model”. fit$func_y() –> fit$simulate().
  • plot() only visualize the total fit while plot_pars() only visualize individual parameters. These functions were mixed in plot() previously.
  • The argument update has been discarded from mcp() (it’s all on adapt now) and inits has been added.
  • Many internal changes to make mcp more future proof. The biggest internal change is that rjags and future replace the dclone package. Among other things, this gives faster and cleaner installations.
  • Many more informative error messages to help you quickly understand and solve errors.
  • Updated documentation and website.

mcp 0.1.0 Unreleased

First public release.

  • Varying change points
  • Basic GLM: Gaussian, binomial, Bernoulli, and Poisson, and associated vignettes.
  • summary(fit), fixef(fit), and ranef(fit)
  • plot(fit, “segments”) and plot(fit, “bayesplot-name-here”) with some options
  • 1000+ basic unit tests to ensure non-breaking code for a wide variety of models.
  • Testing and model comparison using loo and hypothesis