function _extract_daily_data in Acquia Lift Connector 7.2
Extracts daily stats from the reporting API into results that can be displayed.
2 calls to _extract_daily_data()
- acquia_lift_report_audience in ./
acquia_lift.admin.inc - Builds the audience-specific report.
- acquia_lift_report_daily_conversions in ./
acquia_lift.admin.inc - AJAX callback to return the daily conversion report.
File
- ./
acquia_lift.admin.inc, line 1108 - acquia_lift.admin.inc Provides functions needed for the admin UI.
Code
function _extract_daily_data($daily_data, $personalization_name) {
$daily_results = array();
$i = 0;
$counts = $goals = $vals = array();
foreach ($daily_data as $variation_results) {
$variation = $variation_results['variation_id'];
foreach ($variation_results['results'] as $stats) {
$day = $stats['timestamp'];
$results = $stats['result'];
if (!isset($counts[$variation])) {
$counts[$variation] = $goals[$variation] = $vals[$variation] = 0;
}
$counts[$variation] += $results['decision_count'];
$goals[$variation] += $results['conversion_count'];
$vals[$variation] += $results['conversion_value'];
$rate = $counts[$variation] > 0 ? $goals[$variation] / $counts[$variation] : 0;
$mean = $counts[$variation] > 0 ? $vals[$variation] / $counts[$variation] : 0;
$goal_value = $goals[$variation] ? floor($vals[$variation] / $goals[$variation]) : 1;
// Calculate confidence bounds for conversion rate.
$sd = $counts[$variation] > 0 ? sqrt($rate * (1 - $rate) / $counts[$variation]) : 0;
// We want a 90% confidence interval, which means we need the 95th
// quantile, given the two tails of the distribution.
module_load_include('inc', 'acquia_lift', 'includes/AcquiaLiftLearnReport');
$quantile = AcquiaLiftLearnReport::$normal_quantiles[4];
$upper = $goal_value * ($rate + $quantile * $sd);
$lower = $goal_value * ($rate - $quantile * $sd);
$daily_results[] = array(
'option_id' => $variation,
'option_label' => _get_variation_label($variation, $personalization_name),
'goals' => $results['conversion_count'],
'count' => $results['decision_count'],
'date' => $day,
'timestamp' => strtotime($day),
'conversion' => _format_report_percentage($rate),
'conversion_value' => _format_report_number($mean),
'estimated_value' => _format_report_number($mean, TRUE, 4),
'margin_error' => _format_report_number(($upper - $lower) / 2, TRUE, 4),
'counter' => $i,
'control' => $i === 0,
);
}
$i++;
}
return $daily_results;
}