Co to jest odległość Gowera?
Odległość Gowera (ang. Gower distance) to miara niepodobieństwa dwóch obiektów opisanych zmiennymi różnych typów: liczbowymi, nominalnymi, porządkowymi i dychotomicznymi. Gower (1971) zaproponował ogólny współczynnik podobieństwa, który łączy takie zmienne w jednej mierze; odległość to 1 minus to podobieństwo. Przydaje się w ankietach, w których obok wieku i dochodu są płeć, miejsce zamieszkania i wykształcenie, a zwykła odległość euklidesowa traci sens.
Jak się ją liczy
Dla każdej zmiennej liczy się odległość cząstkową od 0 do 1, a wynik to ich średnia (zwykła lub ważona):
- zmienna liczbowa: |xi − xj| / R, gdzie R to rozstęp zmiennej w próbie;
- nominalna: 0, gdy kategorie są takie same, 1, gdy różne;
- porządkowa: numery kategorii (rangi) traktowane jak liczby i dzielone przez rozstęp – rozszerzenie dla takich zmiennych opisał Podani (1999);
- brak danych: składowa jest pomijana, a średnia liczona z pozostałych.
Dzięki dzieleniu przez rozstęp żadna zmienna nie dominuje tylko dlatego, że ma dużą skalę. W R odległość liczy funkcja daisy() z pakietu cluster, wywodzącego się z podręcznika Kaufmana i Rousseeuwa (1990).
Przykład
Sześć osób (dane symulowane) opisano wiekiem, dochodem, płcią, regionem i wykształceniem (trzy poziomy). Dla osób 1 i 2 składowe wynoszą: wiek 9/16 = 0.562, dochód 3500/4500 = 0.778, płeć 0, region 1, wykształcenie (wyższe a podstawowe) 1. Odległość Gowera to średnia: 3.340 / 5 = 0.668. Najbardziej podobne są osoby 2 i 4 (0.057). Odległość euklidesowa na samym wieku i dochodzie uznałaby osoby 1 i 3 za niemal identyczne (16 jednostek, bo mają ten sam dochód), choć różnią się regionem i wykształceniem; w danych Gowera dzieli je 0.500.
Do czego jej używać
Macierz odległości Gowera trafia do hierarchicznej analizy skupień lub do metody k-medoidów (PAM), a podział ocenia się wskaźnikiem sylwetki. Można ją też zobrazować skalowaniem wielowymiarowym. Klasyczna metoda k-średnich jej nie przyjmuje, bo liczy średnie w przestrzeni euklidesowej – zob. segmentację respondentów. Odległość Mahalanobisa uwzględnia korelacje, ale tylko między zmiennymi liczbowymi, a indeks Braya–Curtisa służy do liczebności.
Na co uważać
- Rozstęp zależy od próby. Jedna skrajna wartość ściska pozostałe odległości; przy dochodzie rozważ logarytm.
- Równe wagi. Zmienna binarna liczy się tyle samo co ciągła. Wagi (
weights) trzeba uzasadnić merytorycznie. - Typ zmiennej. Zmienną porządkową zapisz jako
ordered; zwykłyfactorzostanie potraktowany jak nominalny.
Odległość Gowera w R
Kod tworzy sześć osób z pięcioma zmiennymi różnych typów, liczy macierz odległości Gowera w daisy(), sprawdza jedną odległość ręcznie i porównuje ją z odległością euklidesową.
Macierz odległości Gowera dla danych mieszanych
R
library(cluster)
set.seed(3591)
n <- 6
d <- data.frame(
wiek = round(runif(n, 20, 65)), # liczbowa
dochod = round(runif(n, 3000, 15000), -2), # liczbowa, inna skala
plec = factor(sample(c("K", "M"), n, replace = TRUE)), # nominalna
region = factor(sample(c("miasto", "wies", "przedm"), n, replace = TRUE)), # nominalna
wykszt = factor(sample(c("podst", "sred", "wyzsze"), n, replace = TRUE),
levels = c("podst", "sred", "wyzsze"), ordered = TRUE) # porządkowa
)
d
g <- daisy(d, metric = "gower")
round(as.matrix(g), 3)
# ręcznie dla osób 1 i 2: średnia z pięciu składowych
r <- sapply(d[1:2], function(x) diff(range(x)))
s <- c(abs(d$wiek[1] - d$wiek[2]) / r["wiek"],
abs(d$dochod[1] - d$dochod[2]) / r["dochod"],
as.numeric(d$plec[1] != d$plec[2]),
as.numeric(d$region[1] != d$region[2]),
abs(as.integer(d$wykszt[1]) - as.integer(d$wykszt[2])) / diff(range(as.integer(d$wykszt))))
round(s, 3); round(mean(s), 3)
# odległość euklidesowa na surowych liczbach: decyduje dochód
round(dist(d[, c("wiek", "dochod")])[1:3], 1)Wynik w R
wiek dochod plec region wykszt
1 55 11000 M przedm wyzsze
2 46 7500 M wies podst
3 39 11000 M miasto sred
4 45 6500 M wies podst
5 39 9800 K wies podst
6 53 6900 M miasto sred
1 2 3 4 5 6
1 0.000 0.668 0.500 0.725 0.853 0.507
2 0.668 0.000 0.543 0.057 0.390 0.414
3 0.500 0.543 0.000 0.575 0.553 0.357
4 0.725 0.057 0.575 0.000 0.422 0.418
5 0.853 0.390 0.553 0.422 0.000 0.804
6 0.507 0.414 0.357 0.418 0.804 0.000
wiek dochod
0.562 0.778 0.000 1.000 1.000
[1] 0.668
[1] 3500 16 4500Bibliografia oprogramowania
Wyniki pochodzą z uruchomienia pokazanego kodu w R 4.5.3 (pakiet cluster). W pracy podaj wersje faktycznie użytych pakietów (sessionInfo()).
- R: R Core Team. (2026). R: A language and environment for statistical computing (Version 4.5.3) [Computer software]. R Foundation for Statistical Computing. https://www.R-project.org/
- cluster (wersja 2.1.8.2): Maechler, M., Rousseeuw, P., Struyf, A., Hubert, M., & Hornik, K. (2026). cluster: Cluster analysis basics and extensions (R package version 2.1.8.2) [Computer software]. https://CRAN.R-project.org/package=cluster
Najczęstsze pytania
Czy można użyć odległości Gowera w metodzie k-średnich?
Nie wprost. Metoda k-średnich liczy średnie skupień w przestrzeni euklidesowej. Macierz odległości Gowera przekaż do metody k-medoidów (PAM) albo do hierarchicznej analizy skupień, np. pam(g, k = 3, diss = TRUE).
Jak policzyć odległość Gowera w R?
Funkcją daisy(dane, metric = "gower") z pakietu cluster. Zmienne liczbowe zapisz jako numeric, nominalne jako factor, a porządkowe jako ordered; braki danych są pomijane parami.
Czym odległość Gowera różni się od odległości Mahalanobisa?
Mahalanobis działa tylko na zmiennych liczbowych i uwzględnia ich korelacje. Gower łączy zmienne różnych typów, ale traktuje je niezależnie i każdej daje tę samą wagę.
Powiązane hasła
Poradniki, w których użyjesz tego pojęcia
Potrzebujesz wsparcia w analizie danych?
Wybierz ofertę dopasowaną do pracy dyplomowej albo profesjonalnego projektu naukowego.
Wyceń analizęOferta dla studentówBibliografia i dalsza literatura naukowa (APA 7)
- Gower, J. C. (1971). A general coefficient of similarity and some of its properties. Biometrics, 27(4), 857–871. https://doi.org/10.2307/2528823
- Kaufman, L., & Rousseeuw, P. J. (1990). Finding groups in data: An introduction to cluster analysis. Wiley. https://doi.org/10.1002/9780470316801
- Podani, J. (1999). Extending Gower’s general coefficient of similarity to ordinal characters. Taxon, 48(2), 331–340. https://doi.org/10.2307/1224438
Cytowania BibTeX
@article{gower1971general, author={Gower, John C.}, title={{A general coefficient of similarity and some of its properties}}, journal={Biometrics}, year={1971}, volume={27}, number={4}, pages={857--871}, doi={10.2307/2528823}}@book{kaufman1990finding, author={Kaufman, Leonard and Rousseeuw, Peter J.}, title={{Finding groups in data: An introduction to cluster analysis}}, year={1990}, publisher={Wiley}, doi={10.1002/9780470316801}}@article{podani1999extending, author={Podani, János}, title={{Extending Gower’s general coefficient of similarity to ordinal characters}}, journal={Taxon}, year={1999}, volume={48}, number={2}, pages={331--340}, doi={10.2307/1224438}}