Как вы можете выбрать варианты для нескольких экспериментов с контентом?
Я использую Javascript API для экспериментов с контентом Google Analytics, и кажется, что у вас есть два варианта:
- Проводите по одному эксперименту за раз, и Google назначит вариант, который вы можете использовать
chooseVariation()
, или же - Проведите несколько экспериментов одновременно и назначьте вариант самостоятельно, используя
setChosenVariation()
(1) позволяет Google контролировать количество пользователей, назначенных для каждого варианта, что мне нужно, но у меня есть несколько экспериментов. Это кажется довольно простым. Что мне не хватает?
4 ответа
Я не думаю, что вы ничего не упустили. Насколько я понимаю, API GA Experiment позволяет вам выделить посетителя для любой версии отдельного теста A/B/N с помощью команды Choose Variation:
cxApi.chooseVariation();
Однако эта функция доступна только в том случае, если вы указали идентификатор эксперимента при загрузке файла api.js на странице.
Если вы хотите одновременно выполнить несколько A / B-тестов на одной странице, это действительно многовариантное тестирование, и, к сожалению, оно недоступно "из коробки" в экспериментах с содержанием GA (раньше был доступен с Оптимизатором веб-сайта). Вы все еще можете "подделать" его, используя свое собственное группирование, с помощью кода:
<!-- 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>
Вам нужно будет решить, хотите ли вы, чтобы посетитель просматривал только один эксперимент за раз или вводил несколько экспериментов одновременно.
Первый вариант, вероятно, более надежен, но означает, что вам придется разделить своего посетителя на множество сегментов, а это означает, что ваши тесты займут много времени, прежде чем вы получите результат.
Если вы используете второй вариант, вам нужно быть осторожным: если ваши эксперименты не являются независимыми, вы не сможете доверять результатам теста из Google Analytics, поскольку статистические тесты, используемые в экспериментах с контентом, предполагают независимость. Даже если ваши эксперименты независимы, вы должны иметь равное разделение между всеми комбинациями вариантов.
Надеюсь, это поможет!
При одновременном запуске множества экспериментов проблема заключается в том, что если у вас есть посетители из одного эксперимента, которые взаимодействуют с элементами другого эксперимента, запущенного на вашем сайте, то эти интерактивные эффекты трудно учесть. Это исказит ваши данные и приведет к ошибочным выводам. Если вы абсолютно уверены в том, как анализировать несколько параллельных экспериментов, все будет в порядке и проводите по одному эксперименту за раз.
Это решение работает очень хорошо для меня. Преимущества:
- не требуется node.js
- никаких изменений на сайте не требуется - сайт остается полностью кэшируемым
- Используется подход Google Multi-Armed-Bandit, патча нет
- легко обслуживаемый
Модуль Javascript, предоставляющий все функциональные возможности для выполнения нескольких экспериментов Google:
var runExperiment = (function(jQ) {
var apiUrl = '/ga-experiments-api.php?preview=true&experimentId=',
experimentId,
variations;
var chooseAndApplyNewVariation = function() {
if (typeof jQ !== 'undefined') {
jQ.ajax({
type: 'get',
url: apiUrl + experimentId,
success: function(data, status){
var choosenVariation = data.choosenVariation;
if (typeof choosenVariation !== 'undefined' && choosenVariation >= 0) {
cxApi.setChosenVariation(choosenVariation, experimentId);
applyVariation(choosenVariation);
}
}
});
}
};
var applyVariation = function(chosenVariation) {
var variationFunction = (typeof variations[chosenVariation] === 'function') ? variations[chosenVariation] : false;
if (variationFunction) {
variationFunction.apply();
sentGaEvent();
console.log(experimentId, chosenVariation);
}
};
var sentGaEvent = function() {
if (typeof ga !== 'undefined') {
ga('send', 'event', 'experiment', 'view');
}
};
return function(experiment) {
experimentId = experiment.id;
variations = experiment.variations;
if (typeof cxApi !== 'undefined') {
var chosenVariation = cxApi.getChosenVariation(experimentId);
if (chosenVariation >= 0) {
applyVariation(chosenVariation);
} else {
chooseAndApplyNewVariation();
}
}
};
})(jQuery);
Javascript Snippet для запуска одного эксперимента - может быть интегрирован несколько раз на странице:
(function(jQ) {
var experiment = {
'id': 'RHwa-te2T_WnsuZ_L_VQBw',
'variations': [
function() {},
function() {
jQ('#nav #menu-item-2000927 a').text('Shop + Abo');
}]
};
runExperiment(experiment);
}(jQuery));
PHP (API) для генерации новых вариантов через API Google, я использовал этот класс:
https://github.com/thomasbachem/php-gacx
<?php
use UnitedPrototype\GoogleAnalytics;
require_once dirname(__FILE__) . '/libs/googleAnalytics/Experiment.php';
$experimentId = (!empty($_GET['experimentId'])) ? $_GET['experimentId'] : null;
$returnData = array(
'experimentId' => $experimentId,
);
try {
$experiment = new GoogleAnalytics\Experiment($experimentId);
$variation = $experiment->chooseNewVariation();
if (is_integer($variation)) {
$returnData['success'] = true;
$returnData['choosenVariation'] = $variation;
}
} catch (Exception $exception) {
$returnData['success'] = false;
$returnData['error'] = $exception;
}
header('Content-Type: application/json');
echo json_encode($returnData);
Я решил это, используя скрипт node.js.
Готовые эксперименты по контенту Google позволяют выбирать между:
- Загрузка cxApi пропатчена только для 1 эксперимента
- Загрузите cxApi plain и лишитесь возможности вызывать функцию chooseVariation(), заставляя вас реализовывать свой собственный алгоритм выбора (что обидно, поскольку идея многорукого бандита в Google действительно умна).
Итак, я провел обратный инжиниринг того, как gx cxApi js пропатчен для 1 эксперимента, оказалось, что он просто связывает информацию об эксперименте (веса вариаций) в середине файла, я экспериментировал, касаясь пакета вручную, добавляя несколько экспериментов, и теперь я могу позвонить cxApi.chooseVariation(experimentId)
для каждого эксперимента и работает красиво!
Вес меняется каждые 12 часов, поэтому я автоматизировал его, я создал небольшое приложение node.js, которое будет загружать cxApi из Google, а затем многократно загружать его для каждого указанного эксперимента и исправлять cxApi со всеми вашими экспериментами на нем.
Вуаля!, несколько экспериментов на любой странице.
Вот репо: https://github.com/benjamine/mutagen, форк по желанию
это приложение node.js исправит cxApi для нескольких экспериментов, а также упакует (и уменьшит) ваши варианты