New features:
draw_indices
parameter in
spread_draws()
and gather_draws()
. (#323)Bug fixes:
nest_rvars()
and
unnest_rvars()
. (#316)spread_draws()
on R >= 4.5.Deprecations:
recover_types()
with character vectors is now
deprecated, as the expected order of the levels of the variable is
ambiguous, leading to hard-to-spot errors where indices and names do not
line up correctly. A warning message has been added suggesting the use
of factors instead. (#312)Bug fixes:
residual_draws()
more robust (due to
change in default value of the method
argument to
brms::residuals()
). (#313)Bug fixes:
summarise_draws.grouped_df()
due to
changes in how posterior::summarise_draws()
handles the
num_args
argument.epred
, linpred
, and predicted
in
add_XXX_rvars()
.dplyr
and tidyr
.fitted_draws()
deprecation warning (#288).epred_draws()
on
rethinking models.posterior::as_draws_df()
instead of
As.mcmc.list()
for rstan
objects.stat_...
and stat_dist_...
)@examplesIf
for conditional examples (#294)compose_data()
are overwritten
by generated names (#295)Minor update for compatibility with brms 2.16.0.
Breaking changes and deprecations:
[add_]XXX_draws()
(predicted_draws()
,
add_predicted_draws()
, etc) functions have been
substantially restructured:
add_fitted_draws()
and fitted_draws()
are
now deprecated, along with the scale
argument. Several
years’ teaching experience has demonstrated that “fitted” is a very
confusing name for students. Use the more-specific
[add_
]linpred_draws()
if you want draws from
the linear predictor or the new
[add_
]epred_draws()
if you want draws from the
expectation of the posterior predictive (which is what
fitted_draws()
was most typically used for).value
, but retain function-specific default column names.
E.g. the prediction
argument for
predicted_draws()
is now spelled value
but has
a default of ".prediction"
. One breaking change is that the
default output column for linpred_draws()
is now
".linpred"
instead of ".value"
. This should
make it easier to combine outputs across multiple functions while also
making it easier to remember the name of the argument that changes the
output column name.n
argument is now spelled ndraws
to be
more consistent with terminology in the posterior
package
and to prevent partial argument name matching bugs with
newdata
.object
instead of model
, in order to match
with argument names in posterior_predict()
, etc. This was
necessary to prevent partial argument name matching bugs with certain
model types in rstanarm
that have an m
argument to their prediction functions.New features:
posterior
package:
_rvars
counterparts to the
_draws
family of functions, including
spread_rvars()
, gather_rvars()
,
epred_rvars()
, linpred_rvars()
, and
predicted_rvars()
, which add columns of
posterior::rvar()
objects to data frames instead of
long-format columns of draws. These can be easier to read and take up
less memory than the long-format data frames of draws. See
vignette("tidy-posterior")
for examples.nest_rvars()
and unnest_rvars()
functions for converting between data frames of rvar
s and
long format data frames of draws.tidy_draws()
has been rebuilt on top of
posterior::as_draws_df()
, which means it should support
even more model types and benefit from efficiency improvements in
posterior
. This means that cmdstanr
is now
supported, for example.posterior::summarise_draws()
for
grouped data frames of draws:
summarise_draws.grouped_df()
compare_levels()
now supports data frames of
posterior::rvar()
s.epred_draws()
, linpred_draws()
, and
predicted_draws()
functions should now support any models
that implement posterior_epred()
,
posterior_linpred()
, and posterior_predict()
so long as they take a newdata
argument.forcats
, plyr
,
and purrr
.seed
when subsampling to
several functions (#276).New documentation:
vignette("tidy-posterior")
describing the use of
tidybayes
with posterior
, and particularly the
posterior::rvar()
data type. This vignette also includes an
updated version of the ordinal regression example from
vignette("tidy-brms")
, now with an illustration of the
relationship between the latent linear predictor and the category-level
probabilities.Bug fixes:
tidy_draws()
if retrieving
them results in an error (#244)compare_levels()
(#272)emmeans
package to be used
with compare_levels()
via the new
emmeans_comparison()
function (#272)tidybayes
into tidybayes
and ggdist
(#250). ggdist
now contains all
stats/geoms from tidybayes (except deprecated ones), all support
functions for stats/geoms (such as point_interval()
),
vignette("slabinterval")
, and
vignette("freq-uncertainty-vis")
. tidybayes
retains all other functions, and re-exports all ggdist
functions for now.ggplot2
. If needed, this can be overridden using the
existing orientation
parameter.
h
-suffix geoms are now deprecated. The
h
-suffix geoms have been left in tidybayes
and
give a deprecation warning when used; they cannot be used from
ggdist
directly.h
-suffix point_interval()
functions
are also deprecated, since they are not needed in tidybayes nor in
ggplot2::stat_summary()
.geom_interval()
, geom_pointinterval()
, and
geom_lineribbon()
no longer automatically set the
ymin
and ymax
aesthetics if
.lower
or .upper
are present in the data. This
allows them to work better with automatic orientation detection (and was
a bad feature to have existed in the first place anyway). The deprecated
tidybayes::geom_intervalh()
and
tidybayes::geom_pointintervalh()
still automatically set
those aesthetics, since they are deprecated anyway (so supporting the
old behavior is fine in these functions).geom_lineribbon()
/stat_lineribbon()
now
supports a step
argument for creating stepped lineribbons
(#249). H/T to Solomon Kurz for the suggestion.ggdist
now has its own implementation of the scaled and
shifted Student’s t distribution (dstudent_t()
,
qstudent_t()
, etc), since it is very useful for visualizing
confidence distributions. That is re-exported in tidybayes
as well`.Minor fixes for changes in tibble 3.0.0
Various minor forward and backward compatibility fixes:
stringsAsFactors
issues for R 4[[<-
for R 4parse()
instead of str2lang()
for
compatibility with R <= 3.6geom_slabinterval()
and stat_slabinterval()
“meta-geom” (#84). This has enabled a bunch of new geoms to be created
(see vignette("slabinterval")
and fixed a number of
outstanding issues:
position = "dodge"
correctly
(#180)geom_dots()
and geom_dotsinterval()
(#210). These include a quantiles
parameter on the stats to
make it easy to create quantile dotplots.stat_dist_...
family of geoms for both the
geom_slabinterval()
family and
geom_lineribbon()
(see
stat_dist_slabinterval()
and
stat_dist_lineribbon()
).parse_dist()
, which parses distribution
specifications (like normal(0,1)
) into tidy columns, can be
combined with the stat_dist_...
family of geoms to easily
to visualize priors (e.g. from brms
).dlkjcorr_marginal()
and company), combined with
parse_dist()
and the stat_dist_...
family make
it easy to visualize the marginal LKJ prior on a cell in a correlation
matrix. (#191 #192)vignette("freq-uncertainty-vis")
, also made possible by the
new stat_dist_...
family of geoms (#188)tidy_draws()
can now be applied to already-tidied data
frames, allowing dependent functions (like spread_draws()
and gather_draws()
) to also be applied to data frames
directly (#82). This can be a useful optimization in workflows where the
initial tidying is slow but spreading/gathering is fast (see discussion
in #144)stat_dist_slabh()
. An example of this usage
is in vignette("tidy-brms")
.hdi()
now uses trimmed densities by default to avoid
odd behavior with bounded distributions (#165).compare_levels(comparison = )
now uses a modern tidy
approach to dealing with unevaluated expressions, so
rlang::exprs()
can be used in place of
plyr::.()
(#174, #175)geom_lineribbon()
now works with
ggnewscale
(#178)fitted_draws()
/predicted_draws()
give more
helpful error messages on unsupported models (#177)New features and documentation:
Bug fixes:
New features and documentation:
Minor changes:
predicted_draws()
, closes #134emm_list
in
gather_emmeans_draws()
, closes #126geom_lineribbon()
color black, closes
#153gather_pairs
method for creating custom
scatterplot matrices (and more!)NA
values are now better supported in
point_interval
, and it has an na.rm
argument
(#123)Suggests
Major changes: