Odchylenia standardowe i wariancje

Średnia i mediana listy liczb są miarami czegoś centralnego: mediana dosłownie znajduje się na środku listy, podczas gdy średnia jest skutecznie w środku dopiero po zważeniu wszystkich pozycji na liście według ich wartości. Ale główne tendencje to tylko jedna rzecz, którą możesz chcieć wiedzieć o swoich danych. Równie ważne jest pytanie, jak daleko od siebie oczekujesz typowych wartości, które nazwiemy rozkładem twoich danych. Możesz sobie wyobrazić zdefiniowanie zakresu swoich danych na wiele sposobów. Jak już powiedzieliśmy, możesz użyć definicji implementowanej przez funkcję zakresu: zakres jest definiowany przez wartości min i maks. Ta definicja pomija dwie rzeczy, których możemy chcieć od rozsądnej definicji rozprzestrzeniania się:

  • Spread powinien obejmować tylko większość danych, a nie wszystkie.
  • Rozpiętość nie powinna być całkowicie determinowana przez dwie najbardziej skrajne wartości w zbiorze danych, które często są wartościami odstającymi, które nie są reprezentatywne dla całego zestawu danych.

Wartości min i max idealnie pasują do wartości odstających, co czyni je dość kruchymi definicjami rozrzutu. Innym sposobem myślenia o tym, co jest nie tak z definicją zakresu minimalnego i maksymalnego, jest rozważenie, co się stanie, jeśli zmienisz resztę danych, pozostawiając te dwie skrajne wartości bez zmian. W praktyce możesz przenieść resztę danych w dowolne limity i uzyskać takie same min. I maks. Innymi słowy, definicja zakresu w oparciu o min i max efektywnie zależy tylko od dwóch twoich punktów danych, niezależnie od tego, czy masz dwa punkty danych czy dwa miliony punktów danych. Ponieważ nie należy ufać żadnemu podsumowaniu danych, które nie jest wrażliwe na znaczną większość punktów danych, przejdziemy do lepszej definicji rozprzestrzeniania się zestawu danych.

Istnieje wiele sposobów, aby spróbować spełnić opisane wcześniej wymagania dotyczące dobrego liczbowego podsumowania danych. Na przykład możesz zobaczyć, który zakres zawiera 50% twoich danych i jest wyśrodkowany wokół mediany. W R jest to dość łatwe do zrobienia:

c(quantile(heights, probs = 0.25), quantile(heights, probs = 0.75))

Lub możesz chcieć bardziej obejmować i znaleźć zakres, który zawiera 95% danych:

c(quantile(heights, probs = 0.025), quantile(heights, probs = 0.975))

To są naprawdę bardzo dobre miary rozprzestrzeniania się twoich danych. Kiedy pracujesz z bardziej zaawansowanymi metodami statystycznymi, tego rodzaju zakresy będą pojawiać się wielokrotnie. Ale historycznie statystycy stosowali nieco inną miarę rozprzestrzeniania się: w szczególności zastosowali definicję zwaną wariancją. Z grubsza chodzi o to, aby zmierzyć, jak daleko przeciętnie dana liczba w twoim zbiorze danych jest od średniej wartości. Zamiast formalnej definicji matematycznej, zdefiniujmy wariancję obliczeniowo, pisząc naszą własną funkcję wariancji:

my.var <- function(x) {

m <- mean(x)

return(sum((x – m) ^ 2) / length(x))

}

Jak zawsze sprawdźmy, czy nasza implementacja działa, porównując ją z var R :

my.var(heights) – var(heights)

