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
)
} # }