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