SalivaSignal

A workbench for salivary microRNA diagnostics: pool diagnostic accuracy across studies, and test whether a multi-marker panel beats a single miRNA.

Demo data is synthetic. Load your own studies to analyze real data. Nothing here is a clinical result or a medical claim.
The study behind this

Salivary Biomarkers for Early Detection of Systemic Cancers: A Meta-Analysis of microRNA Signatures

The meta-analysis asks how accurately salivary microRNA biomarkers detect non-oral systemic cancers, for example pancreatic and lung. Oral and head-and-neck-only studies are excluded to avoid local confounding. This workbench is the pooling engine built for that analysis.

Meta-analytic pooling ongoing

So far: recurrent miRNA signatures observed across studies, with considerable heterogeneity. No pooled estimates from the study are reported here; every number on this page comes from synthetic demo data.

Protocol
  • Studies identified by reference mining of Meleti et al. (2020) and Rapado-González et al. (2016).
  • Human case–control or cohort studies reporting sensitivity, specificity or AUC, or the data to reconstruct them.
  • Risk of bias assessed with QUADAS-2.
  • Multiple panels within one study are treated as separate analytic units.
  • Random-effects pooling, forest plots and SROC.
  • Planned subgroups by cancer type and panel; sensitivity analysis excluding high-risk-of-bias studies.

Diagnostic test accuracy, pooled

Enter one row per study (2×2 counts against the reference standard). Sensitivity, specificity and the diagnostic odds ratio are pooled separately with a DerSimonian–Laird random-effects model. Everything recomputes as you type.

Studies

QUADAS-2 risk of bias
StudymiRNACancer type TPFPFNTN Patient selectionIndex testReference std.Flow & timingSens (95% CI)Spec (95% CI)ln DORRemove

Paste CSV

Columns: study,mirna,cancer,tp,fp,fn,tn, optionally followed by four QUADAS-2 columns qa_patient,qa_index,qa_reference,qa_flow (Low, High or Unclear; missing = Unclear). A header row is optional. Pasting replaces the table.

Sensitivity

forest plot, 95% CI

Specificity

forest plot, 95% CI

SROC space

each bubble is a study; area proportional to n
Study (area ~ n) Pooled (univariate DL, independent) Chance line

Methods

Per-study accuracy

Sensitivity = TP / (TP + FN); specificity = TN / (TN + FP). Intervals use the Wilson score method (z = 1.96), which stays inside [0, 1] and behaves well near 0 or 1:

center = (p + z²/2n) / (1 + z²/n) half = z·sqrt(p(1−p)/n + z²/4n²) / (1 + z²/n)

Diagnostic odds ratio: DOR = (TP·TN)/(FP·FN). If any cell of a study is 0, 0.5 is added to all four cells of that study (for the logit and DOR computations; Wilson intervals use the raw counts).

var(ln DOR) = 1/TP + 1/FP + 1/FN + 1/TN var(logit sens) = 1/TP + 1/FN var(logit spec) = 1/TN + 1/FP

Random-effects pooling

Each of logit sensitivity, logit specificity and ln DOR is pooled separately by DerSimonian–Laird. With within-study variances vi and weights wi = 1/vi:

ȳ_FE = Σ wᵢyᵢ / Σ wᵢ Q = Σ wᵢ(yᵢ − ȳ_FE)², df = k − 1 τ² = max(0, (Q − df) / (Σwᵢ − Σwᵢ²/Σwᵢ)) wᵢ* = 1/(vᵢ + τ²) ŷ = Σ wᵢ*yᵢ / Σ wᵢ*, SE = sqrt(1/Σ wᵢ*) I² = max(0, (Q − df)/Q) × 100%

Risk of bias: a study counts as high risk when any QUADAS-2 domain (patient selection, index test, reference standard, flow and timing) is rated High. The "exclude high risk of bias" toggle re-runs every pooled estimate without those studies; the subgroup filter pools one cancer type at a time.

Pooled logits are back-transformed with the inverse logit. Caveat: pooling sensitivity and specificity independently ignores their correlation (threshold effects). The bivariate model (Reitsma) or HSROC is the standard for publication; this tool is for exploration and teaching.

Synthetic cohort

Labels are 50/50 cases and controls. For sample i and feature j, with a shared latent factor ui (correlation ρ = 0.3 between features):

xᵢⱼ = μⱼ + dⱼ·σ·yᵢ + σ(√ρ·uᵢ + √(1−ρ)·εᵢⱼ)

where d = effect × (1, 0.75, 0.5, −0.4, 0, 0) is the standardized mean shift (Cohen d) and σ is the noise SD. A seeded Mulberry32 PRNG with Box–Muller normals makes every cohort reproducible from its seed.

Classifier

Features are standardized with the training-set mean and SD only. Logistic regression is fit by full-batch gradient descent (learning rate 0.3, 400 epochs) on

L(w,b) = −(1/n) Σ [y log p + (1−y) log(1−p)] + (λ/2)‖w‖²

(intercept unpenalized). For single-marker ROC curves, the direction of each marker (higher or lower in cases) is chosen on the training set, never the test set. AUC is the Mann–Whitney probability that a random case scores above a random control, ties counted as one half. With a small test set, AUC differences of a few points are within noise; change the seed to see how much they move.