function tapply_mean($val, $fac) { // resembles a special case of R's tapply function $levels = array(); foreach (range(0, count($fac) - 1) as $i) { $val_i = $val[$i]; $fac_i = $fac[$i]; if (in_array($fac_i, array_keys($levels))) { $levels_fac_i = $levels[$fac_i]; $levels_fac_i[] = $val_i; $levels[$fac_i] = $levels_fac_i; } else { $levels[$fac_i] = array($val_i); } } $means = array(); foreach (array_keys($levels) as $key) { $means[$key] = array_mean($levels[$key]); } return $means; }
function array_regression_a($arr1, $arr2) { return array_mean($arr2) - array_regression_b($arr1, $arr2) * array_mean($arr1); }