Files
experiments-database/analysis/matlab/results/unmerged_full.txt
T
Experiments DB Dev 0e9263b958 feat(matlab): print full native fitlme/fitglme summary in every scenario
Add tdcs_model_summary as the single place that renders a fitted model
verbatim (disp(model) with the Command-Window <strong> markup stripped),
and route every report through it so all scenarios emit the complete
model-fitting output:

- tdcs_report: adds the learning-rate GLMM's full summary (count/rate
  already had theirs); localCleanDisp now delegates to the shared helper.
- tdcs_lme_report / tdcs_paper_lme: embed the full fitlme summary before
  the curated effect table.
- tdcs_phase_lme: appends each phase's full fitlme summary.

Tests: tReport asserts 3 native summaries in a GLMM report; tLme asserts
the lme_*/paper_*/phase_* reports embed 1/1/3 summaries with markup
stripped. Suite 39/39.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 14:21:34 -04:00

233 lines
11 KiB
Plaintext

==============================================================================
tDCS GLM report -- scenario: unmerged_full
==============================================================================
merge key: unmerged day window: 0..26 observations: 185
==============================================================================
DESCRIPTIVES
==============================================================================
group n_subj n_sessions mean_success mean_rate max_day
--------------------------------------------------------------------------
Electrode-Box-B2 3 40 77.0 0.591 14
Electrode-Box-A 1 15 70.7 0.557 14
Electrode-Box-A2 3 31 55.4 0.448 13
Naive 4 76 59.6 0.492 26
Right-Electrode 1 23 85.8 0.627 22
==============================================================================
(A) LEVEL / COUNT -- Poisson GLMM (subject random intercept)
==============================================================================
Generalized linear mixed-effects model fit by PL
Model information:
Number of observations 185
Fixed effects coefficients 7
Random effects coefficients 12
Covariance parameters 1
Distribution Poisson
Link Log
FitMethod MPL
Formula:
success ~ 1 + group + day_c + day_c2 + (1 | subject)
Model fit statistics:
AIC BIC LogLikelihood Deviance
567.38 593.14 -275.69 551.38
Fixed effects coefficients (95% CIs):
Name Estimate SE tStat DF
{'(Intercept)' } 4.5636 0.062818 72.648 178
{'group_Electrode-Box-A' } -0.16366 0.1251 -1.3082 178
{'group_Electrode-Box-A2'} -0.16301 0.090874 -1.7939 178
{'group_Naive' } -0.41017 0.083133 -4.9339 178
{'group_Right-Electrode' } -0.15781 0.12382 -1.2745 178
{'day_c' } 0.10084 0.0023114 43.629 178
{'day_c2' } -0.0064669 0.00024857 -26.016 178
pValue Lower Upper
3.0937e-134 4.4397 4.6876
0.19249 -0.41052 0.083214
0.074534 -0.34234 0.016314
1.8418e-06 -0.57422 -0.24612
0.20416 -0.40216 0.086543
5.5938e-97 0.096281 0.1054
1.4969e-62 -0.0069574 -0.0059764
Random effects covariance parameters:
Group: subject (12 Levels)
Name1 Name2 Type Estimate
{'(Intercept)'} {'(Intercept)'} {'std'} 0.10379
Group: Error
Name Estimate
{'sqrt(Dispersion)'} 1
==============================================================================
(B) LEVEL / RATE -- Binomial GLMM (subject random intercept)
==============================================================================
Generalized linear mixed-effects model fit by PL
Model information:
Number of observations 183
Fixed effects coefficients 7
Random effects coefficients 12
Covariance parameters 1
Distribution Binomial
Link Logit
FitMethod MPL
Formula:
success ~ 1 + group + day_c + day_c2 + (1 | subject)
Model fit statistics:
AIC BIC LogLikelihood Deviance
664.34 690.01 -324.17 648.34
Fixed effects coefficients (95% CIs):
Name Estimate SE tStat DF
{'(Intercept)' } 0.67246 0.11921 5.6411 176
{'group_Electrode-Box-A' } -0.2656 0.23687 -1.1213 176
{'group_Electrode-Box-A2'} -0.42592 0.16928 -2.5161 176
{'group_Naive' } -0.69483 0.15707 -4.4236 176
{'group_Right-Electrode' } -0.19395 0.23547 -0.82369 176
{'day_c' } 0.12539 0.0034255 36.605 176
{'day_c2' } -0.0069542 0.0003534 -19.678 176
pValue Lower Upper
6.6327e-08 0.4372 0.90772
0.26369 -0.73306 0.20187
0.012762 -0.75999 -0.091839
1.6969e-05 -1.0048 -0.38484
0.41123 -0.65866 0.27075
3.2383e-84 0.11863 0.13215
2.5332e-46 -0.0076517 -0.0062568
Random effects covariance parameters:
Group: subject (12 Levels)
Name1 Name2 Type Estimate
{'(Intercept)'} {'(Intercept)'} {'std'} 0.19922
Group: Error
Name Estimate
{'sqrt(Dispersion)'} 1
==============================================================================
(C) LEARNING RATE -- Poisson GLMM (group x day interaction)
==============================================================================
Generalized linear mixed-effects model fit by PL
Model information:
Number of observations 185
Fixed effects coefficients 11
Random effects coefficients 12
Covariance parameters 1
Distribution Poisson
Link Log
FitMethod MPL
Formula:
success ~ 1 + day_c2 + group*day_c + (1 | subject)
Model fit statistics:
AIC BIC LogLikelihood Deviance
566.35 604.99 -271.17 542.35
Fixed effects coefficients (95% CIs):
Name Estimate SE tStat
{'(Intercept)' } 4.5639 0.066952 68.167
{'group_Electrode-Box-A' } -0.1538 0.13339 -1.1531
{'group_Electrode-Box-A2' } -0.16353 0.097941 -1.6697
{'group_Naive' } -0.4286 0.088752 -4.8292
{'group_Right-Electrode' } -0.10141 0.13294 -0.76285
{'day_c' } 0.084832 0.0050395 16.833
{'day_c2' } -0.0071091 0.00030673 -23.177
{'group_Electrode-Box-A:day_c' } 0.015434 0.0094241 1.6377
{'group_Electrode-Box-A2:day_c'} 0.010314 0.0089464 1.1529
{'group_Naive:day_c' } 0.031147 0.0065742 4.7377
{'group_Right-Electrode:day_c' } 0.011613 0.007034 1.651
DF pValue Lower Upper
174 1.9324e-127 4.4318 4.6961
174 0.25047 -0.41707 0.10946
174 0.096774 -0.35684 0.029772
174 2.9893e-06 -0.60377 -0.25343
174 0.44659 -0.3638 0.16097
174 2.3384e-38 0.074885 0.094778
174 4.4285e-55 -0.0077145 -0.0065037
174 0.10329 -0.0031665 0.034034
174 0.25055 -0.0073435 0.027971
174 4.4703e-06 0.018171 0.044122
174 0.10054 -0.0022698 0.025496
Random effects covariance parameters:
Group: subject (12 Levels)
Name1 Name2 Type Estimate
{'(Intercept)'} {'(Intercept)'} {'std'} 0.11116
Group: Error
Name Estimate
{'sqrt(Dispersion)'} 1
Per-animal OLS slope test (Box-B2 vs Box-A2), cluster-honest:
Per-subject OLS slope of success vs day: Box-B2 mean=7.96, Box-A2 mean=8.19
Welch two-sided p=0.896, Mann-Whitney p=1.000 (nB=3, nA=3) -> parallel learning (no slope difference detected)
(Reference only: the GLMM group x day_c joint F-test gives p=0.0000, but with just
observation-level DF (df2=174) it is ANTICONSERVATIVE for this few-subject design and is
NOT the basis for the conclusion above.)
==============================================================================
INTERPRETATION
==============================================================================
Note: these are subject-level GLMMs (Laplace-approximated fitglme), not the
Python reference's population-average GEE -- directions/magnitudes should agree,
exact ratios and p-values will differ.
Anchor check -- H2: Box-B2 BETTER than Box-A2 (the two anchors must differ)
[count/level] Box-B2 = 1.18x Box-A2 (one-sided p=0.0364) -> SUPPORTED
[rate/level ] Box-B2 = 1.53x Box-A2 (one-sided p=0.0059) -> SUPPORTED
Per-animal (Box-B2 n=3 vs Box-A2 n=3), pure stats (no GLME):
count (per-subject mean success): Welch two-sided p=0.0552, Mann-Whitney one-sided (B2>A2) p=0.0500
rate (per-subject pooled success/total): Welch two-sided p=0.0722, Mann-Whitney one-sided (B2>A2) p=0.0500
Classification -- is each UNKNOWN condition A2-like or B2-like?
(ratio >1 = above that anchor; p = differs from that anchor)
Electrode-Box-A:
[count/level] vs Box-A2: 1.00x p=0.996 vs Box-B2: 0.85x p=0.192
-> AMBIGUOUS (nearer Electrode-Box-A2)
[rate/level ] vs Box-A2: 1.17x p=0.501 vs Box-B2: 0.77x p=0.264
-> AMBIGUOUS (nearer Electrode-Box-A2)
Right-Electrode:
[count/level] vs Box-A2: 1.01x p=0.967 vs Box-B2: 0.85x p=0.204
-> AMBIGUOUS (nearer Electrode-Box-A2)
[rate/level ] vs Box-A2: 1.26x p=0.328 vs Box-B2: 0.82x p=0.411
-> AMBIGUOUS (nearer Electrode-Box-B2)
NOTE: each unknown has ONLY 1 subject. 'Matches' means 'not statistically
distinguishable', weak evidence at n=1, not proof of equivalence.
==============================================================================
CAVEATS
==============================================================================
- Tiny groups: each arm has only n=3-4 subjects (Naive n=4; anchor arms n=3-5
depending on merge), and -- in unmerged scenarios -- each unknown condition
(Electrode-Box-A, Right-Electrode) has only n=1 subject. Treat every group
comparison here as preliminary.
- Single-subject classification: for a 1-subject unknown, 'matches anchor X'
means 'not statistically distinguishable from X', NOT proof of equivalence;
inference with a single subject in a group is fragile.
- Count vs rate: 'success' alone is a raw count; the rate model
(success/attempts) is the fairer accuracy comparison when attempt counts differ
between groups.