Skip to contents

Performs 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

References

Orange Data Mining: https://orangedatamining.com/workflows/Survival-Analysis/

Author

ClinicoPath Development Team

Super classes

jmvcore::Analysis -> ClinicoPath::survivalfeaturerankBase -> survivalfeaturerankClass

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