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; }