AB实验样本量确定

article/2025/3/15 11:03:18

文章目录

      • 1. 统计功效与关键概念
      • 2. Z检验样本量确定
        • 2.1 统计功效公式推导
        • 2.2 样本量计算公式
        • 2.3 求解样本量
      • 3. 卡方检验样本量确定
        • 3.1 求解样本量
      • 4. 简要总结
      • Reference

在数据分析过程中, 一个完整的闭环是从数据中得到洞察,根据洞察得到某种假设,通过实验检验这一假设

AB实验实际上是在做一个假设检验,可以参考上一篇笔记【概率论】- (2)假设检验。在查资料的过程中,查到AB实验主要有两种检验方式(不同的样本量,不同的检验方式)——

  • Z检验,即检验实验组与对照组服从分布的均值是否相等
  • 卡方检验,即检验实验组是否服从理论分布(将对照组看成理论分布)

这里以Z检验为例,介绍如何确定AB实验中实验组与对照组的样本量,提供相应的代码,卡方检验原理相似。

1. 统计功效与关键概念

在假设检验中有以下两类错误——

  • 弃真:原假设为真,而我们拒绝原假设,这种错误称为一型错误
  • 取伪:原假设为假,而我们接受原假设,这种错误称为二型错误

在教科书中一般只限定显著性水平为 α \alpha α,即只考虑一型错误的概率,而不考虑二型错误。但在实际应用中(如AB实验),二型错误也必须限定在较低的范围内。如下例子,这种情况下即使 α \alpha α 足够小,实验结果仍不够具有说服性。

假设实验的显著性水平 α = 0.01 \alpha=0.01 α=0.01,二型错误概率 β = 0.5 \beta=0.5 β=0.5,这意味着——

  • 若原假设为真,我们判断出错(即拒绝)的概率为1%;
  • 若原假设为假,我们判断出错(即接受)的概率为50%。

上面说的考虑二型错误,更常见的是考虑统计功效Statistical Power

统计功效是指当原假设为假,拒绝原假设的概率。因此有 p o w e r = 1 − β power = 1-\beta power=1β

通过求解统计功效,即可得到统计功效与 α 、 n \alpha、n αn 的关系式。反过来,知道 α 、 p o w e r \alpha、power αpower 后就可以求出所需的样本量。

2. Z检验样本量确定

2.1 统计功效公式推导

  • 原假设与备择假设如下:

H 0 : μ A = μ B H 1 : μ A ≠ μ B (1) H_0:\mu_A=\mu_B \\ H_1:\mu_A \ne\mu_B\tag{1} H0:μA=μBH1:μA=μB(1)

  • δ = μ A − μ B \delta=\mu_A-\mu_B δ=μAμB,按照二型错误的概念,假设 σ A = σ B = σ \sigma_A=\sigma_B=\sigma σA=σB=σ, 有

β = P ( 接 受 H 0 ∣ H 0 为 假 ) = P ( − z α / 2 ≤ x ˉ A − x ˉ B σ / n A + n B ≤ z α / 2 ∣ δ ≠ 0 ) = P ( − z α / 2 − δ σ / n A + n B ≤ ( x ˉ A − x ˉ B ) − δ σ / n A + n B ≤ z α / 2 − δ σ / n A + n B ) = ϕ ( z α / 2 − δ σ / n A + n B ) ) − ϕ ( − z α / 2 − δ σ / n A + n B ) ) (2) \begin{aligned} \beta&=P(接受H_0|H_0为假)\\ &=P(-z_{\alpha/2}\le \frac{\bar x_A-\bar x_B}{\sigma/\sqrt{n_A+n_B}}\le z_{\alpha/2}|\delta \ne 0)\\ &=P(-z_{\alpha/2}-\frac{\delta}{\sigma/\sqrt{n_A+n_B}}\le \frac{(\bar x_A-\bar x_B)-\delta}{\sigma/\sqrt{n_A+n_B}}\le z_{\alpha/2}-\frac{\delta}{\sigma/\sqrt{n_A+n_B}})\\ &=\phi(z_{\alpha/2}-\frac{\delta}{\sigma/\sqrt{n_A+n_B}}))-\phi(-z_{\alpha/2}-\frac{\delta}{\sigma/\sqrt{n_A+n_B}})) \tag{2} \end{aligned} β=P(H0H0)=P(zα/2σ/nA+nB xˉAxˉBzα/2δ=0)=P(zα/2σ/nA+nB δσ/nA+nB (xˉAxˉB)δzα/2σ/nA+nB δ)=ϕ(zα/2σ/nA+nB δ))ϕ(zα/2σ/nA+nB δ))(2)

