Расчет медианы
Медиана – это полусумма срединных значений ранжированного ряда.
К примеру, возьмем ряд (например, это также может быть выборка из БД):
23, 11, 21, 5, 17, 66, 34, 9
..и ранжируем (упорядочим) его:
5, 9, 11, 17, 21, 23, 34, 66
Срединными (лежащими в середине) значениями являются числа 17 и 21.
Их сумма: 17 + 21 = 38
Медиана данного ряда: 38 / 2 = 19
Вот и вся медиана.
Обычно данная величина нужна для расчета, например, среднего значения зарплаты по всей компании, среднего срока нахождения товаров на складе, среднего количества участников форумов, т.е. используется в разных масштабах и пределах.
В простом приближении, если в MySQL есть таблица ‘table’ вида:
то расчет медианы выглядит так:
а на JavaScript расчет медианы выглядит так:
Использованы статьи:
Расчет медианы в PHP+MySQL
Wiki: Медиана (статистика)
Контрольная работа: Мода. Медиана. Способы их расчета
К примеру, возьмем ряд (например, это также может быть выборка из БД):
23, 11, 21, 5, 17, 66, 34, 9
..и ранжируем (упорядочим) его:
5, 9, 11, 17, 21, 23, 34, 66
Срединными (лежащими в середине) значениями являются числа 17 и 21.
Их сумма: 17 + 21 = 38
Медиана данного ряда: 38 / 2 = 19
Вот и вся медиана.
Обычно данная величина нужна для расчета, например, среднего значения зарплаты по всей компании, среднего срока нахождения товаров на складе, среднего количества участников форумов, т.е. используется в разных масштабах и пределах.
В простом приближении, если в MySQL есть таблица ‘table’ вида:
| id | value |
|---|---|
| 1 | 13 |
| 2 | 444 |
| 3 | 0 |
| 4 | 67 |
| 5 | 54 |
| 6 | 21 |
| 7 | 49 |
| 8 | 72 |
то расчет медианы выглядит так:
<?php $mediana = 0; $i = 0; // счетчик количества элементов массива $mediana_data = array(); // массив для значений из БД $db = mysqli_connect('host','login','pass','dbname'); $query = 'SELECT value FROM table ORDER BY value ASC'; // упорядочим данные заранее $st = $db->query($query); while ($result = mysqli_fetch_assoc($st)) { $mediana_data[] = $result['value']; $i++; } // вычисляем медиану
// если количество элементов четное, то имеется два срединных значения,
// по которым вычисляется медиана if (is_int($i/2)) { $el = $i/2; $el2 = $el + 1; $mediana = ($mediana_data[$el] + $mediana_data[$el2]) / 2; } // если количество элементов нечетное, то медиана равна центральному элементу ряда else { $el = round($i/2); $mediana = $mediana_data[$el]; } ?>
а на JavaScript расчет медианы выглядит так:
<input type="text" id="data.1" value=""><br>
<input type="text" id="data.2" value=""><br>
<input type="text" id="data.3" value=""><br>
<input type="text" id="data.4" value=""><br>
<input type="text" id="data.5" value=""><br>
<input type="text" id="data.6" value=""><br>
<input type="button" value="Расчитать медиану" onclick="calculation_mediana()"><br>
<input type="text" id="mediana" value=""><br>
<script language="javascript">
function calculation_mediana() {
var input_data = new Array();
var el_mediana = document.getElementById('mediana');
if (! el_mediana) {
return;
}
for (var i=1; i<=6; i++) {
var el = document.getElementById('data.' + i);
if (el) {
el.value = el.value.replace(/,/g, '.');
el.value = parseFloat(el.value) || 0;
input_data[input_data.length] = el.value;
}
}
if (input_data.length == 0) {
el_mediana.value = 0;
return;
}
input_data.sort(sort_number);
var length_ary = input_data.length/2;
if (length_ary == Math.ceil(input_data.length/2)) {
el_mediana.value = (parseFloat(input_data[length_ary-1])+parseFloat(input_data[length_ary]))/2;
} else {
length_ary == Math.ceil(length_ary);
el_mediana.value = input_data[length_ary-1];
}
}
function sort_number(a,b) {
return a - b;
}
</script>
Использованы статьи:
Расчет медианы в PHP+MySQL
Wiki: Медиана (статистика)
Контрольная работа: Мода. Медиана. Способы их расчета
Похожие материалы:
Комментарии:
29 Июня 2011 (14:52:41)
olga
(гость)
• ответить
А количество серединных значений, которые берутся для расчета медианы зависит от количесвта значений в ранжируемом ряду?
23 Августа 2012 (12:48:06)
Serega
(гость)
• ответить
ошибка:
else {
length_ary == Math.ceil(length_ary);
el_mediana.value = input_data[length_ary-1];
}
заменить на
else {
length_ary = Math.ceil(length_ary);
el_mediana.value = input_data[length_ary-1];
}
else {
length_ary == Math.ceil(length_ary);
el_mediana.value = input_data[length_ary-1];
}
заменить на
else {
length_ary = Math.ceil(length_ary);
el_mediana.value = input_data[length_ary-1];
}
13 Мая 2026 (10:59:47)
Tinys
(гость)
• ответить
[url=https://tinyfishing2.ioTtiny fishing[/url] is a casual mobile game that integrates fishing with resource management components. Participants will engage in a fishing expedition, where they can capture several species of fish, enhance their gear, and augment their fishing skills.
13 Мая 2026 (11:02:10)
Tinys
(гость)
• ответить
Tiny fishing is a casual mobile game that integrates fishing with resource management components. Participants will engage in a fishing expedition, where they can capture several species of fish, enhance their gear, and augment their fishing skills.
29 Июня 2026 (06:58:37)
Eaoralty
• ответить
This is a super clear explanation of how to calculate the median! I always get it confused with the mean, so seeing the step-by-step with examples really helps. It reminds me a bit of figuring out the perfect line in Snow Rider . Good stuff for practical applications too.
29 Августа 2026 (10:45:27)
sasafarbensol
(гость)
• ответить
Good day, everyone! I was comparing a few online entertainment platforms connected with Australia when Boombet CasinoBoombet Casino appeared in my search. Since I had never used it, I wanted to learn more before making assumptions. I read several user discussions and noticed that people seemed to value different things. Some were interested in game variety, while others paid attention to navigation and the way information was presented. I actually enjoyed that contrast because it helped me see the platform from several angles. I generally find mixed feedback more useful than a collection of identical comments.