Robimy tylko takie sobie zadanie dopasowania implementacji R var. Teoretycznie może to być kilka przyczyn, z których większość to przykłady tego, jak coś może pójść nie tak, gdy założymy, że arytmetyka zmiennoprzecinkowa jest całkowicie dokładna. Ale jest jeszcze jeden powód, dla którego nasz kod nie działa w taki sam sposób, jak wbudowana funkcja w R: formalna definicja wariancji nie dzieli się przez długość wektora, ale raczej przez długość wektora minus jeden. Dzieje się tak, ponieważ wariancja, którą można oszacować na podstawie danych empirycznych, z dość subtelnych powodów okazuje się tendencyjna w dół w stosunku do jej prawdziwej wartości. Aby to naprawić dla zestawu danych z n punktami, zwykle mnożymy swoją ocenę wariancji przez współczynnik skalowania n / (n – 1), co prowadzi do ulepszonej wersji my.var:

my.var <- function(x) {

m <- mean(x)

return(sum((x – m) ^ 2) / (length(x) – 1))

}

my.var(heights) – var(heights)

W tej drugiej wersji my.var doskonale dopasowujemy oszacowanie wariancji przez R. Obawy o zmiennoprzecinkowe, które zgłosiliśmy wcześniej, mogłyby z łatwością pojawić się, gdybyśmy użyli dłuższych wektorów, ale wydaje się, że nie mają znaczenia w przypadku zestawu danych o tym rozmiarze. Wariancja jest bardzo naturalną miarą rozprzestrzeniania się naszych danych, ale niestety jest znacznie większa niż prawie każda z wartości w naszym zbiorze danych. Jednym oczywistym sposobem na dostrzeżenie tego niedopasowania w skali jest spojrzenie na wartości, które są o jedną jednostkę wariancji oddalone od średniej:

c(mean(heights) – var(heights), mean(heights) + var(heights))

#[1] 51.56409 81.17103

Ten zakres jest w rzeczywistości większy niż zakres całego oryginalnego zestawu danych:

c(mean(heights) – var(heights), mean(heights) + var(heights))

#[1] 51.56409 81.17103

range(heights)

#[1] 54.26313 78.99874

Powodem, dla którego jesteśmy tak daleko poza naszymi oryginalnymi danymi, jest to, że zdefiniowaliśmy wariancję, mierząc kwadratową odległość każdej liczby na naszej liście od wartości średniej, ale nigdy nie cofnęliśmy kroku kwadratu. Aby przywrócić wszystko do oryginalnej skali, musimy zastąpić wariancję odchyleniem standardowym, które jest tylko pierwiastkiem kwadratowym wariancji:

my.sd <- function(x) {

return(sqrt(my.var(x)))

}

Zanim zrobimy cokolwiek innego, zawsze dobrze jest sprawdzić, czy Twoja implementacja ma sens w stosunku do R, który nazywa się sd:

my.sd (heights) – sd (heights)

Ponieważ teraz obliczamy wartości we właściwej skali, warto odtworzyć nasze oszacowanie zakresu naszych danych, patrząc na wartości, które są o jedną jednostkę standardowego odchylenia od średniej:

c(mean(heights) – sd(heights), mean(heights) + sd(heights))

# [1] 62.52003 70.21509

range(heights)

#[1] 54.26313 78.99874

Teraz, gdy używamy jednostek odchyleń standardowych zamiast jednostek odchyleń, jesteśmy w stałym zakresie naszych danych. Byłoby jednak miło dowiedzieć się, jak mocno jesteśmy w danych. Jednym ze sposobów jest porównanie zakresu opartego na odchyleniu standardowym z zakresem zdefiniowanym za pomocą kwantyli:

c(mean(heights) – sd(heights), mean(heights) + sd(heights))

# [1] 62.52003 70.21509

c(quantile(heights, probs = 0.25), quantile(heights, probs = 0.75))

# 25% 75%

#63.50562 69.17426Używając funkcji kwantyli, możemy zobaczyć, że około 50% naszych danych jest oddalone o mniej niż jedno standardowe odchylenie od średniej. Jest to dość typowe, szczególnie w przypadku danych o kształcie, jaki mają dane wysokości. Aby jednak ostatecznie sprecyzować ten pomysł na temat kształtu naszych danych, musimy zacząć wizualizować nasze dane i zdefiniować formalne terminy opisujące kształt danych

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *