hdcuremodels
Penalized Mixture Cure Models for High-Dimensional Data
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.1%) to scientific vocabulary
Last synced: 10 months ago
·
JSON representation
Repository
Penalized Mixture Cure Models for High-Dimensional Data
Basic Info
- Host: GitHub
- Owner: kelliejarcher
- License: other
- Language: R
- Default Branch: main
- Size: 1.62 MB
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
- Releases: 0
Created almost 2 years ago
· Last pushed 11 months ago
Metadata Files
Readme
Contributing
License
Codemeta
README.Rmd
---
output: github_document
---
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# hdcuremodels
[]
[](https://github.com/kelliejarcher/hdcuremodels/actions/workflows/R-CMD-check.yaml)
The goal of hdcuremodels is to allow one to fit a penalized mixture cure model (MCM) when there is a high-dimensional covariate space, such as when high-throughput genomic data are used in modeling time-to-event data, when some subjects will not experience the event of interest. Conventionally, we call the subset of subjects who are immune to the event of interest cured while all other subjects are susceptible to the event.
## Installation
You can install the development version of hdcuremodels like so:
``` r
remotes::install_github("https://github.com/kelliejarcher/hdcuremodels")
```
## Example
After loading the `hdcuremodels` and `survival` packages, load `amltrain` which includes 306 patients diagnosed with acute myeloid leukemia (AML) who were cytogenetically normal at diagnosis along with time-to-event outcomes: `cryr` is the duration of complete response (in years), `relapse.death` is a censoring variable where 1 indicates the patient relapsed or died and 0 indicates the patient was alive at last follow-up. It is of interest to fit a MCM using the expression for 320 transcripts measured using RNA-sequencing as predictor variables.
```{r loadpkg}
library(hdcuremodels)
library(survival)
```
```{r data}
data(amltrain)
```
We can inspect the Kaplan-Meier survival curve to determine whether a cure fraction seems to be present.
```{r km}
km_train <- survfit(Surv(cryr, relapse.death) ~ 1, data = amltrain)
```
```{r, echo=FALSE, fig=TRUE}
plot(km_train, mark.time = TRUE, xlab = "Time (years)", ylab = "Relapse-free survival")
```
As can be seen from the Kaplan-Meier plot, there is a long-plateau that does not drop down to zero. This may indicate the presence of a cured fraction. We can test the null hypothesis that the cured fraction is zero against the alternative hypothesis that the cured fraction is not zero using the `nonzerocure_test` function.
```{r, echo=TRUE}
nonzerocure_test(km_train)
```
Given the small p-value we reject the null hypothesis and conclude there is a non-zero cure fraction present. We can also extract the cured fraction as the Kaplan-Meier estimate beyond the last observed event using the `cure_estimate` function.
```{r}
cure_estimate(km_train)
```
We now fit a penalized MCM using the E-M algorithm where the penalty parameters for incidence and latency, `lambda.inc` and `lambda.lat` were previously determined using cross-validation.
```{r fit}
fitem <- cureem(Surv(cryr, relapse.death) ~ .,
data = amltrain,
x_latency = amltrain, model = "cox",
lambda_inc = 0.009993, lambda_lat = 0.02655
)
```
Coefficient estimates can be extracted from the fitted model using the `coef` for any of these model criteria ("logLik", "AIC", "cAIC", "mAIC", "BIC", "mBIC", "EBIC") or by specifying the step at which the model is desired by specifying the `model_select` parameter. For example,
```{r coef}
coef_cAIC <- coef(fitem, model_select = "cAIC")
```
Predictions can be extracted at a given step or information criterion ("logLik", "AIC", "cAIC", "mAIC", "BIC", "mBIC", "EBIC") using the `predict` function with `model_select` specified.
```{r pred}
train_predict <- predict(fitem, model_select = "cAIC")
```
This returns three objects: `p_uncured` is the estimated probability of being susceptible ($\hat{p}(\mathbf{x})$), `linear_latency` is $\hat{\boldsymbol{\beta}}\mathbf{w}$, while `latency_risk` applies high risk and low risk labels using zero as the cutpoint from the `linear_latency` vector. Perhaps we want to apply the 0.5 threshold to `p_uncured` to create Cured and Susceptible labels.
```{r pgroup}
p_group <- ifelse(train_predict$p_uncured < 0.50, "Cured", "Susceptible")
```
Then we can assess how well our MCM identified patients likely to be cured from those likely to be susceptible visually by examining the Kaplan-Meier curves.
```{r kmmcm}
km_cured <- survfit(Surv(cryr, relapse.death) ~ p_group, data = amltrain)
```
```{r, echo = FALSE, fig = TRUE}
plot(km_cured, mark.time = TRUE, lty = c(1, 2), xlab = "Time (years)", ylab = "Relapse-free survival")
legend(c(.9, .1), legend = c("Cured", "Susceptible"), lty = c(1, 2), bty = "n")
```
We can assess how well our MCM identified higher versus lower risk patients among those predicted to be susceptible visually by examining the Kaplan-Meier curves.
```{r kmsusc}
km_suscept <- survfit(Surv(cryr, relapse.death) ~ train_predict$latency_risk, data = amltrain, subset = (p_group == "Susceptible"))
```
```{r, echo = FALSE, fig = TRUE}
plot(km_suscept, mark.time = TRUE, lty = c(1, 2), xlab = "Time (years)", ylab = "Relapse-free survival")
legend(c(.9, .1), legend = c("Higher risk", "Lower risk"), lty = c(1, 2), bty = "n")
```
Of course, we expect our model to perform well on our training data. We can also assess how well our fitted MCM performs using the independent test set `amltest`. In this case we use the `predict` function with `newdata` specified.
```{r testpred}
test_predict <- predict(fitem, newdata = amltest, model_select = "cAIC")
```
Owner
- Login: kelliejarcher
- Kind: user
- Repositories: 2
- Profile: https://github.com/kelliejarcher
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"identifier": "hdcuremodels",
"description": "Provides functions for fitting various penalized parametric and semi-parametric mixture cure models with different penalty functions, testing for a significant cure fraction, and testing for sufficient follow-up as described in Fu et al (2022)<doi:10.1002/sim.9513> and Archer et al (2024)<doi:10.1186/s13045-024-01553-6>. False discovery rate controlled variable selection is provided using model-X knock-offs. ",
"name": "hdcuremodels: Penalized Mixture Cure Models for High-Dimensional Data",
"codeRepository": "https://github.com/kelliejarcher/hdcuremodels",
"issueTracker": "https://github.com/kelliejarcher/hdcuremodels/issues",
"license": "https://spdx.org/licenses/MIT",
"version": "0.0.2",
"programmingLanguage": {
"@type": "ComputerLanguage",
"name": "R",
"url": "https://r-project.org"
},
"runtimePlatform": "R version 4.4.2 (2024-10-31)",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"author": [
{
"@type": "Person",
"givenName": "Han",
"familyName": "Fu"
},
{
"@type": "Person",
"givenName": "Kellie J.",
"familyName": "Archer",
"email": "archer.43@osu.edu",
"@id": "https://orcid.org/0000-0003-1555-5781"
}
],
"maintainer": [
{
"@type": "Person",
"givenName": "Kellie J.",
"familyName": "Archer",
"email": "archer.43@osu.edu",
"@id": "https://orcid.org/0000-0003-1555-5781"
}
],
"softwareSuggestions": [
{
"@type": "SoftwareApplication",
"identifier": "knitr",
"name": "knitr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=knitr"
},
{
"@type": "SoftwareApplication",
"identifier": "rmarkdown",
"name": "rmarkdown",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=rmarkdown"
},
{
"@type": "SoftwareApplication",
"identifier": "roxygen2",
"name": "roxygen2",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=roxygen2"
}
],
"softwareRequirements": {
"1": {
"@type": "SoftwareApplication",
"identifier": "R",
"name": "R",
"version": ">= 4.2.0"
},
"2": {
"@type": "SoftwareApplication",
"identifier": "doParallel",
"name": "doParallel",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=doParallel"
},
"3": {
"@type": "SoftwareApplication",
"identifier": "flexsurv",
"name": "flexsurv",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=flexsurv"
},
"4": {
"@type": "SoftwareApplication",
"identifier": "flexsurvcure",
"name": "flexsurvcure",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=flexsurvcure"
},
"5": {
"@type": "SoftwareApplication",
"identifier": "foreach",
"name": "foreach",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=foreach"
},
"6": {
"@type": "SoftwareApplication",
"identifier": "ggplot2",
"name": "ggplot2",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=ggplot2"
},
"7": {
"@type": "SoftwareApplication",
"identifier": "ggpubr",
"name": "ggpubr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=ggpubr"
},
"8": {
"@type": "SoftwareApplication",
"identifier": "glmnet",
"name": "glmnet",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=glmnet"
},
"9": {
"@type": "SoftwareApplication",
"identifier": "knockoff",
"name": "knockoff",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=knockoff"
},
"10": {
"@type": "SoftwareApplication",
"identifier": "mvnfast",
"name": "mvnfast",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=mvnfast"
},
"11": {
"@type": "SoftwareApplication",
"identifier": "parallel",
"name": "parallel"
},
"12": {
"@type": "SoftwareApplication",
"identifier": "plyr",
"name": "plyr",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=plyr"
},
"13": {
"@type": "SoftwareApplication",
"identifier": "methods",
"name": "methods"
},
"14": {
"@type": "SoftwareApplication",
"identifier": "survival",
"name": "survival",
"provider": {
"@id": "https://cran.r-project.org",
"@type": "Organization",
"name": "Comprehensive R Archive Network (CRAN)",
"url": "https://cran.r-project.org"
},
"sameAs": "https://CRAN.R-project.org/package=survival"
},
"SystemRequirements": null
},
"fileSize": "1364.117KB",
"citation": [
{
"@type": "ScholarlyArticle",
"datePublished": "2024",
"author": [
{
"@type": "Person",
"givenName": [
"Kellie",
"J."
],
"familyName": "Archer"
},
{
"@type": "Person",
"givenName": "Han",
"familyName": "Fu"
},
{
"@type": "Person",
"givenName": "Krzysztof",
"familyName": "Mrozek"
},
{
"@type": "Person",
"givenName": "Deedra",
"familyName": "Nicolet"
},
{
"@type": "Person",
"givenName": [
"Alice",
"S."
],
"familyName": "Mims"
},
{
"@type": "Person",
"givenName": [
"Geoffrey",
"L."
],
"familyName": "Uy"
},
{
"@type": "Person",
"givenName": "Wendy",
"familyName": "Stock"
},
{
"@type": "Person",
"givenName": [
"John",
"C."
],
"familyName": "Byrd"
},
{
"@type": "Person",
"givenName": "Wolfgang",
"familyName": "Hiddemann"
},
{
"@type": "Person",
"givenName": "Jan",
"familyName": "Braess"
},
{
"@type": "Person",
"givenName": "Karsten",
"familyName": "Spiekermann"
},
{
"@type": "Person",
"givenName": [
"Klaus",
"H."
],
"familyName": "Metzeler"
},
{
"@type": "Person",
"givenName": "Tobias",
"familyName": "Herold"
},
{
"@type": "Person",
"givenName": "Ann-Kathrin",
"familyName": "Eisfeld"
}
],
"name": "Identifying long-term survivors and those at higher or lower risk of relapse among patients with cytogenetically normal acute myeloid leukemia using a high-dimensional mixture cure model",
"url": "https://jhoonline.biomedcentral.com/articles/10.1186/s13045-024-01553-6",
"pagination": "28",
"isPartOf": {
"@type": "PublicationIssue",
"datePublished": "2024",
"isPartOf": {
"@type": [
"PublicationVolume",
"Periodical"
],
"volumeNumber": "17",
"name": "Journal of Hematology & Oncology"
}
}
},
{
"@type": "ScholarlyArticle",
"datePublished": "2022",
"author": [
{
"@type": "Person",
"givenName": "Han",
"familyName": "Fu"
},
{
"@type": "Person",
"givenName": "Deedra",
"familyName": "Nicolet"
},
{
"@type": "Person",
"givenName": "Kryzsztof",
"familyName": "Mrozek"
},
{
"@type": "Person",
"givenName": [
"Richard",
"M."
],
"familyName": "Stone"
},
{
"@type": "Person",
"givenName": "Ann-Kathrin",
"familyName": "Eisfeld"
},
{
"@type": "Person",
"givenName": [
"John",
"C."
],
"familyName": "Byrd"
},
{
"@type": "Person",
"givenName": [
"Kellie",
"J."
],
"familyName": "Archer"
}
],
"name": "Controlled variable selection in Weibull mixture cure models for high-dimensional data",
"url": "doi:10.1002/sim.9513",
"pagination": "8706",
"isPartOf": {
"@type": "PublicationIssue",
"issueNumber": "22",
"datePublished": "2022",
"isPartOf": {
"@type": [
"PublicationVolume",
"Periodical"
],
"volumeNumber": "41",
"name": "Statistics in Medicine"
}
}
}
],
"readme": "https://github.com/kelliejarcher/hdcuremodels/blob/main/README.md"
}
GitHub Events
Total
- Issues event: 1
- Issue comment event: 8
- Push event: 16
Last Year
- Issues event: 1
- Issue comment event: 8
- Push event: 16
Packages
- Total packages: 1
-
Total downloads:
- cran 12,850 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 2
- Total maintainers: 1
cran.r-project.org: hdcuremodels
High-Dimensional Cure Models
- Homepage: https://github.com/kelliejarcher/hdcuremodels
- Documentation: http://cran.r-project.org/web/packages/hdcuremodels/hdcuremodels.pdf
- License: MIT + file LICENSE
-
Latest release: 0.0.5
published 11 months ago
Rankings
Dependent packages count: 28.7%
Dependent repos count: 35.4%
Average: 50.0%
Downloads: 86.0%
Maintainers (1)
Last synced:
11 months ago
Dependencies
.github/workflows/pkgcheck.yaml
actions
- ropensci-review-tools/pkgcheck-action main composite
DESCRIPTION
cran
- R >= 4.2.0 depends
- doParallel * imports
- flexsurv * imports
- flexsurvcure * imports
- foreach * imports
- ggplot2 * imports
- ggpubr * imports
- glmnet * imports
- knockoff * imports
- methods * imports
- mvnfast * imports
- parallel * imports
- plyr * imports
- survival * imports
- knitr * suggests
- rmarkdown * suggests
- roxygen2 * suggests
.github/workflows/R-CMD-check.yaml
actions
- actions/checkout v4 composite
- r-lib/actions/check-r-package v2 composite
- r-lib/actions/setup-pandoc v2 composite
- r-lib/actions/setup-r v2 composite
- r-lib/actions/setup-r-dependencies v2 composite