Энциклопедия Turbo Pascal. Главы 5-8 Страница 6. Медианы
|
Страница 6 из 37
Медианы
Медианой выборки является среднее значение из всего упорядо- ченного набора значений. Например, для выборки
1 2 3 4 5 6 7 8 9
медианой будет 5, поскольку это число находится в середине. В на- боре значений
1 2 3 4 5 6 7 8 9 10
в качестве медианы может использоваться 5 или 6. В хорошо упоря- доченной выборке, какой является выборка с нормальным распределе- нием, среднее значение и медиана имеют очень близкие значения. Однако по мере увеличения отклонения закона распределения выборки от нормального увеличивается разница между медианой и средним значением. Медиана вычисляется путем сортировки выборки в порядке возрастания значений и выбора среднего значения с индексом N/ 2. Результатом приводимой ниже функции "Median" является значе- ние среднего элемента выборки. Для сортировки массива данных ис- пользуется модифицированная версия процедуры быстрой сортировки, разработанной в главе 1:
{ версия процедуры быстрой сортировки для упорядочения целых чисел }
procedure QuickSort(var item: DataArray; count: integer); procedure qs(l, r: integer; var it: DataArray); var i, j: integer; x, y: DataItem; begin i: = l; j: = r; x: = it[(l+r) div 2];
repeat while it[i] < x do i:= i+1; while x < it[j] do j:= j-1; if i<=j then begin y:= it[i]; it[i]:= it[j]; it[j]:= y; i: = i+1; j:= j-1; end; until i>j; if l<j then qs(l, j, it); if l<r then qs(i, r, it) end;
begin qs(1, count, item); end; {QuickSorte}
{ поиск медианы } function median(data: DataArray; num: integer): real; var dtemp: DataArray; t: integer;
begin for t:=1 to num do dtemp[t]:=data[t]; QuickSort(dtemp, num); median: = dtemp[num div 2]; end;
|