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 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Study | miRNA | Cancer type | TP | FP | FN | TN | Patient selection | Index test | Reference std. | Flow & timing | Sens (95% CI) | Spec (95% CI) | ln DOR | Remove |
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% CISpecificity
forest plot, 95% CISROC space
each bubble is a study; area proportional to nDo multiple miRNAs beat one?
A synthetic case/control cohort with six salivary miRNA features (log2 expression). Some carry signal, some are pure noise, and they share a correlated background. A logistic regression is trained in your browser on a training split and evaluated on held-out samples.
Result on the held-out test set
Training…
ROC curves (test set)
Panel coefficients
per 1 SD of each featurePositive weights raise the predicted probability of being a case. Generating truth: miR-demo-1 to -4 carry decreasing signal (-4 is lower in cases); -5 and -6 carry none.
Training loss
mean cross-entropy + L2 term, by epochMethods
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:
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).
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:
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):
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
(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.