TapCub 正式上线:统计、分析、客服一个平台免费用
产品动态

卡方检验详解:用转化和实验的例子讲清楚

卡方检验判断各类别的计数和偶然情况下是否不同。两个算例,按设备的转化和样本比例失衡检查,算出每个期望值、自由度和效应量,并列出要避开的错误。

艾玛·柯林斯 发布于 2026 年 11 月 5 日 5 分钟阅读 产品动态
卡方检验详解:用转化和实验的例子讲清楚示例数据

用你自己的数据试一下

这篇文章里出现的报表免费版全都有。一段代码,网站和 App 都能接,最多 10 个站点。

免费开始

只要是比较计数,比如各设备转化和没转化的人数、实验每组的用户数,卡方检验就能告诉你差距是不是比偶然更大。本文把两个统计算例一格一格算出来,再讲效应量、前提条件、什么时候换别的检验,以及常见错误。

读完你会知道

  • 卡方检验处理类别里的计数,不处理平均值
  • 期望值 = 行合计 × 列合计 ÷ 总数
  • 自由度 =(行数 − 1)×(列数 − 1)
  • 要报告效应量:样本大时小差距也会显著
  • 用拟合优度检验发现样本比例失衡

什么是卡方检验?

卡方检验(Chi-square Test,χ² 检验)用来判断各个类别里的计数和「纯属偶然时应有的计数」是否不同。它处理的是频数,比如转化和没转化的访客数、各设备的会话数、分到每个实验版本的用户数,而不是平均值。

主要有两种:

检验问题统计里的例子
独立性检验两个分类变量有没有关系?转化和设备类型有关吗?
拟合优度检验观测计数是否符合预期分布?50/50 的实验真的把流量分成 50/50 了吗?

两者用同一个统计量:

χ² = Σ(观测值 − 期望值)² / 期望值

观测和期望的差距相对期望值越大,χ² 越大,这个模式越不可能是偶然。把 χ² 和对应自由度(df)的卡方分布比较,就得到 p 值。

算例 1:转化和设备有关吗?

一个月的落地页流量(示例数据):

设备访客转化未转化转化率
桌面端4,2001684,0324.00%
移动端6,1001525,9482.49%
平板700226783.14%
合计11,00034210,6583.11%

第 1 步:算期望值。 如果设备和转化无关,每种设备都应该按整体的 3.11% 转化。期望值 = 行合计 × 列合计 ÷ 总数。桌面端转化:4,200 × 342 ÷ 11,000 = 130.6;移动端转化 189.7;平板转化 21.8。未转化的格子用减法得到(4,069.4、5,910.3、678.2)。

第 2 步:把每格的贡献加起来。

格子观测期望(O − E)² / E
桌面端,转化168130.610.72
桌面端,未转化4,0324,069.40.34
移动端,转化152189.77.48
移动端,未转化5,9485,910.30.24
平板,转化2221.80.00
平板,未转化678678.20.00
χ²18.78

第 3 步:自由度。 df =(行数 − 1)×(列数 − 1)=(3 − 1)×(2 − 1)= 2。df = 2 时 5% 的临界值是 5.99。

第 4 步:判断。 18.78 远大于 5.99,p ≈ 0.0001。转化和设备不独立。

第 5 步:差在哪里,差多少? 看每格贡献:桌面端转化比预期多,移动端比预期少,平板和预期一样。效应量 Cramér's V = √(χ² ÷ (N × (k − 1))) = √(18.78 ÷ 11,000) = 0.04,很小。有 11,000 个访客时,不大的差距也会「显著」。业务上要问的是:移动端低 1.5 个百分点值不值得修(通常值得:每月 6,100 个移动访客 × 1.5 个百分点 ≈ 92 个转化)。

app.tapcub.com/insights/funnels

χ²(df = 2)

18.78

p 值

≈ 0.0001

Cramér's V

0.04

注册漏斗 · 按设备拆分

30 天
设备访客转化转化率期望
桌面端4,2001684.00%130.6
移动端6,1001522.49%189.7
平板700223.14%21.8

示例数据。期望 = 所有设备都按 3.11% 转化时的转化数。

示例数据

算例 2:样本比例失衡

某个实验设置为 50/50 分流。两周后:对照组 50,410 人,实验组 49,180 人(共 99,590)。按 50/50 的期望各 49,795 人。

χ² = (50,410 − 49,795)² ÷ 49,795 + (49,180 − 49,795)² ÷ 49,795 = 7.60 + 7.60 = 15.19,df = 1,p ≈ 0.0001。

50.6 / 49.4 看起来无伤大雅,但用户这么多时,偶然出现的可能性很小。这就是样本比例失衡(SRM):分组或埋点某处坏了(某一组的跳转丢了用户、机器人、脚本加载太晚)。出现 SRM 的实验,在找到原因之前,结果都不能信。很多实验团队会自动做这个检查,并用 p < 0.001 这样严格的阈值。

前提条件和不适用的情况

  • 用计数,不用百分比或平均值。 先把比率换回计数。
  • 观测相互独立。 每个人只算一次。一个用户有很多会话时,按用户计数,或者用能处理重复的方法。
  • 每个格子的期望值至少为 5(常用规则;也有教材允许不超过 20% 的格子在 1 到 5 之间)。否则合并类别,或者改用 Fisher 精确检验,小样本 2×2 表的标准做法。
  • 类别互斥。 同一张表里一个访客不能既是移动端又是桌面端。

卡方检验和其他检验

数据检验
各类别的计数卡方检验(小样本用 Fisher 精确检验)
两组的两个比例两比例 z 检验(和不做连续性校正的 2×2 卡方检验结果一样)
两组的平均值t 检验
三组及以上的平均值方差分析(ANOVA)
结果怎么随多个输入变化回归,比如逻辑回归
数据检验
各类别的计数卡方检验或 Fisher 精确检验
两个比例两比例 z 检验
两个平均值t 检验
多个平均值方差分析
多个输入回归

不做连续性校正的 2×2 卡方值,等于两比例 z 检验的 z 值平方。

常见错误

  • 把「显著」当「重要」。 统计数据样本大,很小的差距也会显著;要同时报告效应量和实际差距。
  • 测了很多拆分,只报碰上的那个。 10 个分群各按 α = 0.05 检验,很可能出一个假阳性,要做 Bonferroni 校正之类的修正,另见I 类和 II 类错误。
  • 把会话当成独立的人。 会虚增样本和 χ²。
  • 忽略构成差异。 设备差距可能来自渠道构成(移动流量大多来自社交),要在各渠道内部再看一遍,避免辛普森悖论。
  • 只停在「有差异」。 检验只说明这张表不是随机的;看每格贡献和比率才知道差在哪里。

用 TapCub 的数据做检验

建一个按设备、渠道或国家拆分的漏斗或目标报表,读出每一步到达和没到达的人数,直接填进上面的表;表格(CHISQ.TEST)或 Python(scipy.stats.chi2_contingency)就能算完。TapCub 本身不做 A/B 实验,但如果你在实验工具里把版本名作为事件属性发过来(自定义事件),就能按版本数人数,跑算例 2 的 SRM 检查。

另见:推断统计。

参考资料

这篇文章对你有帮助吗?

我们会根据反馈修改和补充这篇内容。

艾玛·柯林斯

产品分析师

聚焦事件分析、转化漏斗与用户留存,用清晰的指标定义和分析框架解释产品表现。

按分群比较转化

任何漏斗都能按设备、渠道或国家拆开,每个比率背后的人数都看得到。

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie