Survival Feature Ranking - Univariate Cox Screening
Source:R/survivalfeaturerank.b.R
survivalfeaturerankClass.RdPerforms univariate survival analysis for multiple features to identify potential prognostic factors. This analysis runs a separate Cox proportional hazards model for each selected feature and ranks them by statistical significance, hazard ratio, or concordance index. Inspired by Orange Data Mining's Rank Survival Features widget, adapted for jamovi with comprehensive statistical reporting.
Details
The function performs the following analyses for each feature:
Univariate Cox proportional hazards regression
Hazard ratio with 95% confidence intervals
Wald test p-value for association with survival
Concordance index (C-index) for discriminative ability
Optional multiple testing correction (FDR, Bonferroni, etc.)
Features can be ranked by:
P-value: Most statistically significant features first
Hazard ratio: Features with largest effect size (furthest from 1)
C-index: Features with best discriminative ability
Use Cases
Biomarker screening: Test many candidate biomarkers for prognostic value
Exploratory analysis: Identify promising variables before multivariable modeling
Feature selection: Prioritize variables for inclusion in complex models
Publication tables: Generate univariate analysis tables for manuscripts
Interpretation
HR > 1: Feature associated with higher hazard (worse outcome)
HR < 1: Feature associated with lower hazard (better outcome)
C-index > 0.7: Good discrimination, > 0.8: Excellent
Adjusted p-values: Control false discovery rate when testing multiple features
Super classes
jmvcore::Analysis -> ClinicoPath::survivalfeaturerankBase -> survivalfeaturerankClass
Methods
Inherited methods
jmvcore::Analysis$.createImage()jmvcore::Analysis$.createImages()jmvcore::Analysis$.createPlotObject()jmvcore::Analysis$.load()jmvcore::Analysis$.render()jmvcore::Analysis$.save()jmvcore::Analysis$.savePart()jmvcore::Analysis$.setCheckpoint()jmvcore::Analysis$.setParent()jmvcore::Analysis$.setReadDatasetHeaderSource()jmvcore::Analysis$.setReadDatasetSource()jmvcore::Analysis$.setResourcesPathSource()jmvcore::Analysis$.setStatePathSource()jmvcore::Analysis$addAddon()jmvcore::Analysis$asProtoBuf()jmvcore::Analysis$asSource()jmvcore::Analysis$check()jmvcore::Analysis$init()jmvcore::Analysis$optionsChangedHandler()jmvcore::Analysis$postInit()jmvcore::Analysis$print()jmvcore::Analysis$readDataset()jmvcore::Analysis$run()jmvcore::Analysis$serialize()jmvcore::Analysis$setError()jmvcore::Analysis$setStatus()jmvcore::Analysis$translate()ClinicoPath::survivalfeaturerankBase$initialize()
Examples
if (FALSE) { # \dontrun{
# Screen multiple biomarkers
survivalfeaturerank(
data = cancer_data,
survtime = "survival_months",
event = "death",
eventLevel = "1",
features = c("age", "stage", "grade", "ki67", "p53", "her2"),
rankBy = "pvalue",
adjustPValues = TRUE,
showTopKM = TRUE,
topN = 3
)
} # }