coxph modelscoxph modelsmulti(x, ...)
## S3 method for class 'coxph':
multi(x, ..., maxCoef = 5L,
crit = c("aic", "aicc", "bic"),
how = c("all", "evolve"), confSetSize = 100L,
maxiter = 100L, bunch = 1000L, mutRate = 0.1,
sexRate = 0.2, immRate = 0.3, deltaM = 1, deltaB = 1,
conseq = 10L, report = TRUE)coxphhow="all"
(the default), all subsets of the given model will be
fithow="evolve": no. of
models to screen per generationsexRate + immRate should
not be $> 1$.how="evolve". The last mean IC
(from the best confSetSize models screened) is
compared with that from the most recently fitted
bunch.deltaB.report=TRUE (the default), print
report to screen during fitting. Gives current change in
best and mean IC as well as object size of fitted
models.data.table with one row per model. This is of
class multi.coxph which has it's own
plot method. Columns show the coefficients from
the fitted model. Values of $0$ indicate coefficient
was not included. The data.table is sorted by IC
and also gives a column for relative evidence weights.
These are generated from: $$w_i = \exp (\frac{-IC_i
- IC_{best}}{2})$$
Where $IC_i$ is the information criterion for
the given model, and $IC_{best}$ is that
for the best model yet fitted. They are then scaled to
sum to $1$.package:glmulti (although
admittedly less efficient). A more detailed discussion of
the issues involved in multiple model fittting is
presented in the reference paper describing that
package's implementation.
It is designed for
cases where there a large no. of candidate models for a
given dataset (currently only right-censored survival
data). First, the model.matrix for the given
formula is constructed. For those unfamiliar with
model.matrix, a predictor given as a factor
is expanded to it's design matrix, so that e.g. for 4
original levels there will be 3 binary ($0/1$)
columns. Currently all levels of a factor are considered
independently when fitting models.
Thus there is one
column for each coefficient in the original model.
The original formula can include the following terms:
offset, weight and strata. Other
special terms such as cluster are not
currently supported. The formula may contain interaction
terms and other transformations.
If
how="all", all possible combinations of these
coefficients are fitted (or up to maxCoef
predictors if this is less).
If
how="evolve" the algorithm proceeds as follows:
bunchrandom models and sort
by ICbunchcandidate
models based on these.immRategives the
proportion that will be completely random new models.sexRategives the proportion that will be the
products of existing models. These are a random
combination of the first elements from model 1 and the
last elements from model 2. The sum ofimmRateandsexRateshould thus be$<= 1$.<="" li="">mutRate.conseqtimes then stop.
Divergent is here taken to mean that the targets forbothdeltaManddeltaBhave not been
met.
deltaMtypically converges more slowly.
Thus a large value ofdeltaMwill require newbunches of models to be signifiantly better than
the best (size =confSetSize) existing candidates.
Negative values ofdeltaM(not typically
recommended) are more permissive; i.e. new models can be
somewhat worse than those existing.data.table with one row per model
giving the fitted coefficients, the IC for the model and
the relative evidence weights.Information criterion
plotMultiCoxphset.seed(1)
df1 <- genSurvDf(b=1, c=5, f=0, model=FALSE)
multi(coxph(Surv(t1, e) ~ ., data=df1), crit="aic")
### longer example
dt1 <- genSurvDt(b=1, c=30, f=0, model=FALSE)
multi(coxph(Surv(t1, e) ~ ., data=dt1),
maxCoef=8, crit="bic", how="evolve", deltaM=1, deltaB=1, conseq=10)Run the code above in your browser using DataLab