function improvedPageHinkley($list, $lambda)
{
    $alphaPH = function ($t) {
        $used_list = array_slice($list, 0, $t);
        return sqrt(ll_variance($used_list));
    };
    $mean = ll_mean($used_list);
    return _PageHinkleyStatistic($list, count($list), ll_sign($list[count($list) - 1] - $mean), $alphaPH(count($list)) / 2) > $lambda;
}
function iteratedMannWhitney($list, $threshold)
{
    $changepoints = array();
    for ($i = 0; $i < count($list); $i++) {
        $sum = $counts = 0;
        for ($j = $i; $j < count($list); $j++) {
            for ($k = 0; $k < $i; $k++) {
                $sum += ll_sign($list[$k] - $list[$j]);
                $counts++;
            }
        }
        if (abs($sum) / $counts > $threshold) {
            $changepoints[] = $i;
        }
    }
    return $changepoints;
}