1 Find your method
Open the book here when you don’t know which chapter to read. Three routes are offered: a flowchart from research question to statistical test, a quick lookup table, and a click-through wizard hosted live.
- Interactive wizard — three to five questions, one recommended test.
- Static decision tree (below) — the same logic, single page, suitable for printing.
- Quick lookup table — common scenarios mapped to a recommended chapter and section.
This chapter covers the core tree of classical tests (differences, associations, interdependence). Methods outside that core — survival, Bayesian, machine learning, time series, multivariate, meta-analysis, bioinformatics, study-design choices — are reached through their topic chapters or via the lookup table below.
1.1 The static decision tree
Colour encodes the scale level of the outcome; a dashed border marks a non-parametric test. Click a node in the rendered HTML to jump to the method page.
%%{init: {"securityLevel": "loose", "flowchart": {"htmlLabels": true, "useMaxWidth": true}}}%%
flowchart TD
START["Research question"]:::root --> Q2{"Differences or<br/>associations?"}
START --> Q_INT{"Exploratory<br/>structure?"}
Q2 -->|Differences| QD1{"Kind of difference?"}
Q2 -->|Associations| QA1{"Variable count?"}
QD1 -->|Central tendency| QD2{"Outcome scale?"}
QD1 -->|Variances| VAR["Variance tests<br/>(chi-sq, F, Levene)"]:::metric
QD1 -->|Proportions| QDPROP{"Single variable vs. expected?"}
QDPROP -->|Dichotomous| BIN["Binomial test"]:::nominal
QDPROP -->|Categorical| CHI_GOF["Chi-sq goodness-of-fit"]:::nominal
QD2 -->|Interval/ratio| QD3{"Number of groups?"}
QD2 -->|Ordinal| QD6{"Groups & pairing?"}
QD2 -->|Nominal| QDPROP
QD3 -->|2 groups| QD4{"Independent/paired?"}
QD3 -->|3+ groups| QD5{"Factors & design?"}
QD4 -->|Indep. normal| TT["Independent t-test"]:::metric
QD4 -->|Indep. non-normal| MWU["Mann-Whitney U"]:::metric_np
QD4 -->|Paired normal| PT["Paired t-test"]:::metric
QD4 -->|Paired non-normal| WSR["Wilcoxon signed-rank"]:::metric_np
QD4 -->|Paired sign only| SGN["Sign test"]:::metric_np
QD5 -->|1 between normal| OWA["One-way ANOVA"]:::metric
QD5 -->|2+ between normal| FA["Factorial ANOVA"]:::metric
QD5 -->|1 within normal| RM1["One-way rmANOVA"]:::metric
QD5 -->|Mixed design| RMM["Factorial/mixed rmANOVA"]:::metric
QD5 -->|Indep. non-normal| KW["Kruskal-Wallis"]:::metric_np
QD5 -->|Paired non-normal| FR["Friedman"]:::metric_np
QD6 -->|2 indep.| MWU
QD6 -->|2 paired| WSR
QD6 -->|>2 indep.| KW
QD6 -->|>2 paired| FR
QA1 -->|Two variables| QA2{"Scale levels?"}
QA1 -->|More than two| QA5{"DV scale?"}
QA2 -->|Both nominal| CHIC["Chi-sq contingency"]:::nominal
QA2 -->|Both ordinal| SPE["Spearman"]:::ordinal_np
QA2 -->|Ord + interval| SPE
QA2 -->|Interval linear| PEA["Pearson"]:::metric
QA2 -->|Interval directed| SLR["Simple linear regression"]:::metric
QA2 -->|Interval non-norm| KEN["Kendall tau"]:::metric_np
QA5 -->|Interval| MLR["Multiple linear regression"]:::metric
QA5 -->|Dichotomous| LOG["Logistic regression"]:::nominal
QA5 -->|Ordinal| ORL["Ordinal logistic regression"]:::ordinal
QA5 -->|Nominal k+| MNL["Multinomial logistic regression"]:::nominal
Q_INT -->|Reduce variables| FAC["Factor analysis"]:::interdep
Q_INT -->|Group cases| QCL{"Scale/size?"}
QCL -->|Mixed/small| HCL["Hierarchical clustering"]:::interdep
QCL -->|Metric/large| KMC["K-means"]:::interdep
QCL -->|Mixed/xlarge| TSC["Two-step clustering"]:::interdep
classDef metric fill:#2A9D8F,stroke:#1d6e65,color:#fff
classDef metric_np fill:#2A9D8F,stroke:#1d6e65,color:#fff,stroke-dasharray:6 4
classDef nominal fill:#F4A261,stroke:#b4743f,color:#000
classDef ordinal fill:#E9C46A,stroke:#a88a42,color:#000
classDef ordinal_np fill:#E9C46A,stroke:#a88a42,color:#000,stroke-dasharray:6 4
classDef interdep fill:#6A4C93,stroke:#4a3468,color:#fff
classDef root fill:#ffffff,stroke:#333,color:#000,font-weight:bold
1.2 Quick lookup
A small table for the most common biomedical scenarios. The full tree above and the live wizard cover everything the table omits.
| Scenario | Recommended method | Chapter |
|---|---|---|
| 2 independent groups, metric, normal | Independent / Welch t-test | 5 |
| 2 independent groups, non-normal or ordinal | Mann-Whitney U | 5 |
| 2 paired groups, metric | Paired t-test | 5 |
| 3+ groups, between, normal | One-way ANOVA | 5 |
| 3+ groups, between, non-normal | Kruskal-Wallis | 5 |
| Two continuous, linear | Pearson correlation | 5 |
| Continuous outcome, 2+ predictors | Multiple linear regression | 8 |
| Binary outcome, 1+ predictors | Logistic regression | 8 |
| Time-to-event with censoring | Kaplan-Meier, Cox | 12 |
| Diagnostic test accuracy | Sensitivity/specificity, ROC | 15 |
| Aggregating effect sizes across studies | Pairwise meta-analysis | 16 |
| Predictive model with cross-validation | tidymodels workflow | 14 |
| Posterior inference with priors | brms / Stan | 11 |
| Repeated measures within subjects | Mixed-effects model | 17 |
| Two or more variances | Levene’s test | 5 |
| Reduce variables to latent dimensions | PCA / factor analysis | 9 |
The static tree is mirrored from the decision-tree wizard at https://cttir.github.io/tutorials/decision-tree/. Structure inspired by the University of Zurich Methodenberatung (methodenberatung.uzh.ch).