Correlation, regression and survival
Relationships between variables and time-to-event data.
- Choose a methodLog-rank test vs Cox regression: which to use for survival dataUse the log-rank test to compare whole survival curves between groups and Cox regression for a hazard ratio or covariates. Check proportional hazards and code humane endpoints as events.
- Choose a methodPearson vs Spearman correlation: which to use, and how to report itChoose Pearson or Spearman from the scatterplot and your design, report the coefficient with a 95% confidence interval, and handle several measurements per animal. Worked examples in R and Python.
- Choose a methodHow to compare IC50 values statistically: pIC50, independent experiments and the extra-sum-of-squares F testFit one curve per compound in each independent experiment, convert each IC50 to pIC50, and compare the pIC50s with a t-test; report the IC50 ratio with its 95% confidence interval. Pooling wells across experiments overstates certainty. R and Python code.
- Choose a methodCorrelation or linear regression? The slope, R², and comparing slopes between groupsUse correlation to describe how closely two measurements move together; use regression when you need the slope, such as change per week or per dose. To compare groups, test the difference in slopes. R and Python code.
- Choose a methodROC curve and AUC for a biomarker: what the AUC means, its confidence interval, and choosing a cut-offReport the AUC with its 95% confidence interval and the numbers of diseased and healthy animals. A cut-off chosen on the same data looks too good. Compare two markers on the same animals with DeLong's test. Python and R code.
- Choose a methodLatency with a cut-off time: how to analyse trials that end before the animal respondsA latency recorded at the cut-off is censored, not a real value. Averaging it biases means and group differences. Compare groups with survival methods, report how many trials reached the cut-off, and keep trial-level data. Python and R code.
- Choose a methodAgreement between raters for blinded scoring: Cohen's kappa, weighted kappa and the ICCFor two raters' categories use Cohen's kappa, for ordinal grades a weighted kappa, for measurements the intraclass correlation (ICC) for absolute agreement. Correlation is not agreement. Report the estimate with its confidence interval. Python and R code.
- Choose a methodCircadian rhythm analysis with the cosinor method: mesor, amplitude, peak time and comparing groupsFit a 24-hour cosine to time-of-day data to estimate mesor, amplitude and peak time with confidence intervals, test for a rhythm, and compare groups in one model instead of a t-test at every time point. Python and R code.
- Choose a methodMichaelis–Menten kinetics: fitting Km and Vmax by nonlinear regression and comparing Km between enzymesEstimate Km and Vmax by nonlinear regression of rate on substrate, not from a Lineweaver–Burk line, and compare Km between enzymes or conditions with one estimate per independent experiment. Python and R code.
- Choose a methodDrug combination synergy: Bliss independence, HSA and Loewe, and how to test synergy across experimentsName the reference model before testing, compute the log Bliss ratio in each independent experiment, and test it across experiments; one plate's wells and the highest single agent (HSA) rule both overstate synergy. Python and R code.
- Choose a methodSaturation binding: Kd and Bmax by nonlinear regression, nonspecific binding and comparing conditionsFit specific binding (total minus nonspecific) with a one-site model by nonlinear regression in each experiment, check ligand depletion, and compare Kd as pKd and Bmax as a ratio across independent experiments. Python and R code.
- Choose a methodClonogenic survival assay statistics: plating efficiency, linear-quadratic fits and comparing survival curvesNormalise colony counts by each condition's plating efficiency, fit the linear-quadratic model per experiment, and compare SF2 or the dose enhancement ratio across independent experiments; pooling dishes in a Poisson model gives false positives. Python and R code.
- Choose a methodLifespan assay statistics for worms and flies: log-rank tests, plates and vials, censoring and replicate trialsWorms on one plate or flies in one vial are not independent, so a pooled log-rank test can give false positives. Use plates or trials as units, or a Cox model with plate effects. Python and R code.
- Choose a methodMyelin g-ratio statistics: axons within animals, axon diameter and comparing myelinationCompare g-ratios with one value per animal, not hundreds of axons. Adjust for axon size from each animal's own fibre-versus-axon diameter line, because smaller axons alone can change the mean g-ratio. Python and R code.