moon-experiment

A mature A/B testing analysis library for MoonBit, supporting sample size estimation, sequential testing, metrics comparison and guardrails.

experiment
ab-testing
statistics
math
monitoring
simulation
sequential
moon add pla678889/moon-experiment@0.2.0
Download zip
Author
Version
0.2.0
License
Apache-2.0
Last updated
6 hours ago
Downloads
2
README

#moon-experiment

moon-experiment 是一个面向 MoonBit 的 A/B 测试与实验分析库。它把实验设计、数据质量、指标检验、序贯决策、分层估计、监控和可复现报告组织成一套可以组合使用的纯 MoonBit API,适合产品实验、增长实验和数据管道中的本地分析任务。

项目当前处于 2026 年 8 月 MoonBit 黑客松验收阶段。仓库中的源码规模、边界测试、基准程序和 CI 均在本地完成验证;任何远程推送或 Mooncakes 发布都需要项目维护者明确授权后执行。

#能解决什么问题

  • 在实验开始前估算样本量、功效、分配比例和序贯观察计划。
  • 对二项、均值、比率、计数和分层指标计算差异、效应量及置信区间。
  • 使用 Welch、合并方差、置换检验、bootstrap、CUPED 和多重检验校正。
  • 在分析前检查 SRM、缺失、异常、漂移、样本量和护栏指标。
  • 用确定性分配、合成数据模拟和基准 workload 支持可复现开发。
  • 把数据集、实验生命周期、监控告警和 Markdown/CSV 报告串成完整工作流。

#包结构

作用
core描述统计、在线统计量、分布函数、概率与随机数工具
size样本量、功效、分配和敏感性分析
metrics检验、效应量、区间、回归、重采样和多重校正
guardrailSRM、缺失、异常、漂移、比例和护栏策略
sequentialalpha spending、mixture SPRT、e-process 和置信序列
stratified分层均值、方差、分配和 Mantel–Haenszel 估计
dataset观测数据模型、清洗、确定性分配和变换
experiment实验启动、摄入、暂停、完成、决策和报告编排
monitor滚动统计、EWMA、CUSUM、趋势预测、告警和质量评分
simulation二项、连续、计数数据生成与经验功效/错误率
report结构化实验报告、Markdown/CSV 渲染和质量摘要
benchmark可重复 workload、校验和、基线比较和汇总

#安装

moon.mod 中添加:

import {
"pla678889/moon-experiment"
}

也可以直接克隆仓库,在项目根目录运行检查和测试命令。

#最小示例

let result = @metrics.proportion_test(120, 1000, 150, 1000)
let interval = @metrics.wilson_interval(120, 1000)
println(result.p_value.to_string())
println(interval.low().to_string())

用于实验的推荐顺序是:先用 dataset.validate 检查数据,再用 guardrail 检查分配与质量,最后用 metricssequential 生成决策,并由 report 固化结论。

#本地验证

仓库 CI 使用 MoonBit 官方安装脚本获取最新 stable 工具链,并在 Ubuntu、macOS、Windows 上执行全后端检查:

moon version --all moon update moon check --deny-warn --target all moon test --deny-warn --target all moon fmt moon info

本地还可以运行原生基准程序:

moon run cmd/benchmark --target native

它输出 CSV,包含 workload、输入规模、迭代次数、操作数和确定性校验和。真实机器测量结果记录在 docs/benchmark-results.md,测试覆盖了空输入、单样本、零方差、极端比例、缺失数据、重复 ID、短序列和无效参数等边界。

#工程约束

  • 生产 API 使用纯 MoonBit 实现,不依赖外部 C/JavaScript 运行库。
  • 统计函数对空数组、零分母和退化方差提供显式结果,避免 NaN 扩散。
  • 随机模拟使用显式 seed;基准程序使用 checksum,便于跨提交回归比较。
  • pkg.generated.mbtimoon info 生成,并在 CI 中检查是否与公共 API 一致。
  • CI 将 warning 视为错误,避免 deprecated 语法或未使用依赖进入验收版本。

#许可

本项目采用 Apache License 2.0