Data Pipeline & Statistical Methodology
data_flow.RmdData Pipeline & Statistical Methodology
This document details the mathematical models, long-format data
schemas, variance partitioning algorithm, ANCOVA, and longitudinal
time-series handling in foundr.
1. Long-Format Data Model
All primary data input objects must be organized in tidy long format containing:
# Core input schema:
tibble(
dataset = "DietStudy", # Optional dataset tag
strain = "AJ", # One of 8 CC strains (AJ, B6, 129, NOD, NZO, CAST, PWK, WSB)
sex = "F", # Biological sex ("M" or "F")
animal = "1024", # Subject identifier
condition = "HF", # Experimental condition/diet (optional)
trait = "Glucose_12wk", # Trait name
value = 142.5 # Measured value
)2. Orthogonal Variance Partitioning
The partition() function (R/partition.R)
separates phenotypic variance into three mutually orthogonal
components:
Two-Step Linear Model Decomposition
Reduced Model (Rest Estimation): Fit a reduced linear model predicting trait value from nuisance/experimental control factors ():
Full Model (Signal Estimation): Fit the residuals from the reduced model () against the signal factors ():
Cell Mean Calculation:
By default: - When condition is present:
signal = "strain * sex * condition",
rest = "strain * sex + sex * condition". - When
condition is absent: signal = "strain * sex",
rest = "sex".
3. Statistical Summaries & ANCOVA
Strain Statistics & ANOVA F-Tests
strainstats() computes linear models for each trait to
evaluate founder strain main effects and strain-by-sex interactions.
- Cell means: Mean trait value within each
strain x sex x conditioncell. - Cell SDs: Standard deviations computed within each strain cell.
- F-statistics and p-values: Evaluated via
broom::glance()andbroom::tidy().
ANCOVA Modeling
traitAncova() extends linear modeling by conditioning
founder strain effects on continuous physiological covariates:
4. Longitudinal Trait & AUC Integration
For time-series measurements (e.g. weekly body weights or glucose
tolerance test curves), foundr provides:
-
timetraits(): Parses trait strings containing embedded time suffixes (e.g.Weight_t1,Weight_t2). -
area_under_curve(): Computes trapezoidal Area Under the Curve (AUC) over time trajectories. -
traitTimes: S3 object wrapping longitudinal trajectories with customautoplot()methods for visual curve comparisons across founder strains.