Repository navigation
Stats-flutter v1.4.0 · 统计能力升级
Stats-flutter v1.4.0 · 统计能力升级 / Statistical capability upgrade
v1.3.1 收尾了表现层,这一版回到「会不会算、算得对不对」:统计内核 statkit 升到 0.5.0(新增 4 个过程、修掉 2 处缺陷),数据层补上 5 个 SPSS / PSPP 命令,并把「哪些个案参与计算」从零散实现收敛成一套写清楚、有对拍的口径。
注意:本版修正了若干统计口径(Levene 改为对组均值、Mann-Whitney 补结校正、多变量按个案对齐、二元 logistic 的 IRLS),与旧版本数值不同之处请以本版本为准,逐条见下方「口径修正」。
亮点 / Highlights — M1:statkit 0.5.0
- 有序趋势检验 Jonckheere-Terpstra(分组本身有序时的单调趋势;结对计数 O(n log n)、含结校正方差、支持频数权重、单尾 p 在
extra['pOneTail']) - 置换检验:
Permutation.random/Permutation.exact、两独立样本均值差、配对差;p 用(1 + #{|s| ≥ |obs|}) / (1 + B)(Phipson & Smyth 2010),固定默认种子保证可复现,小样本可精确枚举 - Lilliefors 校正的正态性检验 p(参数由样本估计时,原先的渐近 p 几乎不会拒绝)
- 多项 logistic 回归(三分类及以上名义因变量,softmax + IRLS,Wald / OR)
- 协方差分析 ANCOVA(控制协变量后的组间比较,Type III 平方和)
- 新增过程均标注
@experimental:次版本内接口可能调整
亮点 / Highlights — M2:数据层命令
RANK补全:/RANK /N /RFRACTION /PROPORTION /PERCENT /NORMAL /NTILES(k)、/TIES=MEAN|LOW|HIGH|CONDENSE、升 / 降序、/INTO自定义目标变量名AUTORECODE:字符串与数值统一编码 1..k 并自动加值标签;用户缺失值恒排最后、缺失码超过 3 个自动改用缺失范围(与 PSPP 一致)SAMPLE:按比例抽样,或SAMPLE n FROM N精确抽 n 个,/SEED=可复现MRSETS多重响应集:MDGROUP/MCGROUP定义,/DISPLAY、/FREQUENCIES、/CROSSTABS、/DELETE;响应表同时给出应答数与应答个案数两个分母COMBINE FILES:ADD FILES纵向追加、MATCH FILES /BY横向匹配(哈希连接,不要求输入已排序),/IN=生成来源指示变量,/KEEP/DROP/RENAME调整变量;字典按 PSPPmerge_dictionaries规则合并(先出现的文件胜出、字符串宽度取最大、类型冲突报错)- 这些命令既能在语法编辑器里执行,也有图形化入口(数据页菜单「合并数据集…」)
亮点 / Highlights — M5:口径复核、PSPP 对拍与性能基准
- 缺失值口径收敛为五条规则并逐过程文档化(新增文档页「缺失值口径 / Missing values」):A 单变量过程只看该变量;B 多变量过程按个案对齐(相关矩阵成对删除,需要完整个案的过程整行删除);C 加权统计要求值与权重都有效;D 分组变量或分析变量缺失的个案不入任何组;E 分类过程把用户缺失值计为「缺失」而非一个类别
- 顺带修掉一处多变量个案错位缺陷:此前部分过程先各自过滤列、再按位置截断,变量之间会错开一格
- 与 PSPP 2.1.2 对拍:期望值取自 PSPP 源码树自带测试的期望输出(AUTORECODE、RANK、ONEWAY、CORRELATIONS 成对删除、NPAR TESTS Mann-Whitney),固化进 CI 每次运行
- 性能基准:10 万行 × 5 列的核心分析路径逐步计时(本机总耗时 497 ms),CI 中作为
continue-on-error的影子任务,只告警、不挡发布
口径修正 / Statistical conventions
- Levene 方差齐性改为以组均值为中心(PSPP 与 SPSS 的 ONEWAY / T-TEST / GLM 口径);此前用的组中位数是 Brown-Forsythe,现由
useMean: false提供 - Mann-Whitney U 的渐近方差补上结校正
σ² = n1·n2·[(n+1)/12 − Σ(t³−t)/(12·n·(n−1))],p 用2·Φ(z)(PSPP 的 Asymp. Sig.(双尾)),报告里的 Z 与 p 由此自洽;连续性校正后的 Z / p(SPSS、Rcorrect = TRUE)另存于extra['zContinuityCorrected']/extra['pContinuityCorrected'] - 二元 logistic 回归:IRLS 迭代此前在两点之间振荡、截距标准误取了标准化尺度;系数、OR、SE、p 现在来自真正的极大似然点
质量 / Quality
flutter analyze:无问题;packages/statkit的dart analyze通过flutter test --exclude-tags "golden || benchmark":213 项;flutter test --tags golden:17 项(Windows 生成基线);packages/statkit的dart test:91 项- 文档站点:
npm ci+npm run docs:build通过(26 个页面,新增中英「缺失值口径」与数据层命令说明) dart pub publish --dry-run:0 warnings
构建环境 / Requirements
- Flutter 3.41.9 stable(Dart SDK
^3.11.5) statkit 0.5.0(本版一并发布到 pub.dev)
产物 / Artifacts
CI 会为本次发布构建并附加:Android APK、Windows x64(zip)、Linux x64(tar.gz)、macOS(zip)。
完整变更清单 / Full changelog:git log app-v1.3.1..app-v1.4.0