Modality Comparison Analysis for digital pathology validation studies. Compare agreement between different diagnostic modalities (e.g., glass slides vs digital images) with specialized metrics for pathology applications including discordance pattern analysis and HER2 scoring validation.
Usage
modalitycomparison(
data,
modality1_var,
modality2_var,
case_id = NULL,
modality1_name = "Modality 1",
modality2_name = "Modality 2",
show_discordance_analysis = TRUE,
score_categories = "auto",
show_contingency_table = TRUE,
calculate_weighted_kappa = FALSE,
confidence_intervals = TRUE,
directional_analysis = TRUE,
low_end_focus = FALSE,
show_plots = TRUE
)Arguments
- data
The data as a data frame with paired observations from two modalities.
- modality1_var
Variable containing scores/ratings from the first modality (e.g., glass slides).
- modality2_var
Variable containing scores/ratings from the second modality (e.g., digital images).
- case_id
Optional case identifier variable for tracking individual cases.
- modality1_name
Descriptive name for the first modality (e.g., "Glass Slides").
- modality2_name
Descriptive name for the second modality (e.g., "Digital Images").
- show_discordance_analysis
Perform detailed analysis of discordance patterns between modalities.
- score_categories
Category system for score interpretation and analysis.
- show_contingency_table
Display detailed cross-tabulation of scores between modalities.
- calculate_weighted_kappa
Calculate weighted kappa for ordinal scores (requires ordered categories).
- confidence_intervals
Calculate and display 95\ for agreement statistics.
- directional_analysis
Analyze systematic bias in one direction (e.g., higher scores on digital vs glass).
- low_end_focus
Perform specialized analysis focusing on agreement at low expression levels (relevant for HER2-low/null distinction).
- show_plots
Generate scatter plots and agreement visualization.
Value
A results object containing:
results$todo | a html | ||||
results$overviewTable | a table | ||||
results$agreementTable | a table | ||||
results$contingencyTable | a table | ||||
results$discordanceTable | a table | ||||
results$directionalBiasTable | a table | ||||
results$lowEndAnalysisTable | a table | ||||
results$caseDetailTable | a table | ||||
results$agreementPlot | an image | ||||
results$discordancePlot | an image |
Tables can be converted to data frames with asDF or as.data.frame. For example:
results$overviewTable$asDF
as.data.frame(results$overviewTable)
Examples
# Basic modality comparison
result1 <- modalitycomparison(
data = data,
modality1_var = "glass_slides",
modality2_var = "digital_images",
case_id = "case_number"
)
# HER2 scoring comparison with 5-category analysis
result2 <- modalitycomparison(
data = her2_data,
modality1_var = "glass_score",
modality2_var = "digital_score",
case_id = "case_id",
score_categories = "her2_5cat",
show_discordance_analysis = TRUE
)