Skip to content
Closed
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# bayesplot (development version)

* Added unit test for `.psis_subset()` .
Comment thread
utkarshpawade marked this conversation as resolved.
Outdated
* Fixed `is_chain_list()` to correctly reject empty lists instead of silently returning `TRUE`.
* Added unit tests for `mcmc_areas_ridges_data()`, `mcmc_parcoord_data()`, and `mcmc_trace_data()`.
* Added unit tests for `ppc_error_data()` and `ppc_loo_pit_data()` covering output structure, argument handling, and edge cases.
Expand Down
44 changes: 44 additions & 0 deletions tests/testthat/test-ppc-loo.R
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,50 @@ test_that("error if subset is bigger than num obs", {
)
})

test_that(".psis_subset output structure matches valid psis object", {
skip_if_not_installed("rstanarm")
skip_if_not_installed("loo")

subset_idx <- 1:10
result <- .psis_subset(psis1, subset_idx)

# class preserved

expect_s3_class(result, "psis")

Comment thread
utkarshpawade marked this conversation as resolved.
Outdated
# log_weights columns match subset length, rows unchanged
orig_dims <- dim(psis1)
expect_equal(ncol(result$log_weights), length(subset_idx))
expect_equal(nrow(result$log_weights), orig_dims[1])

Comment thread
utkarshpawade marked this conversation as resolved.
# log_weights values match the subsetted columns
expect_equal(
result$log_weights,
psis1$log_weights[, subset_idx, drop = FALSE]
)

# diagnostics subsetted correctly
expect_equal(result$diagnostics$pareto_k, psis1$diagnostics$pareto_k[subset_idx])
expect_equal(result$diagnostics$n_eff, psis1$diagnostics$n_eff[subset_idx])

# dims attribute updated
expect_equal(attr(result, "dims"), c(orig_dims[1], length(subset_idx)))

# other attributes subsetted correctly
expect_equal(
attr(result, "norm_const_log"),
attr(psis1, "norm_const_log")[subset_idx]
)
expect_equal(
attr(result, "tail_len"),
attr(psis1, "tail_len")[subset_idx]
)
expect_equal(
attr(result, "r_eff"),
attr(psis1, "r_eff")[subset_idx]
)
})


# Visual tests ------------------------------------------------------------

Expand Down
Loading