MCPModGeneral
is an extension of the DoseFinding
package,
streamlining the analysis of non-normal endpoints. Almost all of the
functions in the DoseFinding
package rely on the user supplying
(\mu), the estimated dose-response coefficients, and (S), the
variance-covariance matrix of (\mu). However, (S) is difficult to
know before-hand, and for functions like powMCT
, differ for each
alternative model. The MCPModGeneral
package does not require the user
to supply a matrix for (S) and instead calculates the theoretical
variance-covariance matrix for the negative binomial, binomial, and
Poisson distributions. Alternatively, the emperical covariance matrices
can be estimated via simulation.
Users can also use the MCPModGeneral
package to fit the full MCPMod
procedure on negative binomial, Poisson, and binomial data, as well as
basic survival data. The relevant functions for fitting the models are
prepareGen
and MCPModGen
. The full capabilities of these functions
will be explored later in the vignette.
As with the DoseFinding
package, the MCPModGeneral
package still
requires the user to create and specify the potential dose-response
curves. The DoseFinding
package provides the guesst
and Mods
functions to create these models, but ultimately, the dose-response
curves come from prior knowledge or discussion with clinicians. For the
entirety of this vignette, it is assumed that the user is able to
construct the potential models. Recall that dose-response curves must be
constructed on the same scale as the ANOVA output, meaning if negative
binomial data is to be analyzed via a GLM with a log-link, the
dose-response curve should represent the log of the means at each dose.
The MCPModGeneral
package allows usage with the most commonly used
links. See the family
page from the stats
package for a list of the
common links.
You can install the released version of MCPModGeneral from CRAN with:
install.packages("MCPModGeneral")
This is a basic example which shows you how to solve a common problem:
library(MCPModGeneral)
#> Loading required package: DoseFinding
#> Loading required package: lattice
#> Loading required package: mvtnorm
# Analyze the binary migraine data from the DoseFinding package.
data(migraine)
models = Mods(linear = NULL, emax = 1, quadratic = c(-0.004),
doses = migraine$dose)
powMCTGen(migraine$ntrt, "binomial", "logit",
Ntype = "actual", altModels = models)
#> linear emax quadratic
#> 0.8637783 0.9893745 0.9148810
sampSizeMCTGen("binomial", "logit", altModels = models, power = 0.8,
Ntype = "arm", upperN = 30, verbose = TRUE)
#> Iter: 1, N = 45, current value = 0.7357
#> Iter: 2, N = 52, current value = 0.799
#> Iter: 3, N = 56, current value = 0.829
#> Iter: 4, N = 54, current value = 0.8154
#> Iter: 5, N = 53, current value = 0.8067
#>
#> Using "min" of power
#> Sample size calculation
#>
#> alRatio: 1 1 1 1 1 1 1 1
#> Total sample size: 424
#> Sample size per arm: 53 53 53 53 53 53 53 53
#> targFunc:
# Now analyze using binomial weights
PFrate <- migraine$painfree/migraine$ntrt
migraine$pfrat = migraine$painfree / migraine$ntrt
MCPModGen("binomial","logit",returnS = TRUE, w = "ntrt", dose = "dose",
resp = "pfrat", data = migraine, models = models, selModel = "aveAIC",
Delta = 0.2)
#> $MCPMod
#> MCPMod
#>
#> Multiple Contrast Test:
#> t-Stat adj-p
#> linear 3.703 < 0.001
#> emax 3.636 < 0.001
#> quadratic 3.079 0.00278
#>
#> Estimated Dose Response Models:
#> linear model
#> e0 delta
#> -1.710 0.006
#>
#> emax model
#> e0 eMax ed50
#> -2.219 1.387 8.473
#>
#> quadratic model
#> e0 b1 b2
#> -1.776 0.010 0.000
#>
#> Model weights (AIC):
#> linear emax quadratic
#> 0.3388 0.5071 0.1541
#>
#> Estimated TD, Delta=0.2
#> linear emax quadratic
#> 33.8758 1.4274 20.9810
#>
#> $data
#> dose resp
#> 1 0.0 -2.2225424
#> 2 2.5 -1.9459101
#> 3 5.0 -2.0541237
#> 4 10.0 -1.0775589
#> 5 20.0 -1.4469190
#> 6 50.0 -1.2927683
#> 7 100.0 -1.1676052
#> 8 200.0 -0.5663955
#>
#> $S
#> factor(dose)0 factor(dose)2.5 factor(dose)5 factor(dose)10
#> factor(dose)0 0.0852564 0.0000000 0.0000000 0.0000000
#> factor(dose)2.5 0.0000000 0.2857133 0.0000000 0.0000000
#> factor(dose)5 0.0000000 0.0000000 0.2256406 0.0000000
#> factor(dose)10 0.0000000 0.0000000 0.0000000 0.0837766
#> factor(dose)20 0.0000000 0.0000000 0.0000000 0.0000000
#> factor(dose)50 0.0000000 0.0000000 0.0000000 0.0000000
#> factor(dose)100 0.0000000 0.0000000 0.0000000 0.0000000
#> factor(dose)200 0.0000000 0.0000000 0.0000000 0.0000000
#> factor(dose)20 factor(dose)50 factor(dose)100
#> factor(dose)0 0.0000000 0.00000000 0.00000000
#> factor(dose)2.5 0.0000000 0.00000000 0.00000000
#> factor(dose)5 0.0000000 0.00000000 0.00000000
#> factor(dose)10 0.0000000 0.00000000 0.00000000
#> factor(dose)20 0.1029412 0.00000000 0.00000000
#> factor(dose)50 0.0000000 0.09103641 0.00000000
#> factor(dose)100 0.0000000 0.00000000 0.09365079
#> factor(dose)200 0.0000000 0.00000000 0.00000000
#> factor(dose)200
#> factor(dose)0 0.00000000
#> factor(dose)2.5 0.00000000
#> factor(dose)5 0.00000000
#> factor(dose)10 0.00000000
#> factor(dose)20 0.00000000
#> factor(dose)50 0.00000000
#> factor(dose)100 0.00000000
#> factor(dose)200 0.07464607
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.