This is a bug fix release.
- Now respects the
cores
argument tomcp()
. - Document all function arguments and remove documentation for removed arguments.
This is a bug fix release.
- Support
ggplot >= 3.4.0
,tidyselect >= 1.2.0
, and newerfuture
by replacing deprecated functions. - Accept
mcp(..., cores = "all")
. - Fix documentation of
iter
argument tomcp()
. - Other small fixes to deployment and documentation.
This release contains no user-facing changes. The test suite suite is now compatible with dplyr 1.0.8, which caused the test suite to fail. This, in turn, would trigger the removal of mcp from CRAN.
This is mostly a bug fix release.
-
ex = mcp_example("demo", with_fit = TRUE)
is the new interface that replaces theex_*
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", theex_demo
dataset is nowex$data
and theex_fit
isex$fit
. -
Nicer printing of lists and texts all over. E.g., try
print(demo_fit$jags_code)
andprint(demo_fit$pars)
.
- Support breaking changes in
tidybayes >= 3.0.0
anddplyr >= 1.0.6
-
Get fits and predictions for in-sample and out-of-sample data. Read more in the article on these functions.
- Use
predict(fit)
to get predicted values and quantiles. - Use
fitted(fit)
to get estimated values and quantiles. - Use
residuals(fit)
to get residuals and quantiles.
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 thenewdata
argument to get out-of-sample fitted/predicted values. Setsummary = FALSE
to get per-draw values. - Use
-
Added support for weighted regression for gaussian families:
model = list(y | weights(weight_column) ~ 1 + x)
. Weights are visualized as dot sizes inplot(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
infitted()
,plot()
, andfit$simulate()
. Whenscale = "response"
(default), they return fits on the observed scale. Whenscale = "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. Seepp_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.
- Change point densities are now computed on a per-panel basis in
-
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 usingtidybayes
,bayesplot
, etc. and is used extensively internally inmcp
. One useful feature is computing absolute values for varying change points:mcp:::tidy_samples(fit, population = FALSE, absolute = TRUE)
. Feedback is appreciated beforetidy_samples
will to become part of themcp
API in a future release.
- 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()
andfixef()
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.
- 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
The API and internal structure should be stable now. v0.2.0 will be released on CRAN.
- Model quadratic and other terms using
I(x^2)
,I(x^3.24)
,sin(x)
,sqrt(x)
, etc. - Model variance for
family = gaussian()
using~ sigma([formula here])
. - Model Nth order autoregressive models using
~ ar(order, formula)
, typically likey ~ 1 + x + ar(2)
for AR(2). Simulate AR(N) models from scratch or given known data withfit$simulate()
. The article on AR(N) has more details and examples. AR(N) models are popular to detect changes in time-series. - Many updates to
plot()
.- Includes the posterior densities of the change point(s). Disable using
plot(fit, cp_dens = FALSE)
. - Supports AR(N) models (see above).
- Plot posterior parameter intervals using
plot(fit, q_fit = TRUE)
.plot(fit, q_fit = c(0.025, 0.5, 0.975))
plots 95% HDI and the median. - Plot prediction intervals using
plot(fit, q_predict = TRUE)
. - Choose data geom. Currently takes "point" (default) and "line" (
plot(fit, geom_data = "line")
). The latter is useful for time series. Disable usinggeom_data = FALSE
.
- Includes the posterior densities of the change point(s). Disable using
- Use
options(mc.cores = 3)
for considerable speed gains for the rest of the session. All vignettes/articles have been updated to recommend this as a default, though serial sampling is still the technical default.mcp(..., cores = 3)
does the same thing on a call-by-ball basis. fit$simulate()
adds the simulation parameters as an attribute (attr(y, "simulate")
) to the predicted variable.summary()
recognizes this and adds the simulated values to the results table (columnssim
andmatch
) so that one can inspect whether the values were recovered.- Use
plot(fit, which_y = "sigma")
to plot the residual standard deviation on the y-axis. It works for AR(N) as well, e.g.,which_y = "ar1"
,which_y = "ar2"
, etc. This is useful to visualize change points in variance and autocorrelation. The vignettes on variance and autocorrelations have been updated with worked examples. - Much love for the priors:
- Set a Dirichlet prior on the change points using
prior = list(cp_1 = "dirichlet(1)", cp_2 = ...)
. Read pros and cons here. - The default prior has been changed from "truncated-uniforms" to a "t-tail" prior to be more uninformative while still sampling effectively. Read more here.
- You can now sample the prior using
mcp(..., sample = "prior")
ormcp(..., sample = "both")
and most methods can now take the prior:plot(fit, prior = TRUE)
,plot_pars(fit, prior = TRUE)
,summary(fit, prior = TRUE)
,ranef(fit, prior = TRUE)
.
- Set a Dirichlet prior on the change points using
mcp
can now be cited! Callcitation("mcp")
or see the pre-print here: https://osf.io/fzqxv.
- Some renaming: "segments" --> "model".
fit$func_y()
-->fit$simulate()
. plot()
only visualize the total fit whileplot_pars()
only visualize individual parameters. These functions were mixed inplot()
previously.- The argument
update
has been discarded frommcp()
(it's all onadapt
now) andinits
has been added. - Many internal changes to make
mcp
more future proof. The biggest internal change is thatrjags
andfuture
replace thedclone
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.
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
andhypothesis