You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
7. Optional: marginal distribution on y-axis (via `seaborn` or `matplotlib` inset)
104
-
8. Optional: `xaxis="reference"` vs `xaxis="mean"` toggle
95
+
-`log_transform` is **bool only** — no per-stat list. Mixed cases use two `SleepStatsAgreement` objects.
96
+
- Euser slope is **internal** — not exposed in `summary()`, only rendered in `plot_blandaltman` and `report`.
97
+
-`"log"` is a first-class **`loa_method` value**, alongside `"param"` and `"regr"`.
98
+
-`auto_methods["loa"]` returns `"log"` for all stats when `log_transform=True`.
99
+
- No `log_normal` in `assumptions` — normality of original diffs drives CI selection as before.
100
+
- Bootstrap CI for Euser slope handled inside existing `_generate_bootstrap_ci`, no new methods.
105
101
106
102
---
107
103
108
-
## Future PR: Log transformation (Euser et al. 2008)
104
+
### Background and motivation
105
+
106
+
When differences between devices and reference scale proportionally with the measurement size (heteroscedasticity), a log transformation stabilises the variance. The Euser et al. (2008) method computes limits of agreement in log space and back-transforms them to a slope that multiplies the reference value:
- Parametric CI: `slope_ci = euser_fn(SD ± t * sqrt(SD² * 3 / n))` (Bland & Altman 1999 SE formula)
117
-
- Store in `_vals["loa_log_slope"]` and `_ci["param"]["loa_log_slope"]`
118
-
-`get_table()` to show `"Bias ± slope × ref"` for log-transformed stats (fstring key `"loa_log"`)
119
-
- New property: `log_transform_stats`
116
+
This is the **only** LoA representation that applies for log-transformed stats. The standard `loa_lower`/`loa_upper` (constant) and `loa_intercept`/`loa_slope` (regression) representations do not apply to these stats.
0 commit comments