精华内容
下载资源
问答
  • 软件测试进阶(一)A/B测试终极指南

    万次阅读 2016-07-06 11:32:56
    A/B测试终极指南 A/B测试不是一个时髦名词。现在很多有经验的营销和设计工作者用它来获得访客行为信息,来提高转换率。然而,A/B测试与SEO不同的是,人们都不太知道如何进行网站分析和可用性分析。他们并不完全明白...

    A/B测试终极指南

          A/B测试不是一个时髦名词。现在很多有经验的营销和设计工作者用它来获得访客行为信息,来提高转换率。然而,A/B测试与SEO不同的是,人们都不太知道如何进行网站分析和可用性分析。他们并不完全明白它是什么或如何更有效的使用它。本文将为你提供有史以来最好的A/B测试教程。

    什么是A/B测试?

          A/B测试的核心就是:确定两个元素或版本(A和B)哪个版本更好,你需要同时实验两个版本。最后,选择最好的版本使用。

          网络上的A/B测试,即你设计的页面有两个版本(A和B),A为现行的设计(称为控制),B是新的设计。比较这两个版本之间你所关心的数据(转化率,业绩,跳出率等)。最后,您选择效果最好的版本。

     

    A/B测试的应用举例

     

          用一个电商App的场景作为例子。电商App集成了我们的SDK之后,就可以在AppAdhocOptimizer控制台创建很多“测试版本”,每个测试版本可以尝试不同的UI设计和文案。客户可以在控制台管理不同测试版本的试验运行状态、流量分配以及查看详细的数据报告,并选择发布效果更好的测试版本。

     

          拿这个例子来说,假如这个App有100万在线用户,通过控制台可以控制这些用户看到不同的测试版本。假如其中50万用户看到左边版本,产生了10万购买;另外50万用户看到右边版本,产生了40万购买。这个试验数据说明右边版本产生的转化率更高,可以通过控制台将这个版本推广到所有100万用户。

    测试哪些东西?

          你要选择什么去测试取决于你的目标。例如,如果你的目标是增加顾客数量,那么您可能测试下列内容:注册表单数量,字段类型要求,隐私政策等。在这种情况下A/B测试的目标是要弄清楚什么阻止了游客注册。需要填写的表单的数量?用户的隐私?还是该网站做了让游客不信任的事情?所有这些问题都可以通过一个个A/B测试获得答案。

          每一个A/B测试内容都是独一无二的,单通常测试一下这些内容:

         行动按钮的措辞,大小,颜色和位置,

         标题或产品说明,

         表单的数量和字段类型,

         网站的布局和风格,

         产品定价和促销活动,

         着陆和产品页面上的图片,

         页面上文字的长度(少Vs多)。

          一旦你决定要测试什么,下一步当然是要选择一个合适的测试工具。如果你想要一个基础的免费工具,可以使用Google Website Optimizer。如果你想要功能更加强大的工具,可以使用Visual Website Optimizer 。其他的一些选择都是可以的,建立试验在所有工具中都很相似,所以我们只需讨论一种即可。

    你可以通过两种方法建立A/B测试:

           在页面测试加载前替换元素

          如果你测试的是页面上的单个元素,如注册按钮,然后需要在测试工具中设置按钮。当测试时,在A/B工具将在页面给用户前随机替换按钮。

    重定向到另一页面

          如果你想通过A/B测试整个页面,比如说,一个绿色的主题和一个红色主题,那么你就需要创建和上传新的页面。例如,如果您的主页是 http://www.example.com/index.html,那么你需要创建另外一个页面 http://www.example.com/index1.html。当测试运行时,您的测试工具将一部分访问者重定向到第二个网址。

         一旦您使用了上面的两种变换方法,下一步是建立您的转换目标。通常,你会得到一个JavaScript代码,您可以复制并粘贴到一个需要游客到达的目标网页。例如,如果您有     一个电子商务网站,你正在测试的“立即购买“按钮的颜色,然后您的转换目标将是购买成功后的“谢谢您“页面。

         在转换事件发生的同时,在A/B测试工具,记录了哪种页面显示给了访问者。经过足够数量的游客,您可以确定哪个页面带来了最多的转化!建立和运行的A/B测试,其实很简单。

    该做什么和不该做什么

         虽然A/B测试是超级简单的概念,但是请记住,以下这些都只是我自己的经验。

    注意事项

         不要分开你的测试情况。始终两个版本同时进行测试。如果您第一星期测试第一版本,第二星期测试第二个版本,你就错了。有可能B版本带来的流量更糟糕,但是带来了更好的业绩,因为两个版本之间的流量始终存在不一样。

          不要结束得太早。有一个概念叫做“统计信心“ ,无论你的测试结果明显的。如果你只有少数转换或游客,它都无法确定最终的结果。大多数A/B测试工具都有报告统计,但如果你是手动测试,你可以使用 在线计算器。

         不要让常客惊讶。如果你正在测试网站的一部分。包括新访客和常客,不要使他们觉得震惊。尤其不要因为哪些可能不会最终实施变化。

         不要让你的直觉推翻了测试结果。在A/B测试的结果往往是令人惊讶的或直观的。在一个绿色为主题的网站,一个明显的红色按钮有可能成为赢家。即使红色按钮不容易吸引注意。您要测试的目标是一个更好的转换率,而不是美学,所以在得到测试借过钱不要拒绝任何尝试。

    需要做的

         知道运行测试多久。结束太早,可能会使你花了时间但是没有得到有意义的结果。结束太晚也不好,因为效果不佳的页面可能影响你的转化和业绩。使用一个计算器,来确定测试多久以后来结束它。

         将相同的页面呈献给同一个访客。您的工具应该有一个记忆访问者已经看到的页面的功能。这样可以防止向同一用户显示一不同的价格或不同的促销优惠。

         让您的A/B测试在整个网站保持一致。如果你正在测试的登录按钮在多个地点出现,然后一个访问者应在所有的地方看到同样的变化。在页面1显示一个样子,在页面2显示两外一个样子,会使试验结果被干扰。

        做很多的A/B测试。让我们面对现实吧:你的第一个A/B测试可能会无效。但是不要绝望。一个A/B测试只能有三个结果:没有结果,不好的结果和好的结果。优化转换率的关键是要做大量的A/B测试,把所有的好的结果拼接起来,最终推动业绩。

    经典A/B测试案例研究

         这里有一些如何进行A/B测试的案例研究。

         Writing Decisions: Headline Tests on the Highrise Sign-Up Page 37Signals

          测试他们的价格页面的标题。最终发现,“30-Day Free Trial on All Accounts“比原来的“Start a Highrise Account.“多产生30 %以上的订单。

     

     

          “You Should Follow Me on Twitter Here”(Dustin Curtis)

          这是一个用来测试召唤用户在Twitter上关注自己的试验。Dustin发现提示文字是“You should follow me on Twitter here”的效果是“I’m on Twitter.”173%

     

          Human Photos Double Conversion Rates

          从两个不同的A/B测试将在网站上增加转换率的人的照片:一个令人令人惊讶的结论,A/B测试两张图片,将真人照片放在网站上会获得一倍的转化。研究说明,我们潜意识被照片吸引了。

          Google Website Optimizer Case Study: Daily Burn, 20%+ Improvement (Tim Ferriss)

          一个将用户选择减少的变化使转化提高了20%,最终的版本在细节和文字上更易吸引目光。

     

         Two Magical Words Increased Conversion Rate by 28% “It’s free”

          这个单词增加了注册按钮点击次数的28%, 测试结果表明,在行动召唤上一些很小的变化会带来令人惊讶的结果。

     

          Changing the Sign-Up Button from Green to Red

          依靠A/B测试, CareLogger把注册按钮从绿色修改为红色增加了34%转换率!

     

          Single page vs. multi-step checkout

        如果你有一个在线商店,很常见的就是支付流程。这个A / B测试发现,多个支付流程比单个支付流程完成的销售更好。

     

          “Mad Libs”style form increases conversion 25-40%

          打败传统的智慧,此A/B测试发现一段风格形式输入字段比传统形式的布局更好。

     

          Complete redesign of product page increased sales by 20%

          一个软件产品的公司重新设计他们的产品页 给它一个现代的外观和增加信任模块。最终结果:他们成功地增加20 %的总销售额。本案例研究证明了设计对销售的影响。

     

          Marketing Experiments response capture case study – triple digit increase in conversions

          通过优化邮件地址获取提高了258 %。重点是消除所有的干扰,并要求游客只需提供电子邮件地址。使用亚马逊礼品卡让他/她的完成个人资料。

    A/B测试工具

          有许多侧重点,价位和功能不同的A/B测试工具,这里是一些:

          Google Website Optimizer 搜索巨头提供的免费A/B测试工具。一个很好的入门级工具,但是没有一些先进的功能。

          A/Bingo and Vanity 基于Ruby on Rails开发的服务器组件。需要编程和代码集成。

          Visual Website Optimizer 一个易于使用的A/B测试工具,包含一些先进的功能,如所见即所得的编辑器,单击地图,访问者分割和标签等。

          Unbounce and Performable 集成着陆页设计的A/B测试工具。

          Vertster, SiteSpect, Webtrends Optimize and Omniture’s Test&Target  企业级测试工具。

          一些深入研究的A/B测试资料

          如果你已经读到这里,那么A / B测试大概已经激起你的兴趣。在这里,有一些非常好的A/B测试资源。

          寻找你下一个A/B测试的灵感   Which Test Won?  一个猜测那种情况会最终胜利的游戏。

          101 A/B Testing Tips  大量的A/B测试技巧和方法。

          ABtests.com 一个可以分享和阅读A/B测试结果的地方。

          A/B Ideafox 搜索引擎的A / B和多变量的案例研究。

    美文美图

     

    展开全文
  • 【统计学】详解 A/B 测试

    万次阅读 2018-08-15 11:22:02
    A / B测试 目录 什么是A/B 测试 A/B测试的工作原理 为什么要进行A/B测试A/B测试过程 A/B测试SEO A/B测试实例   什么是A / B测试A / B测试(也称为分割测试或桶测试)是一种将网页或应用程序的两个...

    A / B测试

    目录

    • 什么是A/B 测试
    • A/B测试的工作原理
    • 为什么要进行A/B测试?
    • A/B测试过程
    • A/B测试SEO
    • A/B测试实例

     

    什么是A / B测试?

    A / B测试(也称为分割测试桶测试)是一种将网页或应用程序的两个版本相互比较以确定哪个版本的性能更好的方法。AB测试本质上是一个实验,其中页面的两个或多个变体随机显示给用户,并且统计分析用于确定哪个变体对于给定的转换目标更好地执行。

    ABæµè¯

    运行直接将变体与当前体验进行比较的AB测试可让您提出有关网站或应用程序更改的重点问题,然后收集有关该更改影响的数据。

    测试可以消除网站优化中的猜测,并实现数据通知决策,将业务对话从“我们思考”转变为“我们知道”。通过衡量更改对指标的影响,您可以确保每次更改都会产生积极的结果。

     

    A / B测试的工作原理

    在A / B测试中,您可以访问网页或应用程序屏幕并对其进行修改以创建同一页面的第二个版本。此更改可以像单个标题或按钮一样简单,也可以是页面的完整重新设计。然后,一半的流量显示页面的原始版本(称为控件),一半显示页面的修改版本(变体)。

    AB-测试-optimizely -2-

    当访问者为控制或变体提供服务时,他们对每种体验的参与度将在分析仪表板中进行测量和收集,并通过统计引擎进行分析。然后,您可以确定更改体验是否对访问者行为产生积极,消极或无影响。

    控制变化-图表-3-

     

    为什么要进行A / B测试 ?

    A / B测试允许个人,团队和公司在收集结果数据时对其用户体验进行仔细更改。这允许他们构建假设,并更好地了解为什么他们的经历中的某些元素会影响用户行为。换句话说,他们可能被证明是错误的 - 他们对特定目标的最佳体验的看法可以通过A / B测试证明是错误的。

    不仅仅是回答一次性问题或解决分歧,AB测试可以持续使用,以不断改善给定的体验,改善单一目标,如转换率随着时间的推移。

    例如,B2B技术公司可能希望从活动登陆页面提高其销售线索质量和数量。为了实现这一目标,团队将尝试对标题,可视图像,表单字段,号召性用语和页面的整体布局进行A / B测试更改。

    一次测试一个变化有助于他们确定哪些变化对访问者的行为产生了影响,哪些变化没有影响访问者的行为。随着时间的推移,他们可以结合实验中多次获胜变化的效果来展示新体验相对于旧体验的可测量的改进。

    A / B测试结果随着时间的推移

    这种引入用户体验变化的方法还允许针对期望的结果优化体验,并且可以使营销活动中的关键步骤更有效。

    通过测试广告文案,营销人员可以了解哪个版本吸引了更多点击次数。通过测试后续登录页面,他们可以了解哪种布局最能将访问者转化为客户。如果每个步骤的元素尽可能有效地工作以获得新客户,则实际上可以减少营销活动的总体支出。

    A / B测试转换漏斗

    产品开发人员和设计人员也可以使用A / B测试来演示新功能或用户体验变化的影响。只要目标明确定义并且您有明确的假设,产品入职,用户参与,模态和产品体验都可以通过A / B测试进行优化。

     

    A / B测试过程

    以下是可用于开始运行测试的A / B测试框架:

    • 收集数据:您的分析通常可以深入了解您可以开始优化的位置。它有助于从您的网站或应用的高流量区域开始,因为这将允许您更快地收集数据。寻找可以改进的低转换率或高丢弃率的页面。

    • 确定目标:您的转化目标是用于确定变体是否比原始版本更成功的指标。目标可以是点击按钮或链接到产品购买和电子邮件注册。

    • 生成假设:一旦确定了目标,就可以开始生成A / B测试想法和假设,以便您认为它们会优于当前版本。获得想法列表后,根据预期影响和实施难度确定优先级。

    • 创建变体:使用您的A / B测试软件(如Optimizely),对您网站的元素或移动应用体验进行所需的更改。这可能是更改按钮的颜色,交换页面上元素的顺序,隐藏导航元素或完全自定义的内容。许多领先的A / B测试工具都有一个可视化编辑器,可以轻松完成这些更改。确保对您的实验进行质量检查,以确保其按预期工作。

    • 运行实验:启动实验并等待访问者参与!此时,您网站或应用的访问者将被随机分配到您的体验控制或变体。测量,计算和比较他们与每种体验的相互作用,以确定每种体验的表现。

    • 分析结果:实验完成后,就可以分析结果了。您的A / B测试软件将显示实验数据,并显示两个版本的页面执行方式之间的差异,以及是否存在统计上显着的差异。

    如果您的变体是赢家,恭喜!看看您是否可以在网站的其他页面上应用实验中的知识,并继续迭代实验以改善结果。如果您的实验产生否定结果或没有结果,请不要担心。将实验用作学习经验并生成可以测试的新假设。

    A / B测试过程

    无论您的实验结果如何,请利用您的经验告知未来的测试,并不断迭代优化您的应用或网站的体验。

     

    A / B测试和SEO

    Google 允许鼓励进行 A / B测试,并表示执行A / B或多变量测试不会对您网站的搜索排名造成内在风险。但是,有可能通过滥用A / B测试工具来隐藏您的搜索排名,例如隐藏真实内容。谷歌已经阐明了一些最佳做法,以确保不会发生这种情况:

    • 没有伪装 - 伪装是向搜索引擎显示与典型访问者不同的内容的做法。伪装可能会导致您的网站降级甚至从搜索结果中删除。为防止隐藏真实内容,请勿滥用访客细分,以根据用户代理或IP地址向Googlebot显示不同的内容。
    • 使用rel =“canonical” - 如果运行包含多个URL的拆分测试,则应使用rel =“canonical”属性将变体指向页面的原始版本。这样做有助于防止Googlebot被同一页面的多个版本混淆。
    • 使用302重定向而不是301s - 如果您运行将原始URL重定向到变体URL的测试,请使用302(临时)重定向与301(永久)重定向。这告诉Google等搜索引擎重定向是临时的,并且他们应该保留原始网址的索引而不是测试网址。
    • 只在必要时运行实验 - 运行测试的时间超过必要时间,特别是如果您将页面的一个变体提供给大部分用户,可以看作是欺骗搜索引擎的尝试。Google建议您在测试结束后立即更新您的网站并删除网站上的所有测试版本,并避免不必要地长时间运行测试。

    有关AB测试和SEO的更多信息,请参阅我们的知识库文章,了解A / B测试如何影响SEO

    一家媒体公司可能希望增加读者人数,增加读者在其网站上花费的时间,并通过社交分享来扩大他们的文章。为了实现这些目标,他们可能会测试以下变化:

    • 电子邮件注册模式
    • 推荐内容
    • 社交分享按钮

    旅游公司可能希望增加在其网站或移动应用程序上完成的成功预订的数量,或者可能希望增加辅助购买的收入。要改进这些指标,他们可能会测试以下变体:

    • 主页搜索模式
    • 搜索结果页面
    • 辅助产品介绍

    电子商务公司可能希望增加已完成的结帐数量,平均订单价值或增加假日销售额。要做到这一点,他们可能会进行A / B测试:

    • 主页促销
    • 导航元素
    • 结帐渠道组件

    一家技术公司可能希望为其销售团队增加高质量潜在客户的数量,增加免费试用用户的数量,或吸引特定类型的买家。他们可能会测试:

     

    A / B测试实例

    这些A / B测试示例显示了世界上最具创新性的公司通过Optimizely进行A / B测试所看到的结果类型:

    Discovery A / B对其视频播放器的组件进行了测试,以便与他们的电视节目“超级粉丝”进行互动。结果?视频互动率增加6%。

     

    ComScore A / B测试了徽标和推荐书,以增加产品登录页面上的社交证明,并增加69%的潜在客户。

     

    Secret Escapes测试了他们的移动注册页面的变化,使转换率翻倍并增加了终身价值。

     

     

    原文:https://www.optimizely.com/optimization-glossary/ab-testing/

     

     

    展开全文
  • 为什么要使用贝叶斯A / B测试代替传统方法 A / B测试是当今技术,市场营销和研究中最有用的统计技术之一。它的价值在于A / B测试可让您确定因果关系,而大多数分析仅揭示相关性(即古老的格言“相关性而非因果关系”...

    为什么要使用贝叶斯A / B测试代替传统方法

    A / B测试是当今技术,市场营销和研究中最有用的统计技术之一。它的价值在于A / B测试可让您确定因果关系,而大多数分析仅揭示相关性(即古老的格言“相关性而非因果关系”)。尽管A / B测试功能强大且流行程度很高,但绝大多数A/B测试都遵循一种基于频率主义统计学派的t测试的单一方法。本文将介绍A/B测试的另一种方法。这种替代方法使用了贝叶斯统计学派,本文将演示这种方法如何比传统的、频繁的方法返回更直观的结果。

    传统的、频繁主义的方法使用假设作为A/B测试的框架。零假设通常是现状,例如A的平均值等于B的平均值,和备择假设测试是否有差异,如均值大意味着的信心置信度,例如5%,选择和实验可以得出两个结论

    1. 我们拒绝原假设并接受具有95%置信度的替代假设,例如A的平均值大于B的平均值,或者
    2. 我们不会以95%的置信度拒绝零假设,即我们无法对A和B的均数差异做出任何结论。

    这种语言不是我们在业务中倾向于使用的语言,对于不太熟悉A / B测试的人来说可能很难理解。特别是第二个结论并没有提供太多的见解;花时间和金钱进行测试后,您只能得出结论:那就是不可能得出任何结论。

    贝叶斯方法侧重于概率。如果检验上述相同的例子,零假设是A的均值等于B的均值,贝叶斯方法计算的是估计的均值差以及一个比另一个大的概率——而不仅仅是均值差是否为0。在我看来,贝叶斯方法优于频率主义方法,因为它能以特定的概率有效地接受和拒绝零假设。这种方法可以提出更有用的建议。两个示例结论(类似于上面频率主义结论)是:

    1. 均值A大于均值B的概率是99%这个例子拒绝了原假设
    2. 也就是说A有65%的概率大于B这个例子没有拒绝原假设

    这种语言提供了一种结论有多可能的感觉,以便决策者有权选择他们自己的风险容忍度,它避免了零假设不能被拒绝和没有得出结论的情况。

    更为有用的是它计算出均值之间的估计差。 总之,这意味着来自贝叶斯测试的可能结论是“平均值A估计比平均值B大0.8个单位,并且平均值A大于平均值B的可能性为83%”。 另外,贝叶斯方法还可以比较A和B的方差,并可以管理异常离群值。

    贝叶斯方法的缺点是,支撑它的数学可能更具挑战性。很好的理解贝叶斯统计和马尔可夫链蒙特卡罗抽样是有帮助的,但不是完全关键。

    以下各节详细介绍了如何使用贝叶斯方法进行A / B测试和R中的代码示例的示例。

    A/B测试数据概述

    为了演示贝叶斯方法,我将使用我在2020年初进行的一系列调查中的数据。调查包括13个问题,涉及受访者对抗击冠状病毒措施的意见(4个问题)、受访者对政府应对冠状病毒的认可(3个问题)和一般家庭活动问题(5个问题)3个主题。完整的问题列表包含在这里。在这个例子中,我们将关注有数字答案的问题,比如“你每天花多少小时和你的家人或室友在一起?”

    调查被设计成包括6个相似但截然不同的调查版本。进行这些略有不同的调查的目的是为了A/B测试它们之间的差异是否会导致统计上不同的结果。每个调查之间的区别要么是问题的顺序,要么是问题的措辞方式是积极的或消极的。一个肯定词和否定词的例子是:

    • 正面:你认为政府建议的社交距离在今天之后还能持续多久?
    • 否定:你认为政府规定的社交距离在今天之后还会持续多久?

    下表显示了不同调查版本的摘要。总共记录了291份调查答复,每个调查版本有45-47份答复。这意味着调查1的结果可以与调查3和调查5进行比较,因为顺序不同,而与调查2的措辞不同。

    贝叶斯分析

    下面的分析主要基于Kruschke 2012年的研究论文《贝叶斯估计取代t检验》和R包“BEST”。代码可以在我的Github上找到。

    与任何贝叶斯估计一样,这种贝叶斯技术利用一组先验,这些先验通过数据中的证据更新来返回一组后验分布。下面的分析使用了t分布和根据Kruschke - 2012的马尔可夫链蒙特卡罗算法,以及对后验分布影响有限的不承诺先验。不承诺先验对后验分布的影响很小,这对本研究很有用,因为没有基线或先验信念,本研究可以轻松比较。这种方法对于管理异常值也很有效,并且只需要针对一个错误的数据点进行调整。

    如果前一段有点复杂,不要担心。您仍然可以执行下面的步骤,得到一个易于解释的输出。要了解更多信息,请阅读Kruschke的论文。

    步骤1:载入包和读取数据

    第一步是安装所需的软件包。 我们将使用使用JAGS包的BEST包。 在运行BEST之前,请先下载JAGS。 下一步安装BEST。 完成所有步骤后,加载软件包。

    还加载数据并进行分析。 我们使用的是Survey_data_v2.csv,在代码中也有包含

    #Load the library used for Bayesian style t Test
    library(rjags)
    source("BEST.R")
    library(plotly)
    
    #Load Data
    DataFile = "survey_data_v2.csv"
    df = read.csv(DataFile, header=T)
    
    #Numerical questions for analysis
    NQ1 = "How.many.hours.a.day.do.you.typically.spend.on.your.job."
    NQ2 = "How.many.hours.a.day.do.you.typically.spend.preparing.meals."
    NQ3 = "How.many.hours.a.week.do.you.spend.on.housework..outside.of.cooking.meals."
    NQ4 = "How.many.hours.a.day.do.you.spend.on.electronics.for.leisure."
    NQ5 = "How.many.hours.a.day.are.you.spending.with.your.family.members.or.roommates."
    NQ6 = "How.many.months.will.it.take.for.the.economy.to.recover."
    
    #Manage for outliers in Question 6 (based on survey instructions)
    mask = df[NQ6] > 60
    df[mask,NQ6] = 60
    

    步骤2:创建用于贝叶斯分析的函数

    接下来,我们要创建一个函数,该函数将允许我们选择要比较的调查版本和要比较的调查问题。 该函数运行马尔可夫链蒙特卡洛采样方法,该方法构造了我们测试的后验分布,即一个均值大于另一个均值的概率以及均值的估计差。

    #Create function to run Bayesian Analysis
    Bayes_ABTest = function(Survey_Number_A, Survey_Number_B, question){
      
      #Filtering between survey responses
      mask_A = df['Survey'] == Survey_Number_A
      mask_B = df['Survey'] == Survey_Number_B
    
      #Create data vectors  
      A = df[mask_A,question]
      B = df[mask_B,question]
    
      # Run the Bayesian analysis:
      mcmcChain = BESTmcmc( A , B ) 
    
      # Plot the results of the Bayesian analysis:
      postInfo = BESTplot( A , B , mcmcChain , pairsPlot=TRUE )
      
      # Show detailed summary info on console:
      show( postInfo ) 
    }
    

    步骤3:运行test

    最后,选择两组数据进行比较。在本例中,我们将使用调查版本1和2,并比较问题2。改变函数变量以测试不同的调查和问题。

    #Run Analysis
    Survey_A = 1
    Survey_B = 2
    Question = NQ2
    
    Bayes_ABTest(Survey_A, Survey_B, Question)
    

    第四步:解释输出

    运行上述代码后,弹出窗口将显示如下输出。主要是100,000个可信的参数值组合的直方图,可以代表后验分布。

    A/B测试最重要的输出是显示均值差异的右中分布。在我们的例子中,它表明平均值A比平均值B大0.214个单位,平均值A比平均值B大的概率为82.9%。这个结果是A/B检验的主要结论。注意,传统的t检验只会返回在95%置信水平下不能拒绝零假设的结果。

    另一个输出显示了解释数据的其他有用信息。右上方两个以y为轴的图显示了测试数据的实际分布情况。其他数字显示后验分布。左边的5个直方图显示了与前面的5个直方图相对应的单个后验。右下角的图表显示了A组和B组之间的比较。

    总结要点

    与传统的频繁访问方法相比,贝叶斯A / B测试方法具有三个主要优点:

    • 一组更直观的结果,例如 平均值A大于平均值B的机会为82.9%。
    • 包括A和B之间差异的大小,例如 平均值A估计比平均值B大0.214个单位。
    • 不受不拒绝原假设的结果的约束。

    这些好处结合在一起,提供了更有用,更直观的建议,使决策者可以更好地了解测试结果并选择自己的风险等级。

    引用

    [1] Kruschke, John K. “Bayesian Estimation Supersedes the t Test.” Journal of Experimental Psychology . Vol. 142, no. 3, 2012, pg. 573–603, accessed 03 January 2021, https://cran.r-project.org/web/packages/BEST/vignettes/BEST.pdf

    [2] Gallo, Amy 2017. A Refresher on A/B Testing , Harvard Business Review, accessed 03 January 2021, https://hbr.org/2017/06/a-refresher-on-ab-testing

    [3] Hussain, Noor Zainab and Sangameswaran, S. 2018, Global advertising expenditure to grow 4.5 percent in 2018: Zenith , Reuters, accessed 03 January 2021, https://www.reuters.com/article/us-advertising-forecast/global-advertising-expenditure-to-grow-4–5-percent-in-2018-zenith-idUSKCN1M30XT

    [4] Lavorini, Vincenzo, Bayesian A/B Testing with Python: the easy guide, Towards Data Science, accessed 03 January 2021,https://towardsdatascience.com/bayesian-a-b-testing-with-python-the-easy-guide-d638f89e0b8a

    [5] Mazareanu, E. 2019, Market research in U.S. — Statistics & Facts , Statista, accessed 03 January 2021, https://www.statista.com/topics/4974/market-research-in-us/.

    [6] NSS 2016. Bayesian Statistics explained to Beginners in Simple English , Analytics Vidhya, accessed 03 January 2021, https://www.analyticsvidhya.com/blog/2016/06/bayesian-statistics-beginners-simple-english/

    作者:Robbie Geoghegan

    本文代码地址:https://github.com/RobbieGeoghegan/bayesian_abtesting

    deephub翻译组

    展开全文
  • 什么是A/B测试?以及如何进行? 很多朋友都问我怎么进行A/B测试,我一般都不直接回答他们的问题,而是首先问一句:“你的日IP是多少?”。当对方的回答是不到一百的时候,我一般都说这个没必要了解。 或许你会...

    文章来源:http://www.aliued.cn/2010/09/27/ab-testing-realization-method.html


    什么是A/B测试?以及如何进行?

    很多朋友都问我怎么进行A/B测试,我一般都不直接回答他们的问题,而是首先问一句:“你的日IP是多少?”。当对方的回答是不到一百的时候,我一般都说这个没必要了解。
    
        或许你会纳闷,为什么日IP少的站没必要了解A/B测试,原因很简单,A/B测试需要大量的IP,如果你的IP只有十几个,那么测试出来的数据很可能不是很准确,换句话说A/B测试的站日流量越大测试的结果越准确。
    
        好了,说了这么多,还是把A/B测试跟大家谈谈吧。
    
        举个简单的例子,当你有一个日IP过千的网站,而你的网站首页几百年没有更改了,这个时候你想启用新的网页,而你有害怕新的页面用户不一定就非常喜欢,那么这个时候你就需要进行A/B测试了。测试的方法是将老页面定义为A页面,新页面定义为B页面。到谷歌网站优化工具申请进行A/B测试(免费的),这是时候谷歌会给你一串代码,我们只需要将代码添加到谷歌要求的页面即可。
    
        代码添加完毕,如果有一千个用户访问你的网站,那么会有500个用户看到A页面,500个用户看到B页面,这个时候再统计下通过A页面到达网站内页的用户占的百分比是多少,通过B页面到达内页的用户占的百分比是多少。假设A的是6%,B的是20%那么恭喜你,这说明你新设计的页面是博得了用户的欢心。如果你对20%的结果还不满意,那么继续修改你的页面,直到这个转化率不能够再提高为止。
    
        A/B测试是一个科学的统计方法,这一统计的诞生,再也不用为了争吵是使用A图片好,还是使用B图片好,好不好,按照效果说算。还是邓爷爷说的好,实践是检验真理的唯一标准。停止争吵,来做个A/B测试吧。
    
        前提是你要有上千的IP,而且还是每日。数据太小的话,往往不准确。

    上文介绍了 A/B 测试的基本概念,接下来我们继续探讨如何实现 A/B 测试。

    我们先来看一个图:

    A/B testing 部署概念图

    (注:感谢Algo提供本图。)

    上图展示了 A/B 测试的实现原理。从左到右,四条较粗的竖线代表了 A/B 测试中的四个关键角色:客户端(Client)、服务器(Server)、数据层(Data)、数据仓库(Data Warehouse)。从上到下代表了三种访问形式:无 A/B 测试的普通访问流程(Non AB test)、基于后端的 A/B 测试访问流程(Back-end AB test)、基于前端的 A/B 测试访问流程(Front-end AB test)。

    一般情况下,用户在一次浏览中,会从客户端(Client)发起一个请求,这个请求被传到了服务器(Server),服务器的后台程序根据计算,得出要给用户返回什么内容(Data),同时向数据仓库(Data Warehouse)添加一条打点信息,记录本次访问的相关信息。这个过程也就是图上横向的流程。数据仓库收集到足够的数据之后,就可以开始进行分析(Analytics)了,这也即是图中右上角的部分。

    A/B 测试需要将多个不同的版本展现给不同的用户,即需要一个“分流”的环节。从上图中我们可以看到,分流可以在客户端做,也可以在服务器端做。传统的 A/B 测试一般是在服务端分流的,即基于后端的 A/B 测试(Back-end AB test),当用户的请求到达服务器时,服务器根据一定的规则,给不同的用户返回不同的版本,同时记录数据的工作也在服务端完成。

    基于后端的 A/B 测试技术实现上稍微简单一些,不过缺点是需要技术部工程资源介入,另外收集到的数据通常是比较宏观的PV(Page View)信息,虽然可以进行比较复杂的宏观行为分析,但要想知道用户在某个版本的页面上的具体行为往往就无能为力了。

    基于前端的 A/B 测试则可以解决上面的问题。它的特点是,利用前端 JavaScript 方法,在客户端进行分流,同时,可以用 JavaScript 记录下用户的鼠标行为(甚至键盘行为,如果需要的话),直接发送到对应的打点服务器记录。这样的好处是不需要技术部(如果你们和我们一样,前端工程师与后端工程师分属不同部门的话)参与,并且可以比较精确地记录下用户在页面上的每一个行为,甚至包括后端方法难以记录到的无效点击!

    下面,我将重点介绍一下我们在基于前端的 A/B 测试上的一些实践。


    一、分流

    首先遇到的问题是如何分流的问题。对于大部分需求来说,我们希望各个版本的访问人数平均分配。解决办法有很多种,比较简单的一种即是前面提到过的,根据某一个 Cookie ID 来划分用户,前提是你的网站上每一位访客在第一次访问时就要有一个不重复的 Cookie ID,比如“123.180.140.*.1267882109577.3”。然后,可以根据这个 Cookie ID 的最后一位(在本例中是“3”)来划分人群,比如单数的显示 A 版本,偶数的显示 B 版本。

    因为 Cookie ID 一般设定后不会轻易改变,基于 Cookie ID 的好处是我们能很好地对访客保持一致性,某个用户如果第一次看到的是 A 版本,那他刷新后看到的还是 A 版本,不会一会儿看到 A 版本一会儿看到 B 版本。但不足之处就是如果用户浏览器不支持 Cookie 的话,分流就不能正常进行了。不过,现代浏览器默认情况下都是支持 Cookie 的,如果真有用户的浏览器不支持 Cookie ,那也应该是极少数特殊情况,对结果的影响非常微小,对于这些特殊情况,我们一般可以安全地忽略掉。

    还有一点需要注意的是,A/B 测试的页面必须有较高的 UV (Unique Visitor,独立访客数),因为分流带有一定的随机性,如果页面 UV 太小,分到每一个版本的人数就更少,结果很有可能被一些偶然因素影响。而 UV 较大时,根据大数定理,我们得到的结果会接近于真实数据。就像想知道一个地方的成年人的平均身高,当然是取的样本越大结论越可信。

    二、展示

    决定向当前访问者显示哪个版本后,怎么用前端的方法加载对应的版本呢?这需要分情况处理。

    一般情况下,如果两个版本只有一个较小的区域不一样,我们可以同时将两个区域的 HTML 都加载到当前页面中,先用 CSS 把它们隐藏起来(也可以默认显示一个版本),等 JS 判断出该显示哪个版本后,再控制对应版本的 CSS 显示。

    有时候,测试区域比较大,代码比较多,或者需要后台较多的计算资源,如果一开始就把两个版本的 HTML 全加载到当前页面中,就会需要比较大的开销(比如带宽、后台计算量)。这种情况下,我们可以先把测试区留空,之后再用 Ajax 的方式延迟加载。

    还有的时候,测试区域非常大,几乎占了整个页面,或者完全就是不同的页面,这时,用 Ajax 方式加载也不适合了,可以将不同的版本做成不同的页面,然后再用 JS 跳转。不过这样的方式并不是很好,因为前端 JS 跳转需要一定的时间,这个过程很有可能被用户感受到,并且留下不好的体验。对这个问题,似乎没有很好的解决办法,至少在前端层面很难完美解决,所以并不是非常推荐这种跳转方式,如果真的需要跳转,最好是在服务器端由后端代码来操作。

    三、数据采集

    正确展示对应的版本后,就要开始采集需要的数据了。有一个可选的数据,是当前版本有多少 PV (Page Views,访问量),如果需要记录这个数据的话,在正确版本加载完成之时就要发送一个打点信息。不过很多需求中,具体版本的 PV 的精确数值可能不是很重要,而且要收集这个信息需要多一次打点操作,所以一般情况下这个数据是可选的。

    必须的数据是测试区域内用户的点击信息。当用户在测试区域点击了鼠标左键(无论这个点击是点击在链接、文字、图片还是空白处),我们就需要发送一条对应的打点信息到打点服务器。一般来说,这个打点信息至少需要包含以下数据:

    当前 A/B 测试以及版本标识

    点击事件的位置

    点击时间戳(客户端时间)

    当前点中的URL(如果点在非超链接区域,此项为空)

    用户标识(比如 Cookie ID)

    用户浏览器信息

    为了尽可能精确地还原用户的点击位置,我们的页面对前端有比较高的要求,要求页面在不同的浏览器下有基本一致的表现,至少在IE6、7、8以及 Fiefox 下,页面横向的元素要精确一致,纵向上很难做到完全一致,但也要尽可能保持统一。另外,这样的测试也不太适合自适应宽度的页面,比较适合定宽的页面,为了避免不同分辨率下页面左右空白不同导致鼠标点击位置的不同,点击位置取的应该是相对于测试区域左上角的位置。除此之外,最好再记录一下测试区域相对于页面内容左上角的位置,在后面还原点击分布图以及绘制热区图时会用到这个数据。

    这一阶段的流程大致如下图所示:

    A/B 测试打点生命周期

    数据打点该如何发送以及如何存储呢?这要取决于你的打点服务器如何存储信息。

    四、数据存储

    我们使用了一台专用的服务器收集打点信息,为了能支持尽可多尽可能密集的打点请求,这台服务器的 apache 服务网站目录下只有两个静态文件,分别是 abtest.html 和 abtest.gif ,两者都是非常小的空白文件(空白图片)。访客端进行打点时,只需要以 GET 的方式带上相关的参数请求两个文件中的任意一个即可。比如:

    http://abtest.xxx.com/abtest.gif?abid=1-a&clickBlockX=244&clickBlockY=372&clickBlockW=392&clickBlockH=76&clickTime=1263264082137&clickRX=233&clickRY=47&clickURL=&clickBeaconID=123.180.140.*.1267882109577.3&browserType=FireFox

    这个请求可以通过 Ajax 的方式发送,也可以通过 JS 在页面上创建 new Image() 对象的方式完成。

    对打点服务器来说,这只是一条普通的 HTTP 请求,它会在日志里留下一条普通的日志记录,形如:

    123.180.140.* – – [13/Jan/2010:15:21:15 +0800] “GET /abtest.gif?a=123&b=456&c=789 HTTP/1.1″ 304 – “-” “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.6 (KHTML, like Gecko) Chrome/4.0.266.0 Safari/532.6″

    可以看到了,除了 JS 发送给我们的信息外,Apache 还帮我们记录了一些信息,比如访客 IP 、服务器时间、用户浏览器信息。

    对于数据记录和存储来说,到这一步就足够了。Apache 静态文件 + 日志的方式足够高效,基本不用担心性能的问题。剩下的,就是另外一个问题,如何从 Apache 日志中读取打点信息并加以分析,这已经和前端无关了,并且是一个比较复杂的问题,将在后续日志中介绍。


    展开全文
  • A/B测试与灰度发布

    万次阅读 2015-01-01 10:37:35
    A/B测试与灰度发布的理论 产品是多维度的,设计体验、交互体验、系统质量、运营支持等等, 测试的目的是为了系统最终的交付,一套各方面都足够好的系统,而不是文档上定义的系统,系统是需要不断进化的。 测试的...
  • A/B测试五大注意事项

    千次阅读 2016-07-14 21:45:07
    随着Growth Hacking在中国的传播和兴起,作为增长黑客必杀技之一的A/B测试,也被越来越多的国内企业所接受和重视。然而,A/B测试看似简单,实则隐藏着许多沟沟坎坎,稍不注意就会导致试验结果偏离科学轨道。那么今天...
  • 蓝绿部署、A/B测试以及灰度发布

    千次阅读 2018-07-06 09:35:25
    蓝绿部署、A/B测试以及灰度发布过去的10年里,很多大公司都在使用蓝绿部署,安全、可靠是这种部署方式的特点。蓝绿部署虽然算不上”Sliver Bullet“,但确实很实用。在有关于“微服务”、“DevOps”、“Cloud-native...
  • 蓝绿部署、A/B测试、金丝雀发布,以及灰度发布、流量切分等,经常被混为一谈,影响沟通效率。 根本原因是这些名词经常出现,人们耳熟能详能够熟练地谈起,对这些术语的理解却没有达成一致。 下面是从Blue-green ...
  • 数据分析运营---A/B测试中20个必须知道的问题

    万次阅读 多人点赞 2017-04-29 23:49:08
    在网站和移动产品设计和开发中、以及互联网产品运营中,我们经常...虽然传统解决办法多数情况下也是有效的,但A/B 测试A/B Testing)可能是解决这类问题的一个更好的方法。在软件开发中,产品需求通过多种技术手段来
  • 在有关于“微服务”、“ DevOps ”、“ Cloud-native ”的讨论中,蓝绿部署、滚动发布、 A/B 测试、灰度发布,这三种部署方式往往同时出镜。 那么问题来了,蓝绿部署、滚动发布、 A/B 测试、灰度发布,这四者之间...
  • 在项目过程中,我们有很多时候,觉得用户改怎么样?...等等这些问题,实际上,大部分的用户是不知道的,这时候,我们不防先用A/B测试工具实验一把,将用户真实的反应统计下来,这样我们就能一步步离用户近了!
  • AB test就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时...
  • 在介绍贝叶斯学派的A/B测试之前,先简单地介绍下传统的频率学派的A/B测试方法(补充一下,A/B测试,目前市面上的主流方法,就是频率学派和贝叶斯学派这两种)。   频率学派A/B测试方法   频率学派A/B...
  • df2.user_id.nunique() 290584

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,594,340
精华内容 637,736
关键字:

a/b测试