注意,由于 H 0 H_0 H0 为假,即 μ A ≠ μ B \mu_A \ne \mu_B μA=μB X ˉ A − X ˉ B σ / n A + n B \frac{\bar X_A-\bar X_B}{\sigma/\sqrt{n_A+n_B}} σ/nA+nB XˉAXˉB 不服从正态分布,所以需要转化为 ( X ˉ A − X ˉ B ) − δ σ / n A + n B \frac{(\bar X_A-\bar X_B)-\delta}{\sigma/\sqrt{n_A+n_B}} σ/nA+nB (XˉAXˉB)δ 才服从标准正态分布

  • z = μ A − μ B σ / n A + n B z=\frac{\mu_A-\mu_B}{\sigma/\sqrt{n_A+n_B}} z=σ/nA+nB μAμB,由统计功效与二型错误的关系,有

p o w e r = 1 − β = 1 − ϕ ( z α / 2 − z ) + ϕ ( − z α / 2 − z ) = ϕ ( − z α / 2 + z ) + ϕ ( − z α / 2 − z ) (3) \begin{aligned} power=1-\beta&=1-\phi(z_{\alpha/2}-z)+\phi(-z_{\alpha/2}-z)\\ &=\phi(-z_{\alpha/2}+z)+\phi(-z_{\alpha/2}-z) \tag{3} \end{aligned} power=1β=1ϕ(zα/2z)+ϕ(zα/2z)=ϕ(zα/2+z)+ϕ(zα/2z)(3)

  • 这样就得到了统计功效power的表达式。

2.2 样本量计算公式

上述推导出了统计功效的计算公式,当然计算样本量已经有很多工具,比如Z检验计算样本量工具,这个工具中也提供了计算公式,与上面推导出的类似,注意区别在于这个工具的 z 1 − α / 2 z_{1-\alpha/2} z1α/2 是下分位点,上述推导是上分位点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZNfRPmiW-1578711729921)(/)]

从这个网站的公式中也可以看到样本量的计算公式。

2.3 求解样本量

python中提供了假设检验的函数(R中也有类似的函数,参考pwr功效分析R包),Z检验的函数定义如下,使用的时候提供参数,留一个未知参数(None),返回值为未知参数的计算结果,看后面的具体例子。

from statsmodels.stats.power import NormalIndPower
NormalIndPower().solve_power(effect_size=None,nobs1=None,alpha=None,power=None,ratio=1.0,alternative='two-sided',
)

第一个参数effect_size表示效应量,代表不同处理下总体差异的大小(即判断有没有差别,还要判断差多少)。在Z检验中确定样本量可以使用 ∣ μ A − μ B ∣ σ \frac{|\mu_A-\mu_B|}{\sigma} σμAμB 近似效应量

假设原方案的留存率为0.40,新方案的留存率预计为0.45,方差为1,则求解样本量如下:

  • 使用python函数计算,得到第一组为6280人,第二组与第一组相等(ratio=1)
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ClWNUq8L-1578711729922)(/)]

  • 按照公式计算,两个Z值查表得到,代入公式,求得样本量均为6280,与上面一致
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-axldEgEd-1578711729923)(/)]

  • 使用Z检验计算样本量工具,结果为6267,与上述计算结果差异较小,猜测为效应量公式不同。使用另一个Z检验计算样本量工具计算结果则相同,为6280

3. 卡方检验样本量确定

卡方检验的推导思路应该与Z检验大致相同,我没有去尝试,这里直接用python函数求解,并与工具对比。

3.1 求解样本量

python提供的卡方检验函数如下,使用方法与Z检验的函数相同。

from statsmodels.stats.power import GofChisquarePower
GofChisquarePower().solve_power(effect_size=None,nobs=None,alpha=None,power=None,n_bins=2,
)

