Výpočet průměru a mediánu v PHP/JS
Jak v jazyce PHP nebo v JavaScriptu spočítat medián.
Při zjišťování nějaké hodnoty z velkého množství dat bývá obvyklé počítat průměr. Ten je ale bohužel hodně náchylný na ovlivnění extrémně malými nebo extrémně velkými hodnotami.
Jak průměr a medián spočítat v PHP?
Průměr
Spočítat průměrnou hodnotu pole je poměrně jednoduché. Stačí součet hodnot (funkce array_sum
) vydělit jejich počtem:
function prumer($pole) {
return array_sum($pole) / count($pole);
}
echo prumer(
array(1, 3, 5)
); // 3
Medián
Medián je zajímavější tím, že se rovná prostřední hodnotě, když se čísla seřadí podle velikosti.
Z pěti čísel 1, 2, 2, 3, 9
tak bude medián odpovídat 2
, protože je uprostřed.
Pro výpočet stačí tedy nejprve pole seřadit funkcí sort
a následně vypsat prostřední položku. Ta se zjistí vydělením počtu všech položek pole (spočítá je funkce count
) číslem dvě a zaokrouhlením (funkce round
). Protože jsou indexy pole číslovány od nuly, ještě se odečte jednička.
Výpočet mediánu v PHP potom může vypadat následovně:
function median($pole) {
sort($pole);
return $pole[round(count($pole) / 2) - 1];
}
echo median(
array(1, 2, 2, 3, 9)
); // 2
Nudná matematická teorie ohledně mediánu je případně na následujících stránkách:
Průměr a medián v JS
Medián v JS
Výpočet mediánu jde poměrně snadno přepsat do JS:
function median(pole) {
pole = pole.sort();
return pole[Math.round(pole.length / 2) - 1];
}
alert(median(
[1, 2, 2, 3, 9]
));
Průměr v JS
V JavaScriptu je počítání průměru pole trochu obtížnější, protože oproti PHP nemá zabudovanou funkci pro součet hodnot pole.
Součet pole v JS
Jednoduchá implementace PHP funkce array_sum
do JavaScriptu by mohla vypadat následovně:
function array_sum(array) {
return array.reduce(function(a, b) {
return a + b;
});
}
S ní už je výpočet průměru v JS jednoduchý:
function prumer(pole) {
return array_sum(pole) / pole.length;
}
Komentáře