Description Usage Arguments Details Examples
View source: R/10-UserEfficiency.R
Given a prior distribution for the parameters, this function calculates the Bayesian D-and PA- efficiency of a design ξ_1 with respect to a design ξ_2. Usually, ξ_2 is an optimal design. This function is especially useful for investigating the robustness of Bayesian optimal designs under different prior distributions (See 'Examples').
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
formula |
A linear or nonlinear model |
predvars |
A vector of characters. Denotes the predictors in the |
parvars |
A vector of characters. Denotes the unknown parameters in the |
family |
A description of the response distribution and the link function to be used in the model.
This can be a family function, a call to a family function or a character string naming the family.
Every family function has a link argument allowing to specify the link function to be applied on the response variable.
If not specified, default links are used. For details see |
prior |
An object of class |
fimfunc |
A function. Returns the FIM as a |
x2 |
Vector of design (support) points of the optimal design (ξ_2). Similar to |
w2 |
Vector of corresponding design weights for |
x1 |
Vector of design (support) points of ξ_1. See 'Details' of |
w1 |
Vector of corresponding design weights for |
crt.bayes.control |
A list. Control parameters to approximate the integral in the Bayesian criterion at a given design over the parameter space.
For details, see |
npar |
Number of model parameters. Used when |
type |
A character. |
prob |
Either |
See Masoudi et al. (2018) for formula details (the paper is under review and will be updated as soon as accepted).
The argument x1
is the vector of design points.
For design points with more than one dimension (the models with more than one predictors),
it is a concatenation of the design points, but dimension-wise.
For example, let the model has three predictors (I, S, Z).
Then, a two-point optimal design has the following points:
{point1 = (I1, S1, Z1), point2 = (I2, S2, Z2)}.
Then, the argument x
is equal to
x = c(I1, I2, S1, S2, Z1, Z2)
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | #############################
# 2PL model
############################
formula4.1 <- ~ 1/(1 + exp(-b *(x - a)))
predvars4.1 <- "x"
parvars4.1 <- c("a", "b")
# des4.1 is a list of Bayesian optimal designs with corresponding priors.
des4.1 <- vector("list", 6)
des4.1[[1]]$x <- c(-3, -1.20829, 0, 1.20814, 3)
des4.1[[1]]$w <- c(.24701, .18305, .13988, .18309, .24702)
des4.1[[1]]$prior <- uniform(lower = c(-3, .1), upper = c(3, 2))
des4.1[[2]]$x <- c(-2.41692, -1.16676, .04386, 1.18506, 2.40631)
des4.1[[2]]$w <- c(.26304, .18231, .14205, .16846, .24414)
des4.1[[2]]$prior <- student(mean = c(0, 1), S = matrix(c(1, -0.17, -0.17, .5), nrow = 2),
df = 3, lower = c(-3, .1), upper = c(3, 2))
des4.1[[3]]$x <- c(-2.25540, -.76318, .54628, 2.16045)
des4.1[[3]]$w <- c(.31762, .18225, .18159, .31853)
des4.1[[3]]$prior <- normal(mu = c(0, 1),
sigma = matrix(c(1, -0.17, -0.17, .5), nrow = 2),
lower = c(-3, .1), upper = c(3, 2))
des4.1[[4]]$x <- c(-2.23013, -.66995, .67182, 2.23055)
des4.1[[4]]$w <- c(.31420, .18595, .18581, .31404)
des4.1[[4]]$prior <- normal(mu = c(0, 1),
sigma = matrix(c(1, 0, 0, .5), nrow = 2),
lower = c(-3, .1), upper = c(3, 2))
des4.1[[5]]$x <- c(-1.51175, .12043, 1.05272, 2.59691)
des4.1[[5]]$w <- c(.37679, .14078, .12676, .35567)
des4.1[[5]]$prior <- skewnormal(xi = c(0, 1),
Omega = matrix(c(1, -0.17, -0.17, .5), nrow = 2),
alpha = c(1, 0), lower = c(-3, .1), upper = c(3, 2))
des4.1[[6]]$x <- c(-2.50914, -1.16780, -.36904, 1.29227)
des4.1[[6]]$w <- c(.35767, .11032, .15621, .37580)
des4.1[[6]]$prior <- skewnormal(xi = c(0, 1),
Omega = matrix(c(1, -0.17, -0.17, .5), nrow = 2),
alpha = c(-1, 0), lower = c(-3, .1), upper = c(3, 2))
## now we want to find the relative efficiency of
## all Bayesian optimal designs assuming different priors (6 * 6)
eff4.1 <- matrix(NA, 6, 6)
colnames(eff4.1) <- c("uni", "t", "norm1", "norm2", "skew1", "skew2")
rownames(eff4.1) <- colnames(eff4.1)
## Not run:
for (i in 1:6)
for(j in 1:6)
eff4.1[i, j] <- beff(formula = formula4.1,
predvars = predvars4.1,
parvars = parvars4.1,
family = binomial(),
prior = des4.1[[i]]$prior,
x2 = des4.1[[i]]$x,
w2 = des4.1[[i]]$w,
x1 = des4.1[[j]]$x,
w1 = des4.1[[j]]$w)
# For example the first row represents Bayesian D-efficiencies of different
# Bayesian optimal design found assuming different priors with respect to
# the Bayesian D-optimal design found under uniform prior distribution.
eff4.1
## End(Not run)
#############################
# Relative efficiency for the DP-Compund criterion
############################
p <- c(1, -2, 1, -1)
prior4.4 <- uniform(p -1.5, p + 1.5)
formula4.4 <- ~exp(b0+b1*x1+b2*x2+b3*x1*x2)/(1+exp(b0+b1*x1+b2*x2+b3*x1*x2))
prob4.4 <- ~1-1/(1+exp(b0 + b1 * x1 + b2 * x2 + b3 * x1 * x2))
predvars4.4 <- c("x1", "x2")
parvars4.4 <- c("b0", "b1", "b2", "b3")
lb <- c(-1, -1)
ub <- c(1, 1)
## des4.4 is a list of DP-optimal designs found using different values for alpha
des4.4 <- vector("list", 5)
des4.4[[1]]$x <- c(-1, 1)
des4.4[[1]]$w <- c(1)
des4.4[[1]]$alpha <- 0
des4.4[[2]]$x <- c(1, -.62534, .11405, -1, 1, .28175, -1, -1, 1, -1, -1, 1, 1, .09359)
des4.4[[2]]$w <- c(.08503, .43128, .01169, .14546, .05945, .08996, .17713)
des4.4[[2]]$alpha <- .25
des4.4[[3]]$x <- c(-1, .30193, 1, 1, .07411, -1, -.31952, -.08251, 1, -1, 1, -1, -1, 1)
des4.4[[3]]$w <- c(.09162, .10288, .15615, .13123, .01993, .22366, .27454)
des4.4[[3]]$alpha <- .5
des4.4[[4]]$x <- c(1, -1, .28274, 1, -1, -.19674, .03288, 1, -1, 1, -1, -.16751, 1, -1)
des4.4[[4]]$w <- c(.19040, .24015, .10011, .20527, .0388, .20075, .02452)
des4.4[[4]]$alpha <- .75
des4.4[[5]]$x <- c(1, -1, .26606, -.13370, 1, -.00887, -1, 1, -.2052, 1, 1, -1, -1, -1)
des4.4[[5]]$w <- c(.23020, .01612, .09546, .16197, .23675, .02701, .2325)
des4.4[[5]]$alpha <- 1
# D-efficiency of the DP-optimal designs:
# des4.4[[5]]$x and des4.4[[5]]$w is the D-optimal design
beff(formula = formula4.4,
predvars = predvars4.4,
parvars = parvars4.4,
family = binomial(),
prior = prior4.4,
x2 = des4.4[[5]]$x,
w2 = des4.4[[5]]$w,
x1 = des4.4[[2]]$x,
w1 = des4.4[[2]]$w)
beff(formula = formula4.4,
predvars = predvars4.4,
parvars = parvars4.4,
family = binomial(),
prior = prior4.4,
x2 = des4.4[[5]]$x,
w2 = des4.4[[5]]$w,
x1 = des4.4[[3]]$x,
w1 = des4.4[[3]]$w)
beff(formula = formula4.4,
predvars = predvars4.4,
parvars = parvars4.4,
family = binomial(),
prior = prior4.4,
x2 = des4.4[[5]]$x,
w2 = des4.4[[5]]$w,
x1 = des4.4[[4]]$x,
w1 = des4.4[[4]]$w)
# must be one!
beff(formula = formula4.4,
predvars = predvars4.4,
parvars = parvars4.4,
family = binomial(),
prior = prior4.4,
prob = prob4.4,
type = "PA",
x2 = des4.4[[5]]$x,
w2 = des4.4[[5]]$w,
x1 = des4.4[[5]]$x,
w1 = des4.4[[5]]$w)
## P-efficiency
# reported in Table 4 as eff_P
# des4.4[[1]]$x and des4.4[[1]]$w is the P-optimal design
beff(formula = formula4.4,
predvars = predvars4.4,
parvars = parvars4.4,
family = binomial(),
prior = prior4.4,
prob = prob4.4,
type = "PA",
x2 = des4.4[[1]]$x,
w2 = des4.4[[1]]$w,
x1 = des4.4[[2]]$x,
w1 = des4.4[[2]]$w)
beff(formula = formula4.4,
predvars = predvars4.4,
parvars = parvars4.4,
family = binomial(),
prior = prior4.4,
prob = prob4.4,
type = "PA",
x2 = des4.4[[1]]$x,
w2 = des4.4[[1]]$w,
x1 = des4.4[[3]]$x,
w1 = des4.4[[3]]$w)
beff(formula = formula4.4,
predvars = predvars4.4,
parvars = parvars4.4,
family = binomial(),
prior = prior4.4,
prob = prob4.4,
type = "PA",
x2 = des4.4[[1]]$x,
w2 = des4.4[[1]]$w,
x1 = des4.4[[4]]$x,
w1 = des4.4[[4]]$w)
beff(formula = formula4.4,
predvars = predvars4.4,
parvars = parvars4.4,
family = binomial(),
prior = prior4.4,
prob = prob4.4,
type = "PA",
x2 = des4.4[[1]]$x,
w2 = des4.4[[1]]$w,
x1 = des4.4[[5]]$x,
w1 = des4.4[[5]]$w)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.