БлогNot. Медиана или среднее?..

Медиана или среднее?..

На практике, особенно когда мы имеем дело с "хвостатыми" (сильно неравномерными) выборками достаточно большого объёма, медиана гораздо точней и устойчивей (робастней) простого арифметического среднего. Хрестоматийные примеры - "средняя температура по больнице" или отчёты российских органов власти о "средних зарплатах". Так, 10 голодранцев трудящихся с зарплатами по 10000 руб. и один "менеджер" с 200000 руб. дают среднюю зарплату более 27 тыс. Медиана же этой выборки так и равна 10000.

Ниже приводится код простейших функций для вычисления медианы и среднего на PHP, а также тест. "Правильность" данных, например, являются ли все индексы массива числовыми, не проверяется. Этого легко добиться, если преобразовать массив оператором вида $array=array_values($array);

<?php
function median ($arr) { //Медиана от массива $arr
 sort ($arr);
 $count = count($arr);
 $middle = floor($count/2);
 if ($count%2) return $arr[$middle];
 else return ($arr[$middle-1]+$arr[$middle])/2;
}

function average ($arr) { //Арифметическое среднее от массива $arr
 return array_sum($arr)/count($arr); 
}

$a = array (4,2,3,1,5);
print_r ($a);
echo '<br>Среднее='.sprintf("%.2f",average($a)).', медиана='.sprintf("%.2f",median($a)).'<br>';
$a[5]=1e6;
print_r ($a);
echo '<br>Среднее='.sprintf("%.2f",average($a)).', медиана='.sprintf("%.2f",median($a));
?>

Результат выполнения скрипта:

Array ( [0] => 4 [1] => 2 [2] => 3 [3] => 1 [4] => 5 ) 
Среднее=3.00, медиана=3.00
Array ( [0] => 4 [1] => 2 [2] => 3 [3] => 1 [4] => 5 [5] => 1000000 ) 
Среднее=166669.17, медиана=3.50

Памятка в тему: самый короткий код для суммирования всех элементов массива на PHP. Массив загружается из текстового файла с именем file.txt, расположенного в текущей папке.

<?php @array_sum(file('file.txt', FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES)); ?>

15.05.2013, 17:57 [11844 просмотра]


теги: статистика памятка php

К этой статье пока нет комментариев, Ваш будет первым