glrSearch {sglr} | R Documentation |
The search through the space of b_1
(corresponds to b_1
in
paper) and b_0
(corresponds to b_0
in paper) is greedy
initially. Then refinements to the boundary are made by adjusting the
boundaries by the step-size. It is entirely possible that the
step-size is so small that a maximum number of iterations can be
reached. Depending on how close p_0
and p_1
are the memory
usage can grow significantly. The process is computationally intensive
being dominated by a recursion deep in the search.
glrSearch(p, alpha, beta, stepSize = 0.5, tol = 1e-7,
startB1 = log(1/beta), startB0 = log(1/alpha),
maxIter = 25, gridIt = FALSE, nGrid = 5, verbose = FALSE)
p |
The vector of |
alpha |
A value for type I error |
beta |
A value for type II error ( |
stepSize |
A value to use for moving the boundaries during the search, 0.5 default seems to work. |
tol |
A value that is used for deciding when to terminate the search. A euclidean metric is used. Default 1e-7. |
startB1 |
A starting value for the futility boundary, default is log of reciprocal type I error |
startB0 |
A starting value for the rejection boundary, default is log of reciprocal type II error |
maxIter |
A maximum number of iterations to be used for the search. This allows for a bailout if the step size is too small. |
gridIt |
A logical value indicating if a grid of values should be evaluated once the boundaries are bracketed in the search. |
nGrid |
The number of grid points to use, default 5 |
verbose |
A logical flag indicating if you want verbose output during search. Useful for situations where the code gets confused. |
One should not use this code without a basic understanding of the Shih, Lai, Heyse and Chen paper cited below, particularly the section on the pre-licensure vaccine trials.
As the search can be computationally intensive, the program needs to use some variables internally by reference, particularly large tables that stay constant.
In our experiments, starting off with the default step size has usually worked, but in other cases the step size and the maximum number of iterations may need to be adjusted.
b1 |
The explored values of the futility boundary
|
b0 |
The explored values of the rejection boundary
|
estimate |
The estimated |
glrTables |
The constant values of the log likelihoods under
|
alphaTable |
a matrix (nGrid x nGrid) of |
betaTable |
a matrix (nGrid x nGrid) of |
b1Vals |
the vector of |
b0Vals |
the vector of |
iterations |
The number of iterations actually used |
Balasubramanian Narasimhan
“Sequential Generalized Likelihood Ratio Tests for Vaccine Safety Evaluation” doi: 10.1002/sim.4036.
library(sglr)
result <- glrSearch(p=c(.5, .75), alpha=0.05, beta=0.10)
result <- glrSearch(p=c(.5, .75), alpha=0.05, beta=0.10, verbose=TRUE)
result <- glrSearch(p=c(.5, .75), alpha=0.05, beta=0.10, gridIt=TRUE)
print(result$alphaTable)
print(result$betaTable)
## takes a while
result <- glrSearch(p=c(.5, 2/3), alpha=0.05, beta=0.10)
print(names(result))
##result <- glrSearch(p=c(.5, 2/3), alpha=0.05, beta=0.10, gridIt=TRUE)
##print(result$alphaTable)
##print(result$betaTable)