Learn R Programming

posterior (version 1.6.0)

weight_draws: Weight draws objects

Description

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.

Usage

weight_draws(x, weights, ...)

# S3 method for draws_matrix weight_draws(x, weights, log = FALSE, pareto_smooth = FALSE, ...)

# S3 method for draws_array weight_draws(x, weights, log = FALSE, pareto_smooth = FALSE, ...)

# S3 method for draws_df weight_draws(x, weights, log = FALSE, pareto_smooth = FALSE, ...)

# S3 method for draws_list weight_draws(x, weights, log = FALSE, pareto_smooth = FALSE, ...)

# S3 method for draws_rvars weight_draws(x, weights, log = FALSE, pareto_smooth = FALSE, ...)

Value

A draws object of the same class as x.

Arguments

x

(draws) A draws object or another R object for which the method is defined.

weights

(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).

log

(logical) 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.

pareto_smooth

(logical) Should the weights be Pareto-smoothed? The default is FALSE.

See Also

weights.draws(), resample_draws()

Examples

Run this code
x <- example_draws()

# sample some random weights for illustration
wts <- rexp(ndraws(x))
head(wts)

# add weights
x <- weight_draws(x, weights = wts)

# extract weights
head(weights(x)) # defaults to normalized weights
head(weights(x, normalize=FALSE)) # recover original weights
head(weights(x, log=TRUE)) # get normalized log-weights

# add weights which are already on the log scale
log_wts <- log(wts)
head(log_wts)

x <- weight_draws(x, weights = log_wts, log = TRUE)
# extract weights
head(weights(x))
head(weights(x, log=TRUE, normalize = FALSE)) # recover original log_wts

# add weights on log scale and Pareto smooth them
x <- weight_draws(x, weights = log_wts, log = TRUE, pareto_smooth = TRUE)

Run the code above in your browser using DataLab