Learn R Programming

IterativeHardThresholding

IterativeHardThresholding is part of the HADES.

Introduction

IterativeHardThresholding is an R package for performing L_0-based regressions using Cyclops

Features

Examples

  • Cox's Proportional Hazards Model
library(Cyclops)
library(IterativeHardThresholding)
library(survival)

## data dimension
p <- 20    # number of covariates
n <- 300   # sample size

## Cox model parameters
true.beta <- c(1, 0.1, 0, -1, 1, rep(0, p - 5))

## simulate data from an exponential model
x        <- matrix(rnorm(p * n, mean = 0, sd = 1), ncol = p)
ti       <- rweibull(n, shape = 1, scale = exp(-x%*%true.beta))
ui       <- runif(n, 0, 10) # Controls censoring
ci       <- rweibull(n, shape = 1, scale = ui * exp(-x%*%true.beta))
survtime <- pmin(ti, ci)
delta    <- ti == survtime; mean(delta)

cyclopsData <- createCyclopsData(Surv(survtime, delta) ~ x, modelType = "cox")
ihtPrior    <- createIhtPrior(K = 3, penalty = "bic")

cyclopsFit <- fitCyclopsModel(cyclopsData,
                             prior = ihtPrior)
coef(cyclopsFit)
  • Generalized Linear Model
library(Cyclops)
library(IterativeHardThresholding)

## data dimension
p <- 20    # number of covariates
n <- 300   # sample size

## logistic model parameters
itcpt     <- 0.2 # intercept
true.beta <- c(1, 0.3, 0, -1, 1, rep(0, p - 5))

## simulate data from logistic model
x <- matrix(rnorm(p * n, mean = 0, sd = 1), ncol = p)
y <- rbinom(n, 1, 1 / (1 + exp(-itcpt - x%*%true.beta)))


# fit BAR model
cyclopsData <- createCyclopsData(y ~ x, modelType = "lr")
ihtPrior    <- createIhtPrior(K  = 3, penalty = "bic", exclude = c("(Intercept)"))

cyclopsFit <- fitCyclopsModel(cyclopsData,
                             prior = ihtPrior)
coef(cyclopsFit)

Technology

System Requirements

Requires R (version 3.2.0 or higher).

Dependencies

  • Cyclops

Getting Started

  1. On Windows, make sure RTools is installed.
  2. In R, use the following commands to download and install IterativeHardThresholding:
install.packages("Cyclops")
install.packages("IterativeHardThresholding")
  1. To perform a L_0-based Cyclops model fit with IHT, use the following commands in R:
library(IterativeHardThresholding)
cyclopsData <- createCyclopsData(formula, modelType = "modelType") ## TODO: Update
ihtPrior    <- createIhtPrior(K = 5, penalty = "bic")
cyclopsFit  <- fitCyclopsModel(cyclopsData, prior = ihtPrior)
coef(cyclopsFit) #Extract coefficients

Getting Involved

  • Package manual: IterativeHardThresholding manual
  • Developer questions/comments/feedback: OHDSI Forum
  • We use the GitHub issue tracker for all bugs/issues/enhancements

License

IterativeHardThresholding is licensed under Apache License 2.0.

Development

IterativeHardThresholding is being developed in R Studio.

Acknowledgments

  • This project is supported in part through the National Institutes of Health grant R01 HG006139.

Copy Link

Version

Install

install.packages('IterativeHardThresholding')

Monthly Downloads

365

Version

1.0.3

License

Apache License 2.0

Maintainer

Marc A Suchard

Last Published

July 21st, 2025

Functions in IterativeHardThresholding (1.0.3)

createFastIhtPrior

Create a fastIHT Cyclops prior object
createIhtPrior

Create an IHT Cyclops prior object