Add weights to draws
objects, with one weight per draw, for use in
subsequent weighting operations. For reasons of numerical accuracy, weights
are stored in the form of unnormalized log-weights (in a variable called
.log_weight
). See weights.draws()
for details how to extract weights from
draws
objects.
weight_draws(x, weights, ...)
# S3 method for draws_matrix
weight_draws(x, weights, log = FALSE, ...)
# S3 method for draws_array
weight_draws(x, weights, log = FALSE, ...)
# S3 method for draws_df
weight_draws(x, weights, log = FALSE, ...)
# S3 method for draws_list
weight_draws(x, weights, log = FALSE, ...)
# S3 method for draws_rvars
weight_draws(x, weights, log = FALSE, ...)
(draws) A draws
object or another R object for which the method
is defined.
(numeric vector) A vector of weights of length ndraws(x)
.
Weights will be internally stored on the log scale (in a variable called
.log_weight
) and will not be normalized, but normalized (non-log) weights
can be returned via the weights.draws()
method later.
Arguments passed to individual methods (if applicable).
(logicla) Are the weights passed already on the log scale? The
default is FALSE
, that is, expecting weights
to be on the standard
(non-log) scale.
A draws
object of the same class as x
.
x <- example_draws()
# sample some random weights for illustration
wts <- rexp(ndraws(x))
head(wts)
#> [1] 0.2644506 1.4629054 1.9719158 0.8050840 2.4207868 1.4064785
# add weights
x <- weight_draws(x, weights = wts)
# extract weights
head(weights(x)) # defaults to normalized weights
#> [1] 0.0007016715 0.0038815529 0.0052321195 0.0021361438 0.0064231168
#> [6] 0.0037318345
head(weights(x, normalize=FALSE)) # recover original weights
#> [1] 0.2644506 1.4629054 1.9719158 0.8050840 2.4207868 1.4064785
head(weights(x, log=TRUE)) # get normalized log-weights
#> [1] -7.262045 -5.551520 -5.252939 -6.148753 -5.047852 -5.590855
# add weights which are already on the log scale
log_wts <- log(wts)
head(log_wts)
#> [1] -1.3301008 0.3804244 0.6790056 -0.2168086 0.8840926 0.3410891
x <- weight_draws(x, weights = log_wts, log = TRUE)
# extract weights
head(weights(x))
#> [1] 0.0007016715 0.0038815529 0.0052321195 0.0021361438 0.0064231168
#> [6] 0.0037318345
head(weights(x, log=TRUE, normalize = FALSE)) # recover original log_wts
#> [1] -1.3301008 0.3804244 0.6790056 -0.2168086 0.8840926 0.3410891