Movatterモバイル変換


[0]ホーム

URL:


Title:Bayesian Benefit Risk Analysis
Version:0.1.0
Description:Quantitative methods for benefit-risk analysis help to condense complex decisions into a univariate metric describing the overall benefit relative to risk. One approach is to use the multi-criteria decision analysis framework (MCDA), as in Mussen, Salek, and Walker (2007) <doi:10.1002/pds.1435>. Bayesian benefit-risk analysis incorporates uncertainty through posterior distributions which are inputs to the benefit-risk framework. The brisk package provides functions to assist with Bayesian benefit-risk analyses, such as MCDA. Users input posterior samples, utility functions, weights, and the package outputs quantitative benefit-risk scores. The posterior of the benefit-risk scores for each group can be compared. Some plotting capabilities are also included.
License:MIT + file LICENSE
Imports:dplyr (≥ 1.0), ellipsis (≥ 0.3), ggplot2 (≥ 3.3), hitandrun(≥ 0.5), purrr (≥ 0.3), rlang (≥ 1.0), tidyr (≥ 1.1)
Encoding:UTF-8
RoxygenNote:7.2.1
Suggests:knitr, fs (≥ 1.5), testthat (≥ 3.0.0), tibble (≥ 3.1),rmarkdown
Config/testthat/edition:3
VignetteBuilder:knitr
URL:https://rich-payne.github.io/brisk/
BugReports:https://github.com/rich-payne/brisk/issues
NeedsCompilation:no
Packaged:2022-08-30 17:30:19 UTC; c263386
Author:Richard Payne [aut, cre], Sai Dharmarajan [rev], Eli Lilly and Company [cph]
Maintainer:Richard Payne <paynestatistics@gmail.com>
Repository:CRAN
Date/Publication:2022-08-31 08:20:05 UTC

Bayesian Benefit Risk

Description

Bayesian Benefit Risk

Usage

benefit(name, fun, weight)risk(name, fun, weight)br(...)mcda(...)

Arguments

name

a string indicating the name of the benefit or risk.

fun

a utility function which maps a parameter value to a utilityvalue.

weight

the weight of the benefit/risk.

...

calls tobenefit(),risk(), andbr_group() to define theutility functions and treatment groups.

Details

Thebr() function allows the user to define an arbitrary numberof "benefits" and "risks". Each benefit/risk requires a utilityfunction (fun) and a weight. The utility function maps the benefit/riskparameter to a utility score. Thebr_group() function supplies samplesfrom the posterior distribution for each benefit risk for a specificgroup (e.g. treatment arm).

Thebr() function then calculates the posterior distribution of theoverall utility for each group. The overall utility is a weighted sum ofthe utilities for each benefit/risk.

Themcda() function is the same asbr(), but has extra checks toensure that the total weight of all benefits and risks is 1, and that theutility functions produce values between 0 and 1 for all posteriorsamples.

Value

A named list with posterior summaries of utility for each group andthe raw posterior utility scores.

Examples

set.seed(1132)ilogit <- function(x) 1 / (1 + exp(-x))out <- mcda(  benefit("CV", function(x) ilogit(x), weight = .75),  risk("DVT", function(x) ilogit(- .5 * x), weight = .25),  br_group(    label = "PBO",    CV = rnorm(1e4, .1),    DVT = rnorm(1e4, .1)  ),  br_group(    label = "TRT",    CV = rnorm(1e4, 2),    DVT = rnorm(1e4, 1)  ))outsummary(out, probs = c(.025, .5, .975))summary(out, reference = "PBO")plot(out)plot(out, reference = "PBO")plot_utility(out)plot_utility(out, reference = "PBO")plot_utility(out, stacked = TRUE)

Posterior Samples for a Benefit/Risk Group

Description

Posterior Samples for a Benefit/Risk Group

Usage

br_group(label, ...)

Arguments

label

a string indicating the name of the group.

...

named arguments which correspond to the names of thebenefits/risks specified bybenefit() andrisk() in a call tobr().

Details

This function is intended to be used as an input argument tothebr() function.

Value

A named list with the posterior samples and an assigned S3 class.

Examples

set.seed(1132)out <- br(  benefit("CV", function(x) x, weight = 1),  risk("DVT", function(x) - .5 * x, weight = 1),  br_group(    label = "PBO",    CV = rnorm(1e4, .1),    DVT = rnorm(1e4, .1)  ),  br_group(    label = "TRT",    CV = rnorm(1e4, 2),    DVT = rnorm(1e4, 1)  ))outsummary(out, probs = c(.025, .5, .975))summary(out, reference = "PBO")plot(out)# adjusted relative to PBOplot(out, reference = "PBO")plot_utility(out)plot_utility(out, reference = "PBO")plot_utility(out, stacked = TRUE)

Calculate Quantiles and Probabilities

Description

Calculates posterior quantiles and probabilities onbenefit-risk scores.

Usage

pbrisk(x, q, reference = NULL, direction = c("upper", "lower"))qbrisk(x, p, reference = NULL)

Arguments

x

output from a call tobrisk::br() orbrisk::mcda().

q

vector of quantiles.

reference

a string indicating which group is the reference group whichis used to subtract scores from other groups.

direction

the direction of the posterior probability to compute.

p

a vector of probabilities from which to compute posterior quantiles.

Value

A tibble with the quantile and posterior probability of thebenefit-risk score for each group.

Examples

set.seed(1132)out <- br(  benefit("CV", function(x) x, weight = 1),  risk("DVT", function(x) - .5 * x, weight = 1),  br_group(    label = "PBO",    CV = rnorm(1e4, .1),    DVT = rnorm(1e4, .1)  ),  br_group(    label = "TRT",    CV = rnorm(1e4, 2),    DVT = rnorm(1e4, 1)  ))pbrisk(out, q = c(.03, .04))pbrisk(out, q = c(.03, .04), direction = "lower")pbrisk(out, q = c(.03, .04), reference = "PBO")qbrisk(out, p = c(.025, .975))qbrisk(out, p = c(.025, .975), reference = "PBO")

