Implements multivariate elastic net regression.
Usage
joinet(
Y,
X,
family = "gaussian",
nfolds = 10,
foldid = NULL,
type.measure = "deviance",
alpha.base = 1,
alpha.meta = 1,
weight = NULL,
sign = NULL,
...
)
Arguments
- Y
outputs: numeric matrix with \(n\) rows (samples) and \(q\) columns (outputs)
- X
inputs: numeric matrix with \(n\) rows (samples) and \(p\) columns (inputs)
- family
distribution: vector of length \(1\) or \(q\) with entries
"gaussian"
,"binomial"
or"poisson"
- nfolds
number of folds
- foldid
fold identifiers: vector of length \(n\) with entries between \(1\) and
nfolds
; orNULL
(balance)- type.measure
loss function: vector of length \(1\) or \(q\) with entries
"deviance"
,"class"
,"mse"
or"mae"
(seecv.glmnet
)- alpha.base
elastic net mixing parameter for base learners: numeric between \(0\) (ridge) and \(1\) (lasso)
- alpha.meta
elastic net mixing parameter for meta learners: numeric between \(0\) (ridge) and \(1\) (lasso)
- weight
input-output relations: matrix with \(p\) rows (inputs) and \(q\) columns (outputs) with entries \(0\) (exclude) and \(1\) (include), or
NULL
(see details)- sign
output-output relations: matrix with \(q\) rows ("meta-inputs") and \(q\) columns (outputs), with entries \(-1\) (negative), \(0\) (none), \(1\) (positive) and \(NA\) (any), or
NULL
(see details)- ...
further arguments passed to
glmnet
Value
This function returns an object of class joinet
.
Available methods include
predict
,
coef
,
and weights
.
The slots base
and meta
each contain
\(q\) cv.glmnet
-like objects.
Details
input-output relations:
In this matrix with \(p\) rows and \(q\) columns,
the entry in the \(j\)th row and the \(k\)th column
indicates whether the \(j\)th input may be used for
modelling the \(k\)th output
(where \(0\) means "exclude" and
\(1\) means "include").
By default (sign=NULL
),
all entries are set to \(1\).
output-output relations: In this matrix with \(q\) rows and \(q\) columns, the entry in the \(l\)th row and the \(k\)th column indicates how the \(l\)th output may be used for modelling the \(k\)th output (where \(-1\) means negative effect, \(0\) means no effect, \(1\) means positive effect, and \(NA\) means any effect).
There are three short-cuts for filling up this matrix:
(1) sign=1
sets all entries to \(1\) (non-negativity constraints).
This is useful if all pairs of outcomes
are assumed to be positively correlated
(potentially after changing the sign of some outcomes).
(2) code=NA
sets all diagonal entries to \(1\)
and all off-diagonal entries to NA
(no constraints).
(3) sign=NULL
uses Spearman correlation to determine the entries,
with \(-1\) for significant negative, \(0\) for insignificant,
\(1\) for significant positive correlations.
elastic net:
alpha.base
controls input-output effects,
alpha.meta
controls output-output effects;
lasso renders sparse models (alpha
\(=1\)),
ridge renders dense models (alpha
\(=0\))
References
Armin Rauschenberger and Enrico Glaab (2021) "Predicting correlated outcomes from molecular data". Bioinformatics 37(21):3889–3895. doi:10.1093/bioinformatics/btab576 . (Click here to access PDF.)
See also
cv.joinet
, vignette