## 用户问的「t_test 307 / 308 两行报错」 - 那两行是 `float(res.statistic)` / `float(res.pvalue)`,报错来自 scipy 的 `TtestResult`: 它和 `PearsonRResult` 一样是 `_make_tuple_bunch` **运行时**拼出来的类,存根里没有这两个字段。 - 探针实测 `TtestResult(statistic=3.873, pvalue=0.0305)`,运行时取值完全正常 —— **不是真 bug**。 - 按决策 40 的路子补 `_statistic(result: Any) -> float`(与 `_pvalue` 成对),一行 `# type: ignore` 都没挂。 详情见 `docs/04-environment.md` 坑 10(已扩写为 pvalue / statistic 两条)。 ## 顺手查出来的真 bug:`confidence_interval` - 原码 `return (float(min(0.0, lower)), float(max(upper, 1.0)))`: ① `min` / `max` 的**参数写反**,下界被钉死成 `0.0`; ② **无条件**把三种 method 的区间都夹到 `[0, 1]`。 - 实测 `confidence_interval(rng.normal(170, 8, 50), method="t")` 下界是 `0.0`(正确 `171.0 ± 2.1`); `confidence=1.5` 被夹成 `(0.0, nan)` 而不报错。 - 现在:**只有 `proportion` 夹**(决策 42),`normal` / `t` 返回 `mean ± z|t·se` 不夹; `method` 非法抛 `ValueError`(§4.7)、`confidence` 走 `(0, 1)` 开区间、样本量 < 2 抛 `ValueError`。 - 入参放宽到 `list` / `tuple` / `ndarray` / `Series` / `DataFrame`: docstring 的 Examples 传 list、L0 用例传 ndarray,原来**两条都直接 `TypeError`**。 ## t_test - docstring 补齐 `Parameters` / `Returns` / `Raises` / `Notes`(§4.7); `_clean_data` 改用 `isinstance(data, pd.DataFrame)` 收窄(坑 8 的 `cast`); `alpha` 开区间校验;`df` 按 Welch–Satterthwaite / pooled / paired 分别给。 - **4 个口径未代选**(决策 39),已记进 `STATUS.md`「下一步」第 6 条待用户拍板: 单样本结论文案、`paired` 的 NaN 对齐、`value` 被静默忽略、`DataFrame` 摊平多列。 ## 测试与文档 - `tests/test_stats.py` +10 条(36 → 46),含把原先挂 skip 的 `test_confidence_interval_matches_scipy` 转正;对照一律用解析式(z 公式 / Welch df / t 公式)。 - 全量:**125 passed / 37 skipped / 0 xfail**,ruff 0,pyright 0。 - 个人易错点新增第 15 条,并把**停在 6 号**的索引表补齐到 15(只补索引,正文未动)。 - `docs/04-environment.md` 顺手修掉残留的 `[FENCE]` 代码围栏占位符与一处重复的 `---`。 - `STATUS.md`:L0 记 9/12;校正测试数为 162 条;新增决策 42 / 43。
文档索引
本目录是 MCM/ICM Toolkit 的需求、架构、方案与开发规范的唯一落盘处。
| 文档 | 内容 |
|---|---|
| 01-suggestion-review.md | 对 ChatGPT 建库建议的审查与精简:留什么、砍什么、补什么 |
| 02-architecture.md | 精简后的包结构、边界划分、统一接口约定 |
| 03-roadmap.md | 功能清单分级(L0 / L1 / L2 / 不做)与开发纪律 |
| 04-environment.md | conda / venv 环境配置、镜像、离线约束 |
| dev/function-card-template.md | S 档算法的「函数卡片」模板 |
| 05-git-workflow.md | Git 工作流、Gitea 远程(SSH 走 Tailscale)、行尾策略 |
| dev/personal-pitfalls.md | 个人易错点清单:只追加,追加前不通读 |
阅读顺序
- 先读
01-suggestion-review.md—— 它决定后面所有事。 - 再读
02-architecture.md—— 它决定代码往哪写。 - 开工前读
03-roadmap.md的对应条目 —— 它决定这次做什么、做到什么程度。 - 环境出问题看
04-environment.md。
项目级进度看根目录的
STATUS.md;本目录只放不会频繁变的内容。