Google analytics 如何为几个内容实验选择变体?

Google analytics 如何为几个内容实验选择变体?,google-analytics,content-experiments,Google Analytics,Content Experiments,我正在使用Javascript API进行谷歌分析内容实验,您似乎有两个选择: 一次运行一个实验,让Google分配变量,您可以使用chooseVariation(),或 一次运行几个实验,并使用setChosenVariation() (1) 让谷歌控制分配给每个变体的用户数量,这是我需要的,但我有几个实验。这似乎很基本。我遗漏了什么?当同时运行多个实验时,问题是如果一个实验的访问者与站点上运行的另一个实验的元素交互,那么很难解释这些交互效果。这会扭曲你的数据,并导致一些错误的结论。如果你对如

我正在使用Javascript API进行谷歌分析内容实验,您似乎有两个选择:

  • 一次运行一个实验,让Google分配变量,您可以使用
    chooseVariation()
    ,或
  • 一次运行几个实验,并使用
    setChosenVariation()

  • (1) 让谷歌控制分配给每个变体的用户数量,这是我需要的,但我有几个实验。这似乎很基本。我遗漏了什么?

    当同时运行多个实验时,问题是如果一个实验的访问者与站点上运行的另一个实验的元素交互,那么很难解释这些交互效果。这会扭曲你的数据,并导致一些错误的结论。如果你对如何分析多个并行实验有绝对信心,那么安全地一次运行一个实验是可以的。

    我认为你没有遗漏任何东西。我的理解是,GA实验API允许您将访问者分配到单个a/B/N测试的任何版本,包括:

    但是,只有在页面上加载api.js时指定实验ID,此函数才可用

    如果你想做的是同时在一个页面上运行多个A/B测试,这实际上是多变量测试,不幸的是,这在GA内容实验中是“开箱即用”的(谷歌网站优化器曾经提供过)。您仍然可以使用自己的bucketing“伪造”它,代码如下:

    <!-- 1. Load the Content Experiments JavaScript Client -->
    <script src="//www.google-analytics.com/cx/api.js"></script>
    
    <!-- 2. See if the visitor has seen an experiment already -->
    <script>
    // loop through all active experiments server-side. 
    cxApi.getChosenVariation(
     $experimentId
     );
    
    <!-- 3. Bucket the visitor if he isn't bucketed already -->
    // loop through your live experiments 
      cxApi.setChosenVariation(
        $chosenVariation,             // The index of the variation shown to the visitor
        $experimentId                 // The id of the experiment the user has been exposed to
      );
    </script>
    
    
    //在服务器端循环所有活动的实验。
    cxApi.getChosenVariation(
    $experimentId
    );
    //循环你的现场实验
    cxApi.setChosenVariation(
    $chosenVariation,//显示给访问者的变量索引
    $experimentId//用户已接触的实验的id
    );
    
    您需要决定是希望访问者一次只查看一个实验,还是同时输入多个实验

    第一个选项可能更可靠,但这意味着您必须将访问者分成相当多的部分,这意味着您的测试需要很长时间才能返回结果

    如果您使用第二种选择,您需要小心:如果您的实验不是独立的,您将无法信任来自Google Analytics的测试结果,因为内容实验中使用的统计测试假设是独立的。即使你的实验是独立的,你也需要在所有变异组合中有一个相等的分割


    我希望这有帮助

    我使用node.js脚本解决了这个问题

    开箱即用的谷歌内容实验让您在以下两个方面进行选择:

    • 加载仅为1个实验修补的cxApi
    • 加载cxApi plain,并失去调用chooseVariation()函数的能力,使您实现自己的选择算法(这是一个遗憾,因为google的多武装bandit想法真的很聪明)
    因此,我做了一些反求工程,对谷歌CXAPI API进行了1次实验,结果证明它只是在文件中间捆绑了实验信息(变化权值),我尝试手工触摸多个实验束,现在我可以调用<代码> CXAPI。用于每个实验,效果很好

    权重每12小时改变一次,所以我实现了自动化,我创建了一个node.js小应用程序,可以从谷歌下载cxApi,然后为您指定的每个实验重复下载,并在cxApi上修补您的所有实验

    瞧!,在任何页面上进行多个实验

    这是回购协议:,随意分叉


    这个node.js应用程序将为多个实验修补cxApi,还将打包(并缩小)您的变体

    这个解决方案对我来说非常有效。好处是:

    • 不需要node.js
    • 无需更改站点-站点保持完全可缓存
    • 谷歌多武装土匪使用的方法,没有补丁
    • 易于维护
    Javascript模块提供执行多个Google实验的所有功能:

    var runExperiment=(函数(jQ){
    var apiUrl='/ga-experiments-api.php?preview=true&experimentId=',
    实验者,
    变化;
    var chooseAndApplyNewVariation=函数(){
    如果(jQ的类型!=“未定义”){
    jQ.ajax({
    键入:“get”,
    url:apiUrl+experimentId,
    成功:功能(数据、状态){
    var choosenVariation=data.choosenVariation;
    如果(选择变量的类型!='undefined'&&choosenVariation>=0){
    cxApi.setChosenVariation(choosenVariation,experimentId);
    应用变量(选择变量);
    }
    }
    });
    }  
    };
    变量applyVariation=函数(chosenVariation){
    变量变量函数=(变量类型[chosenVariation]=“函数”)?变量[chosenVariation]:false;
    if(变量函数){
    variationFunction.apply();
    sentGaEvent();
    log(experimentId,chosenVariation);
    }
    };
    var sentGaEvent=函数(){
    如果(ga的类型!==“未定义”){
    ga(‘发送’、‘事件’、‘实验’、‘视图’);
    }
    };
    返回函数(实验){
    experimentId=experiment.id;
    变化=实验。变化;
    if(cxApi的类型!==“未定义”){
    var chosenVariation=cxApi.getChosenVariation(实验ID);
    如果(选择变量>=0){
    应用变异(选择变异);
    }否则{
    选择并应用新变量();
    }
    }
    
    <!-- 1. Load the Content Experiments JavaScript Client -->
    <script src="//www.google-analytics.com/cx/api.js"></script>
    
    <!-- 2. See if the visitor has seen an experiment already -->
    <script>
    // loop through all active experiments server-side. 
    cxApi.getChosenVariation(
     $experimentId
     );
    
    <!-- 3. Bucket the visitor if he isn't bucketed already -->
    // loop through your live experiments 
      cxApi.setChosenVariation(
        $chosenVariation,             // The index of the variation shown to the visitor
        $experimentId                 // The id of the experiment the user has been exposed to
      );
    </script>