Patient Similarity Clustering - Discover Patient Subgroups
Source:R/patientsimilarity.b.R
      patientsimilarityClass.RdVisualizes patient similarity using dimensionality reduction techniques (PCA, t-SNE, UMAP, MDS). Projects high-dimensional patient data into 2D or 3D space to reveal natural patient groupings. Inspired by Orange Data Mining's interactive projection widgets, adapted for jamovi with comprehensive cluster analysis and statistical validation.
Details
This analysis performs dimensionality reduction to visualize patient similarity:
- PCA: Linear method preserving global variance structure 
- t-SNE: Non-linear method excellent for visualization, preserves local neighborhoods 
- UMAP: Non-linear method preserving both local and global structure, faster than t-SNE 
- MDS: Classical scaling method preserving pairwise distances 
Optional cluster analysis identifies patient subgroups using k-means, hierarchical clustering, or DBSCAN. Survival analysis can compare outcomes across discovered clusters.
Use Cases
- Discover unexpected patient subtypes based on clinicopathological features 
- Identify which variables drive patient groupings 
- Validate if known outcomes correspond to natural patient clusters 
- Find prognostic patient subgroups for stratified treatment 
Super classes
jmvcore::Analysis -> ClinicoPath::patientsimilarityBase -> patientsimilarityClass
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::patientsimilarityBase$initialize()
Examples
if (FALSE) { # \dontrun{
# Discover patient subgroups
patientsimilarity(
  data = clinical_data,
  vars = c("age", "tumor_size", "grade", "ki67"),
  method = "tsne",
  colorBy = "survival_status",
  performClustering = TRUE
)
} # }