Nested measurements
Cells, slices, fields and replicates within animals or cultures, and mixed models.
- Choose a methodNested data (cells within mice): average per animal or fit a mixed model?Several cells, wells or slices per animal? Compare groups with one mean per animal, or with a mixed model that has a random intercept for each animal. Worked example in R and Python.
- Choose a methodColocalisation analysis: Pearson or Manders coefficient, and why n is not the number of cellsPearson's coefficient measures whether two signals rise and fall together; Manders' coefficients measure how much of each signal overlaps the other. Compare conditions using one value per independent experiment, not per cell. Python and R code.
- Choose a methodSingle-cell RNA-seq differential expression between conditions: pseudobulk, not cells as replicatesTo compare conditions in single-cell RNA-seq, sum counts per sample within each cell type and test samples, not cells; a cell-level Wilcoxon test finds dozens of false positives. Plan enough animals. Python and R code.
- Choose a methodCalcium imaging analysis: ΔF/F, neurons within animals and selecting responsive cellsCompare groups with the animal as n (or a mixed model), not hundreds of neurons; select responsive cells on separate trials from those you measure; and fix the ΔF/F baseline in advance. Python and R code.
- Choose a methodiPSC experiments: donors, clones and differentiations, and what counts as nIn patient-versus-control iPSC studies the donor is the unit: average clones and differentiations per donor, or, with more donors, model them as nested random effects. Gene-corrected (isogenic) lines give paired comparisons with more power. Python and R code.
- Choose a methodPatch-clamp statistics: cells, animals, pooled events and paired drug applicationsCompare genotypes with the animal as n, not cells or pooled events: a Kolmogorov–Smirnov test on pooled mEPSCs finds differences that do not exist. Analyse drug applications in the same cell as paired. Python and R code.
- Choose a methodSholl analysis statistics: intersections per radius, neurons within animals and testing every radiusCompare Sholl profiles with one value per animal (total intersections averaged over its neurons) or a mixed model. Testing every radius with neurons as n gave false positives in 69% of simulated studies. Python and R code.
- Choose a methodOrganoid size statistics: organoids, wells and batches as n, log-scale sizes and size thresholdsAverage log organoid size per well and per differentiation batch, then compare conditions per batch. In simulation, organoids as n gave 23% false positives, and dropping small organoids made a 20% shrinkage look like 15%. Python and R code.
- Choose a methodImmunofluorescence intensity statistics: CTCF, background, cells within images and experiments as nSubtract background per cell (CTCF), image with identical settings, average cells per image and images per experiment, and compare conditions per experiment. Cells as n gave 22.6% false positives in a simulated design. Python and R code.
- Choose a methodDendritic spine density statistics: spines per 10 µm, segments within neurons within animals, and count modelsCompare spine density per animal: total spines ÷ total dendrite length for each animal's neurons, animals as n. In a simulation with no real effect, segments as n gave 26% false positives. Python and R code.
- Choose a methodLTP field recording statistics: fEPSP slope as percent of baseline, slices within animals and the time courseExpress fEPSP slope as percent of baseline, average over a pre-set late window for each animal, and compare animals. In simulation, testing every minute with slices as n found a false effect in 28% of studies. Python and R code.