/** * LombokTableSheet — ANOVA Module * One-way & Two-way ANOVA with mathematical rigor. * Validated against R / SciPy / Excel to 4 decimal places. * * @module formulas/anova */ export interface AnovaGroupStats { n: number; mean: number; variance: number; std_dev: number; } export interface AnovaOneWayResult { f_statistic: number; p_value: number; df_between: number; df_within: number; ss_between: number; ss_within: number; ss_total: number; ms_between: number; ms_within: number; eta_squared: number; significant: boolean; alpha: number; groups: AnovaGroupStats[]; } export interface AnovaTwoWayResult { factor_a: AnovaFactorResult; factor_b: AnovaFactorResult; interaction: AnovaFactorResult; ss_within: number; df_within: number; ms_within: number; ss_total: number; grand_mean: number; cell_means: number[][]; n_per_cell: number; } export interface AnovaFactorResult { name: string; ss: number; df: number; ms: number; f_statistic: number; p_value: number; significant: boolean; eta_squared: number; } export declare function anovaOneWay(groups: number[][], alpha?: number): AnovaOneWayResult; /** * data[i][j] = array of replicate values for factor A level i, factor B level j. * Requires a BALANCED design: same number of replicates (n) in every cell. */ export declare function anovaTwoWay(data: number[][][], factorAName?: string, factorBName?: string, alpha?: number): AnovaTwoWayResult; export declare function round4(x: number): number; /** * P-value from the F-distribution: P(F_{d1,d2} > f) * = regularized incomplete beta I_x(d2/2, d1/2), x = d2/(d2 + d1*f) */ export declare function fDistPValue(f: number, d1: number, d2: number): number; /** * Regularized incomplete beta function I_x(a, b) via Lentz continued fraction. * Standard numerical recipe (Numerical Recipes in C, §6.4). */ export declare function incompleteBeta(x: number, a: number, b: number): number; /** Lanczos approximation for log-gamma (high precision, g=7, n=9) */ export declare function logGamma(x: number): number;