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 (), the
estimated dose-response coefficients, and (S), the variance-covariance
matrix of (). 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)
= Mods(linear = NULL, emax = 1, quadratic = c(-0.004),
models 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
<- migraine$painfree/migraine$ntrt
PFrate $pfrat = migraine$painfree / migraine$ntrt
migraineMCPModGen("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