missoNet | R Documentation |
Fit a penalized multi-task regression with a response-network (\Theta
)
under missing responses. The method jointly estimates the coefficient matrix
\mathbf{B}
and the precision matrix \Theta
via penalized
likelihood with \ell_1
penalties on \mathbf{B}
and the off-diagonal
entries of \Theta
.
missoNet(
X,
Y,
rho = NULL,
GoF = "eBIC",
lambda.beta = NULL,
lambda.theta = NULL,
lambda.beta.min.ratio = NULL,
lambda.theta.min.ratio = NULL,
n.lambda.beta = NULL,
n.lambda.theta = NULL,
beta.pen.factor = NULL,
theta.pen.factor = NULL,
penalize.diagonal = NULL,
beta.max.iter = 10000,
beta.tol = 1e-05,
theta.max.iter = 10000,
theta.tol = 1e-05,
eta = 0.8,
eps = 1e-08,
standardize = TRUE,
standardize.response = TRUE,
relax.net = FALSE,
adaptive.search = FALSE,
parallel = FALSE,
cl = NULL,
verbose = 1
)
X |
Numeric matrix ( |
Y |
Numeric matrix ( |
rho |
Optional numeric vector of length |
GoF |
Character. Goodness-of-fit criterion: |
lambda.beta , lambda.theta |
Optional numeric vectors (or scalars).
Candidate regularization paths for |
lambda.beta.min.ratio , lambda.theta.min.ratio |
Optional numerics in |
n.lambda.beta , n.lambda.theta |
Optional integers. Lengths of automatically
generated lambda paths (ignored if the corresponding |
beta.pen.factor |
Optional |
theta.pen.factor |
Optional |
penalize.diagonal |
Logical or |
beta.max.iter , theta.max.iter |
Integers. Max iterations for the
|
beta.tol , theta.tol |
Numerics |
eta |
Numeric in |
eps |
Numeric in |
standardize |
Logical. Standardize columns of |
standardize.response |
Logical. Standardize columns of |
relax.net |
(Experimental) Logical. If |
adaptive.search |
(Experimental) Logical. Use adaptive two-stage lambda search? Default |
parallel |
Logical. Evaluate parts of the grid in parallel using a provided
cluster? Default |
cl |
Optional cluster from |
verbose |
Integer in |
The conditional Gaussian model is
Y_i = \mu + X_i \mathbf{B} + E_i, \qquad E_i \sim \mathcal{N}_q(0, \Theta^{-1}).
where:
Y_i
is the i
-th observation of q
responses
X_i
is the i
-th observation of p
predictors
\mathbf{B}
is the p \times q
coefficient matrix
\Theta
is the q \times q
precision matrix
\mu
is the intercept vector
The parameters are estimated by solving:
\min_{\mathbf{B}, \Theta \succ 0} \quad g(\mathbf{B}, \Theta) +
\lambda_B \|\mathbf{B}\|_1 + \lambda_\Theta \|\Theta\|_{1,\mathrm{off}}
where g
is the negative log-likelihood.
Missing values in Y
are accommodated through unbiased estimating equations
using column-wise observation probabilities. Internally, X
and Y
may be standardized for numerical stability; returned estimates are re-scaled
back to the original units.
The grid search spans lambda.beta
and lambda.theta
. The optimal
pair is selected by the user-chosen goodness-of-fit criterion GoF
:
"AIC"
, "BIC"
, or "eBIC"
(default). If
adaptive.search = TRUE
, a two-stage pre-optimization narrows the grid
before the main search (faster on large problems, with a small risk of missing
the global optimum).
A list of class "missoNet"
with components:
List at the selected lambda pair:
Beta
(p \times q
), Theta
(q \times q
),
intercept mu
(length q
), lambda.beta
, lambda.theta
,
lambda.beta.idx
, lambda.theta.idx
, scalar gof
(AIC/BIC/eBIC at optimum), and (if requested) relax.net
.
Length-q
vector of working missingness probabilities.
Unique lambda values explored along
the grid for \mathbf{B}
and \Theta
.
Logical indicating whether the diagonal of
\Theta
was penalized.
Penalty factor matrices actually used.
List with fitting diagnostics:
n
, p
, q
, standardize
, standardize.response
,
the vector of criterion values gof
, and the evaluated grids
gof.grid.beta
, gof.grid.theta
(length equals number of fitted models).
Yixiao Zeng yixiao.zeng@mail.mcgill.ca, Celia M. T. Greenwood
Zeng, Y., et al. (2025). Multivariate regression with missing response data for modelling regional DNA methylation QTLs. arXiv:2507.05990.
cv.missoNet
for cross-validated selection;
generic methods such as plot()
and predict()
for objects of class
"missoNet"
.
sim <- generateData(n = 120, p = 10, q = 6, rho = 0.1)
X <- sim$X; Y <- sim$Z
# Fit with defaults (criterion = eBIC)
fit1 <- missoNet(X, Y)
# Extract the optimal estimates
Beta.hat <- fit1$est.min$Beta
Theta.hat <- fit1$est.min$Theta
# Plot missoNet results
plot(fit1, type = "heatmap")
plot(fit1, type = "scatter")
# Provide short lambda paths
fit2 <- missoNet(
X, Y,
lambda.beta = 10^seq(0, -2, length.out = 5),
lambda.theta = 10^seq(0, -2, length.out = 5),
GoF = "BIC"
)
# Test single lambda choice
fit3 <- missoNet(
X, Y,
lambda.beta = 0.1,
lambda.theta = 0.1,
)
# De-biased network on the active set
fit4 <- missoNet(X, Y, relax.net = TRUE, verbose = 0)
# Adaptive search for large problems
fit5 <- missoNet(X = X, Y = Y, adaptive.search = TRUE, verbose = 0)
# Parallel (requires a cluster)
library(parallel)
cl <- makeCluster(2)
fit_par <- missoNet(X, Y, parallel = TRUE, cl = cl, verbose = 0)
stopCluster(cl)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.