(GitHub issue/PR number in parentheses)
-
Added Mans Magnusson as a coauthor.
-
New functions
loo_subsample()
andloo_approximate_posterior()
(and new vignette) for doing PSIS-LOO with large data. (#113) -
Added support for standard importance sampling and truncated importance sampling (functions
sis()
andtis()
). (#125) -
compare()
now throws a deprecation warning suggestingloo_compare()
. (#93) -
A smaller threshold is used when checking the uniqueness of tail values. (#124)
-
For WAIC, warnings are only thrown when running
waic()
and not when printing awaic
object. (#117, @mcol) -
Use markdown syntax in roxygen documentation wherever possible. (#108)
(GitHub issue/PR number in parentheses)
-
New function
loo_compare()
for model comparison that will eventually replace the existingcompare()
function. (#93) -
New vignette on LOO for non-factorizable joint Gaussian models. (#75)
-
New vignette on "leave-future-out" cross-validation for time series models. (#90)
-
New glossary page (use
help("loo-glossary")
) with definitions of key terms. (#81) -
New
se_diff
column in model comparison results. (#78) -
Improved stability of
psis()
whenlog_ratios
are very small. (#74) -
Allow
r_eff=NA
to suppress warning when specifyingr_eff
is not applicable (i.e., draws not from MCMC). (#72) -
Update effective sample size calculations to match RStan's version. (#85)
-
Naming of k-fold helper functions now matches scikit-learn. (#96)
This is a major release with many changes. Whenever possible we have opted to deprecate rather than remove old functionality, but it is possible that old code that accesses elements inside loo objects by position rather than name may error.
-
New package documentation website http://mc-stan.org/loo/ with vignettes, function reference, news.
-
Updated existing vignette and added two new vignettes demonstrating how to use the package.
-
New function
psis()
replacespsislw()
(now deprecated). This version implements the improvements to the PSIS algorithm described in the latest version of https://arxiv.org/abs/1507.02646. Additional diagnostic information is now also provided, including PSIS effective sample sizes. -
New
weights()
method for extracting smoothed weights from apsis
object. Argumentslog
andnormalize
control whether the weights are returned on the log scale and whether they are normalized. -
Updated the interface for the
loo()
methods to integrate nicely with the new PSIS algorithm. Methods for log-likelihood arrays, matrices, and functions are provided. Several arguments have changed, particularly for theloo.function
method. The documentation athelp("loo")
has been updated to describe the new behavior. -
The structure of the objects returned by the
loo()
function has also changed slightly, as described in the Value section athelp("loo", package = "loo")
. -
New function
loo_model_weights()
computes weights for model averaging as described in https://arxiv.org/abs/1704.02030. Implemented methods include stacking of predictive distributions, pseudo-BMA weighting or pseudo-BMA+ weighting with the Bayesian bootstrap. -
Setting
options(loo.cores=...)
is now deprecated in favor ofoptions(mc.cores=...)
. For now, if both theloo.cores
andmc.cores
options have been set, preference will be given toloo.cores
until it is removed in a future release. (thanks to @cfhammill) -
New functions
example_loglik_array()
andexample_loglik_matrix()
that provide objects to use in examples and tests. -
When comparing more than two models with
compare()
, the first column of the output is now theelpd
difference from the model in the first row. -
New helper functions for splitting observations for K-fold CV:
kfold_split_random()
,kfold_split_balanced()
,kfold_split_stratified()
. Additional helper functions for implementing K-fold CV will be included in future releases.
- Introduce the
E_loo
function for computing weighted expectations (means, variances, quantiles).
pareto_k_table
andpareto_k_ids
convenience functions for quickly identifying problematic observations- pareto k values now grouped into
(-Inf, 0.5]
,(0.5, 0.7]
,(0.7, 1]
,(1, Inf)
(didn't used to include 0.7) - warning messages are now issued by
psislw
instead ofprint.loo
print.loo
shows a table of pareto k estimates (if any k > 0.7)- Add argument to
compare
to allow loo objects to be provided in a list rather than in'...'
- Update references to point to published paper
- GitHub repository moved from @jgabry to @stan-dev
- Better error messages from
extract_log_lik
- Fix example code in vignette (thanks to GitHub user @krz)
- Add warnings if any p_waic estimates are greather than 0.4
- Improve line coverage of tests to 100%
- Update references in documentation
- Remove model weights from
compare
.
In previous versions of loo model weights were also reported bycompare
. We have removed the weights because they were based only on the point estimate of the elpd values ignoring the uncertainty. We are currently working on something similar to these weights that also accounts for uncertainty, which will be included in future versions of loo.
This update makes it easier for other package authors using loo to write
tests that involve running the loo
function. It also includes minor bug
fixes and additional unit tests. Highlights:
- Don't call functions from parallel package if
cores=1
. - Return entire vector/matrix of smoothed weights rather than a summary statistic when
psislw
function is called in an interactive session. - Test coverage > 80%
This update provides several important improvements, most notably an alternative method for specifying the pointwise log-likelihood that reduces memory usage and allows for loo to be used with larger datasets. This update also makes it easier to to incorporate loo's functionality into other packages.
- Add Ben Goodrich as contributor
- S3 generics and
matrix
andfunction
methods for bothloo
andwaic
. The matrix method provide the same functionality as in previous versions of loo (taking a log-likelihood matrix as the input). The function method allows the user to provide a function for computing the log-likelihood from the data and posterior draws (which are also provided by the user). The function method is less memory intensive and should make it possible to use loo for models fit to larger amounts of data than before. - Separate
plot
andprint
methods.plot
also provideslabel_points
argument, which, ifTRUE
, will label any Paretok
points greater than 1/2 by the index number of the corresponding observation. The plot method also now warns aboutInf
/NA
/NaN
values ofk
that are not shown in the plot. compare
now returns model weights and accepts more than two inputs.- Allow setting number of cores using
options(loo.cores = NUMBER)
.
- Updates names in package to reflect name changes in the accompanying paper.
- Better handling of special cases
- Deprecates
loo_and_waic
function in favor of separate functionsloo
andwaic
- Deprecates
loo_and_waic_diff
. Usecompare
instead.
- Initial release