feat(matlab): add 0-13 day window (lme_*_d0_13) + coverage warning

Box-A2 has no data past ~day 13, so the full-range days x tDCS interaction
extrapolates A2's slope and is confounded (spuriously significant, wrong sign).
Add the _d0_13 window (equal anchor coverage) and a report warning when the two
groups' day coverage is unequal. In the fair 0-13 window the interaction is n.s.
with a POSITIVE slope diff and the Day-1 tDCS effect is n.s. -- matching the
paper's 'equal on Day 1' direction (underpowered at n=8). Suite 32/32.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Experiments DB Dev
2026-07-20 09:58:19 -04:00
parent f0ce978bd4
commit 89bb95088f
6 changed files with 51 additions and 7 deletions
+9 -1
View File
@@ -12,8 +12,16 @@ s = [s sprintf('%s\n', bar)];
s = [s sprintf('model: success ~ day * tDCS + (1|subject) [tDCS: %s = 1 vs %s = 0]\n', ...
cfg.anchorHigh, cfg.anchorLow)];
s = [s sprintf('N = %d subjects, %d sessions\n', L.nSubjects, L.nObs)];
s = [s sprintf('day coverage: Box-B2 0..%d, Box-A2 0..%d\n', L.maxDayB, L.maxDayA)];
s = [s sprintf('(day is raw and 0-indexed: our day 0 = the paper''s "Day 1", so the tDCS\n')];
s = [s sprintf(' main effect below is the group difference on Day 1 -- comparable to the paper.)\n\n')];
s = [s sprintf(' main effect below is the group difference on Day 1 -- comparable to the paper.)\n')];
if abs(L.maxDayB - L.maxDayA) > 2
s = [s sprintf(['** WARNING: the groups'' day coverage is UNEQUAL (differ by %d days). The\n' ...
' interaction/slope over this window EXTRAPOLATES the shorter group''s line and is\n' ...
' CONFOUNDED -- prefer the _d0_%d window (both groups have data throughout). **\n'], ...
abs(L.maxDayB - L.maxDayA), min(L.maxDayB, L.maxDayA))];
end
s = [s sprintf('\n')];
s = [s sprintf('%-27s %-14s %-13s %s\n', 'effect', 't (df)', 'F (df1)', 'p')];
s = [s sprintf('%s\n', repmat('-', 1, 70))];