Plot Benefit/Risk Posterior Scores

Description

Plot Benefit/Risk Posterior Scores

Usage

## S3 method for class 'brisk_br'plot(x, reference = NULL, ...)

Arguments

x

output from a call tobr() ormcda().

reference

a string indicating which group is the reference group whichis used to subtract scores from other groups.

...

additional arguments throw an error.

Value

A ggplot object plotting the posterior densities of the weightedutility scores.

See Also

Other plots:plot_utility()

Examples

set.seed(1132)ilogit <- function(x) 1 / (1 + exp(-x))out <- mcda(  benefit("CV", function(x) ilogit(x), weight = .75),  risk("DVT", function(x) ilogit(- .5 * x), weight = .25),  br_group(    label = "PBO",    CV = rnorm(1e4, .1),    DVT = rnorm(1e4, .1)  ),  br_group(    label = "TRT",    CV = rnorm(1e4, 2),    DVT = rnorm(1e4, 1)  ))outsummary(out, probs = c(.025, .5, .975))summary(out, reference = "PBO")plot(out)plot(out, reference = "PBO")plot_utility(out)plot_utility(out, reference = "PBO")plot_utility(out, stacked = TRUE)

Plot Posterior Mean Utility Scores

Description

Plot Posterior Mean Utility Scores

Usage

plot_utility(x, reference = NULL, stacked = FALSE)

Arguments

x

output from a call tobr() ormcda().

reference

a string indicating which group is the reference group whichis used to subtract scores from other groups.

stacked

logical indicating if a stacked version of the barplot shouldbe produced.

Value

A ggplot barplot of the posterior mean weighted utility scores.

See Also

Other plots:plot.brisk_br()

Examples

set.seed(1132)ilogit <- function(x) 1 / (1 + exp(-x))out <- mcda(  benefit("CV", function(x) ilogit(x), weight = .75),  risk("DVT", function(x) ilogit(- .5 * x), weight = .25),  br_group(    label = "PBO",    CV = rnorm(1e4, .1),    DVT = rnorm(1e4, .1)  ),  br_group(    label = "TRT",    CV = rnorm(1e4, 2),    DVT = rnorm(1e4, 1)  ))outsummary(out, probs = c(.025, .5, .975))summary(out, reference = "PBO")plot(out)plot(out, reference = "PBO")plot_utility(out)plot_utility(out, reference = "PBO")plot_utility(out, stacked = TRUE)

Simulate Normalized Weights

Description

Simulate Normalized Weights

Usage

sim_weights(n, ...)

Arguments

n

number of weights to simulate.

...

vectors of length 2 indicating the lowerand upper bound (respectively) of the un-normalized weights. At least oneset of bounds must be equal to each other (e.g. c(1, 1)) and be the largestset of bounds in the set specified.

Details

The weights are normalized relative to a set of bounds whichare equal to each other (e.g. c(1, 1)), and also are the largest set ofbounds in the set specified. See Example.

Value

A tibble with weights for each argument supplied to.... Eachcolumn represents the weights, and each row (total ofn rows) is aset of random weights across groups. Column names are obtained from theargument names of..., if supplied.

Examples

w <- sim_weights(1e4, a = c(1, 1), b = c(.4, .6), c = c(.2, .3))# ratio of b to a is between c(.4, .6) / c(1, 1)summary(w$b / w$a)# ratio of c to a is between c(.2, .3) / c(1, 1)summary(w$c / w$a)# Weights can be used to add uncertainty to the benefit/risk analysisset.seed(1132)ilogit <- function(x) 1 / (1 + exp(-x))out <- mcda(  benefit("CV", function(x) ilogit(x), weight = w$a),  risk("DVT", function(x) ilogit(- .5 * x), weight = w$b),  risk("MI", function(x) ilogit(- .5 * x), weight = w$c),  br_group(    label = "PBO",    CV = rnorm(1e4, .1),    DVT = rnorm(1e4, .1),    MI = rnorm(1e4, .1)  ),  br_group(    label = "TRT",    CV = rnorm(1e4, 2),    DVT = rnorm(1e4, 1),    MI = rnorm(1e4, 0.5)  ))

Summarize Bayesian Benefit-Risk Scores

Description

Summarize Bayesian Benefit-Risk Scores

Usage

## S3 method for class 'brisk_br'summary(object, probs = c(0.025, 0.975), reference = NULL, ...)

Arguments

object

output from a call tobrisk::br() orbrisk::mcda().

probs

a vector of probabilities used to obtain quantiles ofthe posterior of the weighted utilities for each group.

reference

a string indicating which group is the reference group whichis used to subtract scores from other groups.

...

Additional arguments which throw an error if specified.

Value

A named list with the posterior summary, and the scores from theobject object (which are adjusted ifreference is specified).

Examples

set.seed(1132)out <- br(  benefit("CV", function(x) x, weight = 1),  risk("DVT", function(x) - .5 * x, weight = 1),  br_group(    label = "PBO",    CV = rnorm(1e4, .1),    DVT = rnorm(1e4, .1)  ),  br_group(    label = "TRT",    CV = rnorm(1e4, 2),    DVT = rnorm(1e4, 1)  ))outsummary(out, probs = c(.025, .5, .975))summary(out, reference = "PBO")plot(out)# adjusted relative to PBOplot(out, reference = "PBO")plot_utility(out)plot_utility(out, reference = "PBO")plot_utility(out, stacked = TRUE)

[8]ページ先頭

©2009-2025 Movatter.jp