卡方检验中,四格表的效应量计算公式如下(百度百科-效应量):
ϕ = χ 2 n = n ( a d − b c ) 2 / [ ( a + b ) ( c + d ) ( a + c ) ( b + d ) ] n = ( a d − b c ) 2 / [ ( a + b ) ( c + d ) ( a + c ) ( b + d ) ] \phi=\sqrt{\frac{\chi^2}{n}}=\sqrt{\frac{n(ad-bc)^2/[(a+b)(c+d)(a+c)(b+d)]}{n}}=\sqrt{(ad-bc)^2/[(a+b)(c+d)(a+c)(b+d)]} ϕ=nχ2 =nn(adbc)2/[(a+b)(c+d)(a+c)(b+d)] =(adbc)2/[(a+b)(c+d)(a+c)(b+d)]
假设原方案的留存率为0.40,新方案的留存率预计为0.45,方差为1,则求解样本量如下:

  • 使用python函数计算,样本量为3068,则每组1534
    在这里插入图片描述

  • 使用卡方检验计算样本量工具结果如下,每组样本量为1514,与上述函数结果有较小差异在这里插入图片描述

  • 使用另一个卡方检验计算样本量工具结果如下,每组样本量也为1514
    在这里插入图片描述
    两个工具均为1514,猜测与我们自己计算的结果不同原因为效应量计算方式不同。

4. 简要总结

因为没有实际进行过AB实验,不太清楚实际应用中使用的是哪种方式。个人认为卡方检验更为方便实用,一方面是样本量更少,实验成本更低,另一方面需要提供的参数也更少(不需要提供方差)。

以上是我对于AB实验样本量计算的一些思考,如有错误,请大佬指正~

Reference

  1. 《浙江大学概率论与数理统计第四版》

  2. 略谈假设检验第二类错误的概率

  3. Z检验计算样本量工具

  4. 另一个Z检验计算样本量工具

  5. pwr功效分析R包

  6. 卡方检验计算样本量工具

  7. 另一个卡方检验计算样本量工具


http://chatgpt.dhexx.cn/article/sFK6bo2t.shtml

相关文章

临床试验中样本量确定的统计学考虑

样本量确定(sample size determination),又称样本量估计(sample size estimation),是指为满足统计的准确性和可靠性(I类错误的控制和检验效能的保证)计算出所需的样本量,它是临床试验设计中一个极为重要的环节,直接关系到研究结论…

在前端中的缓存

http缓存 http缓存基本认识 http缓存分为强缓存和协商缓存 1、浏览器在加载资源时,先根据这个资源的一些http header判断它是否命中强缓存,强缓存如果命中,浏览器直接从自己的缓存中读取资源,不会发请求到服务器。比如某个css文…

前端缓存方案

前端几种本地缓存机制_蜗牛小前的博客-CSDN博客_前端本地缓存在漫长的前端开发过程中,我们常用的几种本地缓存机制:Cookie,LocalStorge,SessionStorge 1.Cookie的特点1)cookie的大小受限制,cookie大小被限制在4KB,不能…

【前端】深入浅出缓存原理

缓存的基本原理 对于前端来说,缓存主要分为浏览器缓存(比如 localStorage、sessionStorage、cookie等等)以及http缓存,也是本文主要讲述的。 当然叫法也不一样,比如客户端缓存大概包括浏览器缓存和http缓存 所谓htt…

前端浏览器缓存机制

目录 1 缓存定义及其优点2 强缓存2.1 expires 和 Cache-Control 3 协商缓存4 浏览器缓存位置 1 缓存定义及其优点 什么是缓存? 当我们第一次访问网站的时候,电脑会把网站上的图片和数据下载到电脑上,当我们再次访问的时候,网站就会…

前端缓存机制

目录 前言 目的 缓存过程分析 强制缓存(强缓存) 强制缓存的缓存规则 浏览器的缓存存放在哪里 协商缓存 更新缓存 合理应用缓存 前言 对于浏览器缓存,每个前端开发者应该都不会陌生,同时它也是我们在日常开发中存在的一个…

前端缓存【web缓存】

前端缓存--http缓存 web缓存http缓存定义优点缺点http缓存类型 强缓存Expires实现的强缓存Cache-control实现的强缓存 协商缓存last-modified实现的协商缓存ETag实现的协商缓存缺点 设置缓存文件缓存(html、js、css、png)总结 web缓存 web缓存主要指:浏…

前端缓存(HTTP缓存、浏览器缓存)浅析

