14.1 Matrizes de distância

Matrizes de distância ou dissimilaridade são muito usadas em AEDs multivariadas. Por exemplo, para estimar a similaridade entre diferentes comunidades vegetais segundo a presença ou ausência de espécies (ou um índice de similaridade que leva em conta as abundâncias relativas); para estimar a similaridade entre espécies ou a relação entre similaridade genética ou morfológica e distância geográfica etc.

A função dist() é a mais básica do R para calcular dissimilaridades entre objetos. Ela calcula dissimilaridades segundo diferentes métodos (argumento method). Há também a função vegdist() do pacote vegan (Oksanen et al. 2020) que faz a mesma coisa, mas tem índices de dissimilaridade que dist() não implementa, muito dos quais muito usados em ecologia de comunidades.

Busque ler o ? dessas duas funções (execute ?dist e ?vegdist no console), atentando para os diferentes índices de dissimilaridade. Na função vegdist(), você encontra os principais índices de dissimilaridade usados em ecologia.

Para entender o que essas funções fazem, vamos ver um exemplo simples de cálculo de distância euclidiana, que é o método padrão de dist().

# usando o método euclidiano
# plota um gráfico vazio com coordenadas x e y de 1 a 10
plot(1:10, 1:10, type = "n")

# adiciona dois pontos:
# um na coordenada 4,4
points(4, 4, pch = 21, bg = "red")
# outro na coordenada x=8, y=8
points(8, 8, pch = 21, bg = "blue")
# a distancia euclidiana entre eles é dada por essa linha
segments(4, 4, 8, 8)
# essa linha é a hipotenusa do triângulo
polygon(x = c(4, 8, 8, 4), y = c(4, 8, 4, 4), density = 40)

# portanto a distancia entre os pontos, por Pitágoras, é
# sqrt(hipotenusa) = sum(catetoA^2+catetoB^2)
d <- sqrt((8 - 4)^2 + (8 - 4)^2)

# agora usando a função dist
# coloco as coordenadas dos dois pontos acima num data.frame
pontos <- data.frame(X = c(4, 8), Y = c(4, 8))
pontos
X Y
4 4
8 8
# calcula a distancia euclidiana para essas variáveis (X e Y)
dist(pontos, method = "eucl")
##          1
## 2 5.656854
# entao isso é verdadeiro
d == dist(pontos, method = "eucl")
## [1] TRUE

Referências

Oksanen, Jari, F. Guillaume Blanchet, Michael Friendly, Roeland Kindt, Pierre Legendre, Dan McGlinn, Peter R. Minchin, et al. 2020. vegan: Community Ecology Package. https://CRAN.R-project.org/package=vegan.