fmrs.tunsel method

Description

Provides component-wise tuning parameters using BIC for Finite Mixture of Accelerated Failure Time Regression Models and Finite Mixture of Regression Models.

Usage

1
2
3
4
5
6
7
8
fmrs.tunsel(y, delta, x, nComp, ...)

## S4 method for signature 'ANY'
fmrs.tunsel(y, delta, x, nComp, disFamily = "lnorm",
  initCoeff, initDispersion, initmixProp, penFamily = "lasso",
  lambRidge = 0, nIterEM = 2000, nIterNR = 2, conveps = 1e-08,
  convepsEM = 1e-08, convepsNR = 1e-08, porNR = 2, gamMixPor = 1,
  activeset, lambMCP, lambSICA)

Arguments

y

Responses (observations)

delta

Censoring indicator vector

x

Design matrix (covariates)

nComp

Order (Number of components) of mixture model

...

Other possible options

disFamily

A sub-distribution family. The options are "norm" for FMR models, "lnorm" for mixture of AFT regression models with Log-Normal sub-distributions, "weibull" for mixture of AFT regression models with Weibull sub-distributions,

initCoeff

Vector of initial values for regression coefficients including intercepts

initDispersion

Vector of initial values for standard deviations

initmixProp

Vector of initial values for proportion of components

penFamily

Penalty name that is used in variable selection method. The available options are "lasso", "adplasso", "mcp", "scad", "sica" and "hard".

lambRidge

A positive value for tuniing parameter in Ridge Regression or Elastic Net

nIterEM

Maximum number of iterations for EM algorithm

nIterNR

Maximum number of iterations for Newton-Raphson algorithm

conveps

A positive value for avoiding NaN in computing divisions

convepsEM

A positive value for threshold of convergence in EM algorithm

convepsNR

A positive value for threshold of convergence in NR algorithm

porNR

A positive interger for maximum number of searches in NR algorithm

gamMixPor

Proportion of mixing parameters in the penalty. The value must be in the interval [0,1]. If gamMixPor = 0, the penalty structure is no longer mixture.

activeset

A matrix of zero-one that shows which intercepts and covariates are active in the fitted fmrs model

lambMCP

A positive numbers for mcp's extra tuning parameter

lambSICA

A positive numbers for sica's extra tuning parameter

Details

The maximizer of penalized Log-Likelihood depends on selecting a set of good tuning parameters which is a rather thorny issue. We choose a value in an equally spaced set of values in (0, λ_{max}) for a pre-specified λ_{max} that maximize the component-wise BIC,

\hatλ_{k} ={argmax}_{λ_{k}}BIC_k(λ_{k})= {argmax}_{λ_{k}}≤ft\{\ell^{c}_{k, n} (\hat{\boldsymbolΨ}_{λ_{k}, k}) - |d_{λ_{k},k}| \log (n)\right\},

where d_{λ_{k},k}=\{j:\hat{β}_{λ_{k},kj}\neq 0, j=1,…,d\} is the active set excluding the intercept and |d_{λ_{k},k}| is its size. This approach is much faster than using an nComp by nComp grid to select the set \boldsymbolλ to maximize the penallized Log-Likelihood.

Value

An fmrstunpar-class that includes component-wise tuning parameter estimates that can be used in variable selection procedure.

Author(s)

Farhad Shokoohi <shokoohi@icloud.com>

References

Shokoohi, F., Khalili, A., Asgharian, M. and Lin, S. (2016 submitted) Variable Selection in Mixture of Survival Models for Biomedical Genomic Studies

See Also

Other lnorm..norm..weibull: fmrs.gendata, fmrs.mle, fmrs.varsel

Examples

 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
set.seed(1980)
nComp = 2
nCov = 10
nObs = 500
dispersion = c(1, 1)
mixProp = c(0.4, 0.6)
rho = 0.5
coeff1 = c( 2,  2, -1, -2, 1, 2, 0, 0,  0, 0,  0)
coeff2 = c(-1, -1,  1,  2, 0, 0, 0, 0, -1, 2, -2)
umax = 40

dat <- fmrs.gendata(nObs = nObs, nComp = nComp, nCov = nCov,
                     coeff = c(coeff1, coeff2), dispersion = dispersion,
                     mixProp = mixProp, rho = rho, umax = umax,
                     disFamily = "lnorm")

res.mle <- fmrs.mle(y = dat$y, x = dat$x, delta = dat$delta,
                   nComp = nComp, disFamily = "lnorm",
                   initCoeff = rnorm(nComp*nCov+nComp),
                   initDispersion = rep(1, nComp),
                   initmixProp = rep(1/nComp, nComp))

res.lam <- fmrs.tunsel(y = dat$y, x = dat$x, delta = dat$delta,
                      nComp = nComp, disFamily = "lnorm",
                      initCoeff = c(coefficients(res.mle)),
                      initDispersion = dispersion(res.mle),
                      initmixProp = mixProp(res.mle),
                      penFamily = "adplasso")
show(res.lam)