Skip to contents

Fits L0-penalized regression (with optional L1/L2 components) on the RSS objective, searching over a shrinkage grid s and lambda0 path. Model selection uses LD-quadratic pseudovalidation by default.

Usage

l0learn_rss_weights(
  stat,
  LD,
  penalty = c("L0", "L0L1", "L0L2"),
  s = c(0.2, 0.5, 0.9, 1),
  lambda0 = exp(seq(log(0.001), log(1), length.out = 10)),
  lambda = NULL,
  lambda2 = 0,
  selection = c("ld_quadratic", "min_fbeta"),
  max_swaps = 100,
  ...
)

Arguments

stat

A list with $b (effect sizes) and $n (per-variant sample sizes).

LD

LD correlation matrix R (single matrix, NOT pre-shrunk).

penalty

L0 variant: "L0", "L0L1", or "L0L2". Default "L0".

s

Numeric vector of LD shrinkage parameters. Default: c(0.2, 0.5, 0.9, 1.0).

lambda0

Numeric vector of L0 penalty values to search over. Default: exp(seq(log(0.001), log(1), length.out = 10)).

lambda

Numeric vector of L1 penalty values (for L0L1). Default: c(0) (no L1 unless L0L1 is used).

lambda2

L2 penalty weight (for L0L2). Default 0.

selection

Selection strategy: "ld_quadratic" (default) or "min_fbeta".

max_swaps

Maximum swap rounds per lambda. Default 100.

...

Additional arguments passed to penalized_rss().

Value

A numeric vector of SNP coefficient weights.

Details

The swap optimization from L0Learn is included: after coordinate descent converges, non-zero coefficients are tested for swaps with zero ones to escape local optima.