Nauka odróżniania średnich i median od siebie jest jedną z najbardziej żmudnych części typowej klasy „Intro to Stats”. Zapoznanie się z tymi pojęciami może trochę potrwać, ale naprawdę uważamy, że musisz je rozróżnić, jeśli chcesz poważnie pracować z danymi. W trosce o lepszą pedagogikę postaramy się wyjaśnić znaczenie tych terminów na dwa całkiem różne sposoby. Najpierw pokażemy Ci, jak obliczać średnią i medianę algorytmicznie. Dla większości hakerów kod jest bardziej naturalnym językiem do wyrażania pomysłów niż symboli matematycznych, dlatego uważamy, że zebranie własnych funkcji w celu obliczenia średnich i median prawdopodobnie będzie miało więcej sensu niż pokazanie definicji równań dla tych dwóch statystyk. W dalszej części tej części pokażemy, jak rozpoznać różnicę między średnią a medianą, patrząc na kształt danych na histogramach i wykresach gęstości. Obliczenie średniej jest niezwykle łatwe. W R zwykle używasz funkcji średniej. Oczywiście, mówiąc o użyciu funkcji czarnej skrzynki, nie oddaje to zbyt wiele intuicji, czym jest środek, więc zastosujmy naszą własną wersję środka, którą nazwiemy my.mean. To tylko jedna linia kodu R, ponieważ odpowiednie pojęcia są już dostępne jako dwie inne funkcje w R: suma i długość.
my.mean <- function(x) {
return(sum(x) / length(x))
}
Ten pojedynczy wiersz kodu ma znaczenie: po prostu sumujesz wszystkie liczby w wektorze, a następnie dzielisz sumę przez długość wektora. Jak można się spodziewać, funkcja ta generuje średnią wartość liczb w wektorze, x. Średnia jest tak łatwa do obliczenia częściowo, ponieważ nie ma nic wspólnego z posortowanymi pozycjami liczb na liście. Mediana jest wręcz przeciwna: całkowicie zależy od względnej pozycji liczb na liście. W R normalnie obliczysz medianę za pomocą mediany, ale napiszmy naszą wersję, którą nazwiemy my.median:
my.median <- function(x) {
sorted.x <- sort(x)
if (length(x) %% 2 == 0)
{
indices <- c(length(x) / 2, length(x) / 2 + 1)
return(mean(sorted.x[indices]))
}
else
{
index <- ceiling(length(x) / 2)
return(sorted.x[index])
}
}
Samo zliczenie linii kodu powinno ci powiedzieć, że mediana wymaga nieco więcej pracy, aby obliczyć niż średnia. W pierwszej kolejności musieliśmy posortować wektor, ponieważ mediana jest zasadniczo liczbą znajdującą się w środku posortowanego wektora. Dlatego mediana jest również nazywana 50. percentylem lub 2. kwartylem. Po posortowaniu wektora możesz łatwo obliczyć dowolny z pozostałych percentyli lub kwantyli, dzieląc listę na dwie części w innym miejscu wzdłuż jej długości. Aby uzyskać 25. percentyl (znany również jako 1. kwartyl), możesz podzielić listę na jedną czwartą jej długości. Jedynym problemem związanym z tymi nieformalnymi definicjami pod względem długości jest to, że nie mają one sensu, jeśli lista zawiera parzystą liczbę pozycji. Jeśli nie ma jednej liczby, która dokładnie znajduje się w środku zbioru danych, musisz wykonać pewne sztuczki, aby uzyskać medianę. Kod, który napisaliśmy w poprzednim przykładzie, obsługuje przypadek wektora parzystej długości, biorąc średnią z dwóch pozycji, które byłyby medianą, gdyby lista zawierała nieparzystą liczbę pozycji. Aby wyjaśnić tę kwestię, oto prosty przykład, w którym mediana musi być wymyślona przez wpisy uśredniające i inny przypadek, w którym mediana jest dokładnie równa środkowej pozycji wektora:
my.vector <- c(0, 100)
my.vector
# [1] 0 100
mean(my.vector)
#[1] 50
median(my.vector)
#[1] 50
my.vector <- c(0, 0, 100)
mean(my.vector)
#[1] 33.33333
median
Wracając do naszego pierwotnego zestawu danych dotyczących wysokości i odważników, obliczmy średnią i medianę danych dotyczących wysokości. To da nam również możliwość przetestowania naszego kodu:
my.mean(heights)
#[1] 66.36756
my.median(heights)
#[1] 66.31807
mean(heights) – my.mean(heights)
#[1] 0
median(heights) – my.median(heights)
#[1] 0
Średnia i mediana w tym przykładzie są bardzo blisko siebie. Za chwilę wyjaśnimy, dlaczego tak jest, biorąc pod uwagę kształt danych, z którymi pracujemy. Ponieważ właśnie opisaliśmy dwie z trzech najważniejszych liczb z kursu statystyk wprowadzających, możesz zastanawiać się, dlaczego nie wspomnieliśmy o tym trybie. Porozmawiamy o trybach za chwilę, ale jest powód, dla którego do tej pory go zignorowaliśmy: tryb, w przeciwieństwie do średniej lub mediany, nie zawsze ma prostą definicję rodzajów wektorów, z którymi pracowaliśmy . Ponieważ automatyzacja nie jest łatwa, R nie ma wbudowanej funkcji, która wytworzy tryb wektora liczb.
Definiowanie trybu dowolnego wektora jest skomplikowane, ponieważ musisz powtórzyć liczby w wektorze, jeśli zamierzasz zdefiniować tryb numerycznie. Gdy liczby w wektorze mogą być dowolnymi wartościami zmiennoprzecinkowymi, jest mało prawdopodobne, aby jakakolwiek pojedyncza wartość liczbowa powtórzyła się w wektorze. Z tego powodu tryby są tak naprawdę zdefiniowane wizualnie tylko dla wielu rodzajów zestawów danych.
To powiedziawszy, jeśli nadal nie masz pewności co do matematyki i zastanawiasz się, jaki powinien być teoretyczny tryb, powinna to być liczba występująca najczęściej w twoim zestawie danych.