diff --git a/NEWS.md b/NEWS.md index 30d0040..b3e11bf 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,9 @@ +# ubms 1.2.9 (development) + +* Updated compatibility with upcoming changes to `loo_compare()` output + structure in the `loo` package (> 2.9.0), which now returns a data frame + instead of a matrix and includes additional diagnostic columns. + # ubms 1.2.8 * Add probs argument to summary method diff --git a/R/fitlist.R b/R/fitlist.R index d800f56..0a418e4 100644 --- a/R/fitlist.R +++ b/R/fitlist.R @@ -53,8 +53,15 @@ setMethod("modSel", "ubmsFitList", function(object, ...){ loos <- lapply(object@models, function(x) x@loo) elpd <- sapply(loos, function(x) x$estimates[1]) p_loo <- sapply(loos, function(x) x$estimates[2]) - compare <- loo::loo_compare(loos)[names(elpd),] - out <- data.frame(elpd=elpd, nparam=p_loo, elpd_diff=compare[,1], - se_diff=compare[,2]) + compare <- loo::loo_compare(loos) + if ("model" %in% colnames(compare)) { + compare <- compare[match(names(elpd), compare$model),] + out <- data.frame(elpd=elpd, nparam=p_loo, elpd_diff=compare[,2], + se_diff=compare[,3]) + } else { + compare <- loo::loo_compare(loos)[names(elpd),] + out <- data.frame(elpd=elpd, nparam=p_loo, elpd_diff=compare[,1], + se_diff=compare[,2]) + } out[order(out$elpd_diff, decreasing=TRUE),] })