前端缓存 文章目录 前端缓存缓存分类1、http缓存(1)强缓存(本地缓存)启发式缓存 (2)协商缓存(弱缓存) 2、浏览器缓存 其他响应头和请求头参数刷新正常重新加载硬性重新加载清空缓存并硬性重新加载 调试缓存 缓存分类 1、http缓存 …

前端缓存最佳实践

点击上方“前端开发博客”,选择“设为星标” 回复“2”加入前端群 作者:黑金团队https://juejin.cn/post/6844903737538920462 前言 缓存,这是一个老生常谈的话题,也常被作为前端面试的一个知识点。本文,重点在与探讨在…

技术点:前端缓存分类及使用

前端缓存 什么是 web 缓存(前端缓存) web 缓存主要指的是两部分:浏览器缓存和 http 缓存 浏览器缓存:比如,localStorage,sessionStorage,cookie 等等。这些功能主要用于缓存一些必要的数据,比如用户信息。比如需要携…

前端缓存详解

目录 前言 一、按缓存位置分类 HTTP状态码及区别 几种状态的执行顺序 Memory Cache Disk Cache Service Worker 请求网络 二、HTTP 缓存 HTTP 缓存分类 强缓存原理 协商缓存原理 更新和废弃缓存 三、缓存小结 四、缓存的优点 五、浏览器缓存策略 五、缓存的应…

一文!彻底弄懂前端缓存

前端缓存 前端缓存,这是一个老生常谈的话题,也常被作为前端面试的一个知识点。今天我们再来总结一下。 分类 前端缓存分为强缓存和协商缓存两种。 强缓存 强缓存主要使用Expires、Cache-Control 两个头字段,两者同时存在Cache-Control 优先级…

【前端页面缓存技术方案】

前端页面缓存技术方案 关于页面缓存数据的纯前端技术方案背景项目存在的现有方案思考🤔其他技术调研react-activationreact-router-cache-route 结论 关于页面缓存数据的纯前端技术方案 背景 为了优化用户的体验,可能会遇到这样的需求:在列…

前端常用缓存技术

http://www.cnblogs.com/belove8013/p/8134067.html 今天刚上班就听到群里的几位大佬在讨论所开发的系统需要重复的登录的恶心之处,听各位大佬争辩的同时,想到了自己以前整理过的缓存技术,算是比较全面的,当然了只是帮助自己理解的…

我的网站心得之缓存技术(前端篇)

在前端面试中,storage是面试官经常问的问题,我先问你几个问题,如果你回答不上来,那么你应该阅读一下:知道storage吗?storage存储的数据类型有什么?sessionStorage的生命周期?你都用l…

中高级前端工程师都需要熟悉的技能--前端缓存

前言 web缓存是高级前端工程师必修技能。是我们变成大牛过程中绕不开的知识点。 文章会尽量用通俗易懂的言语来细说web缓存的概念和用处。 本期文章的大纲是 什么是web缓存(前端缓存) 缓存可以解决什么问题?他的缺点是什么? …

ovo svm_反思我在OVO担任远程产品设计实习生的时间

ovo svm In a quiet bedroom accompanied only by the low humming of my laptop fan, I sat before a Google Hangouts meeting, and got to know my colleagues for the first time, unaware of the joy of a ride that was waiting for me at OVO Design. 在一个安静的卧室里…

反思最近这些时日的荒废

为什么80%的码农都做不了架构师?>>> 算是一时兴起,最近lol排位已经将自己的折磨的不成人样。闲了这么久,是时候找份工作了。最近一直没敢跟家里人打电话,实在不知道该说些什么,一开口便是谎言。是否自己真的…

团队愿景_周一的愿景,每日的成果,周五的远程团队管理反思

团队愿景 My friend J.D. Meier has an amazing blog called Sources of Insight and hes written a fantastic book called Getting Results the Agile Way. You can buy his book on Amazon (its free on Kindle Unlimited!). I put J.D. up there with David Allen and Step…

WPBeginner年满10岁-反思,更新和WordPress赠品(奖金124,000美元以上)

Wow, it’s the tenth fourth. Today, WPBeginner is officially 10 years old — feels unreal to type this! 哇,是第十位 今天,WPBeginner正式成立了10岁-键入此图标感到不切实际! Like every year, I want to take a few minutes and d…