3分钟,看懂多版本ABtest怎么做

简介: 之前分享了ABtest的基本原理,有小伙伴问:那如果我不止AB两个版本,而是有ABC三个版本做测试,还能用ABtest方法吗?当然能用!只是使用的统计学方法换成了:方差分析,今天简单跟大家分享一下。

一、多版本与AB两个版本的区别


如果只有AB两个版本比较,那么做假设检验的时候,原假设是:A版本均值/比例=B版本均值/比例。之后,只要我们能用测试结果推翻原假设,就能说明AB版本均值/比例不同,从而论证哪个版本更好。相应的统计量,也是依此设计的。


当有ABCDE……多个版本的时候,问题变得略复杂一些。因为很有可能这一堆版本里,有些有差异,有些没有。如果一个个测试,得对比n多次,费时费力。如何高效率的完成测试呢?


二、多版本测试基本思路


可以用两步骤方法:


第一步:先做方差分析,检验是否这几个版本的均值都是相等的。此时,原假设为:A版本=B版本=C版本=D版本……总之假设他们都是一样的。如果没有推翻该假设,则说明大家均值都一样,根本就不需要做第二步了。如果能推翻的话,再看其两两差距。


第二步:假设第一步检测已推翻原假设,则进行第二步检验。第二步可以用fisher LSD方法,对总体均值进行两两比较。


今天就先不啰嗦第二步检测了,我们先把第一步讲清楚。


三、方差分析是什么?


方差分析是用来检验多个版本(3个以上)对应的多组数据,是否存在均值差异的方法。方差分析的统计学原理略复杂,小伙伴们可以简单记忆为:用一个F统计量,衡量各组数据的组间差异与组内差异的比值。


当组间差异很大,组内差异很小的时候,则F统计量变得很大,说明这些样本肯定来自不同个体,从而不可能均值都相等,推翻原假设(如下图所示)


image.png


四、方差分析如何做


方差分析分为三步:


  • 第一步:清晰要对比的版本
  • 第二步:清晰要对比的数据指标
  • 第三步:收集不同版本的测试数据
  • 第四步:计算F统计量值,进行假设检验

看个简单的例子:产品给个ABC三个版本,测试不同用户每日留存时间。每个版本各单独抽6名随机用户进行测试,数据如下:


image.png


第一步:确认要参与对比的是ABC版本


  • 第二步:确认要比的指标是:三个版本下,用户每日留存时间


  • 第三步:筛选用户,发布版本,收集测试数据(这里说的轻松,实际上涉及相当多的开发工作,之后有机会再详细讲)


  • 第四步:进行计算。这种只考虑“版本”一个影响因素的实验,称为:单因素方差分析,用excel都能求解(如下图)


image.png


解出来数据如下图:



image.png


那么,可以认为这三组测试结果均值不同,能做第二步检验了。想偷懒的同学,可以直接认为版本C更差劲,先踢出去。


五、方差分析扩展


小伙伴们掌握了方差分析的思路以后,就能做很多对比。实际上,这种区分N个组别,测试版本/方法/属性对某个指标影响的做法,是数据实验的基本方法。通过不断地实验,能测试出新版本/新方法到底能起多大作用。


同时,方差分析也有进一步的应用。比如本例中,很有可能不同用户本身也有行为差异,需要从用户行为中剔除个人差异(比如让一个人体验三个版本)或者提前找到一些影响结果的因素(比如是否重度用户)然后将同类人组成一组。这些都是进一步设计实验要考虑的。


或者,影响结果的不止一个因素。用户用的久,除了版本影响外,还和运营动作,促销活动等有很大关系,因此可能需要对多个因素进行分析,此时又需要用到更复杂的方法。


总之,没有一个方法能包打天下,小伙伴们且听我慢慢道来吧。今天的分享就到这里了,喜欢的话,记得转发+点赞+在看三连,支持下小熊妹哦,谢谢大家。


相关文章
|
5月前
|
消息中间件 canal 缓存
项目实战:一步步实现高效缓存与数据库的数据一致性方案
Hello,大家好!我是热爱分享技术的小米。今天探讨在个人项目中如何保证数据一致性,尤其是在缓存与数据库同步时面临的挑战。文中介绍了常见的CacheAside模式,以及结合消息队列和请求串行化的方法,确保数据一致性。通过不同方案的分析,希望能给大家带来启发。如果你对这些技术感兴趣,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
315 6
项目实战:一步步实现高效缓存与数据库的数据一致性方案
|
1月前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(05)突击MVCC核心原理 | 左右护法ReadView视图和undoLog版本链强强联合
2024年小结:感谢阿里云开发者社区每月的分享交流活动,支持持续学习和进步。过去五个月投稿29篇,其中17篇获高分认可。本文详细介绍了MySQL InnoDB存储引擎的MVCC机制,包括数据版本链、readView视图及解决脏读、不可重复读、幻读问题的demo演示。
|
9月前
|
JavaScript 数据库
❤Nodejs 第七章(操作本地数据库高并发createPool方式)
【4月更文挑战第7天】本文介绍了如何使用Node.js操作本地数据库接口的优化,将之前的单次连接(createConnection)替换为支持高并发的连接池(createPool)。主要改动包括:查询、新增用户、获取用户详情、更新和删除用户的方法,都改用`connectionpool.query()`。这样改进能提升效率,适应更多并发请求。代码示例展示了如何在路由处理函数中使用连接池进行数据库操作。
224 6
❤Nodejs 第七章(操作本地数据库高并发createPool方式)
|
SQL 关系型数据库 MySQL
数据库的锁——代码实战篇
数据库的锁——代码实战篇
|
消息中间件 运维 Dubbo
多版本并行开发测试解决方案
多版本并行开发测试解决方案
多版本并行开发测试解决方案
|
存储 SQL 安全
亲测体验关系型数据库事务的隔离级别
亲测体验关系型数据库事务的隔离级别
103 0
亲测体验关系型数据库事务的隔离级别
|
SQL Java 程序员
数据库关于事务的详解分析(全)包含面试常问的细节
目录前言1. 定义2. 特性 前言 在敲代码的时候,提交事务、事务回滚等,事务二字确官方笼统,不知道具体什么意思 这篇文章将为你解答疑惑 1. 定义 事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。 事务的提交是指事务
166 0
数据库关于事务的详解分析(全)包含面试常问的细节
|
SQL 关系型数据库 MySQL
数据库的事务四大特性&&隔离级别总结(面试高频)
数据库的事务四大特性&&隔离级别总结(面试高频)
221 0
|
测试技术 开发工具 git
多人协作多版本开发冲突的正确解决姿势
多人协作多版本开发冲突的正确解决姿势
394 0
多人协作多版本开发冲突的正确解决姿势
|
存储 关系型数据库 MySQL
Mysql事务隔离级别和MCVV(多版本并发控制)附图 ✨ 每日积累
Mysql事务隔离级别和MCVV(多版本并发控制)附图 ✨ 每日积累
Mysql事务隔离级别和MCVV(多版本并发控制)附图 ✨ 每日积累