Biodiversidade e o Índice de Jaccard no R

Aprenda a utilizar o Índice de Jaccard para comparar conjuntos de espécies no R.

Hoje, dia 22 de maio, é o Dia Mundial da Biodiversidade e em função dele preparamos uma postagem sobre o Índice de Jaccard (ou de Sorensen). Antes de nos aprofundamos neste índice, vamos definir o que é biodiversidade.

Biodiversidade são as espécies em um determinado ambiente. Quanto mais espécies diferentes ali existirem, maior é a biodiversidade. Em outros termos, é a variabilidade de seres vivos do ecossistema.

A partir disso, vamos explorar o Índice de Jaccard e como usar ele no R… mas o que é o Índice de Jaccard? Como interpretar seus resultados?

O Índice de Jaccard é uma medida da similaridade entre dois conjuntos. Por exemplo, se tivermos dois conjuntos A e B, com os seguintes elementos A = {BB; BC; DD; DI; EF} e B = {BB; BD; DD; DF; EF}, podemos calcular o Índice de Jaccard pela intersecção entre esses dois conjuntos divido pela união deles.

Ele pode ser utilizado para comparar levantamentos de espécies em diferentes ambientes e em diferentes tempos (e.g. avaliação do retorno da fauna em um ambiente degradado).

Índice de Jaccard (IJ) = |A ∩ B| / |A ∪ B|

IJ = |{BB; DD; EF}| / |{BB, BC, BD, DD, DF, DI, EF}|
IJ = 3 / 7
IJ = 0,43

Agora, como vamos interpretar esse resultado? Quanto mais próximo de 1, mais os dois conjuntos são similares; e quanto mais próximo de 0, mais diferentes eles são. No nosso caso, temos um dois conjuntos que são relativamente distintos.

Com essa base teórica, podemos nos perguntar, como lidamos com conjuntos gigantescos, tal como listas de espécies, sendo que nesse exemplo temos poucos elementos nos conjuntos? Para isso vamos utilizar o R.

Criando conjunto de dados

Iniciaremos criando uma lista de espécies fictícias (formadas por letras e números) utilizando as funções sample(), cbind() e paste0().

especies <- cbind(sample(letters, 100, TRUE))
especies <- paste0(sample(LETTERS, 100, TRUE), especies)
especies <- paste0(sample(1:1000, 100, TRUE), especies)

A função sample() irá amostrar, dentro da variável letters ou LETTERS (variável que já vendo no R, com todas as letras do alfabeto), 100 elementos, com substituição; enquanto a função paste0 irá, após amostrar novamente mais letras, unir elas sem nenhum carácter separando-as. E por fim, temos o cbind(), o qual organiza tudo em forma de colunas.

Seus valores vão se assemelhar aos abaixo (por ser um processo de amostragem, não é provável que seus valores sejam iguais ao desse tutorial).

Gerando elementos no R

Agora que temos algumas “espécies”, vamos amostar essa variável e criar mais duas variáveis representando as “espécies” levantadas em diferentes ambientes.

data_esp1 <- sample(especies[(sample(1:100, 80))], 80)
data_esp2 <- sample(especies[(sample(1:100, 80))], 80)

Nesse código, amostramos as “espécies” e salvamos o resultado nas variáveis data_esp utilizando a função sample(), nela pedimos para amostrar 80 número de 1 a 100 (1:100).

Calculando o Índice de Jaccard

Para utilizar o Índice de Jaccard, vamos comparar as duas colunas criadas. Primeiro vamos ver quantas “espécies” aparecem simultaneamente na coluna 1 e 2 (intersecção)

I <- length(intersect(data_esp1, data_esp2))

A função intersect() irá nos fornecer quais são os elementos coincidentes, enquanto a função length() retornará a quantidade de elementos (i.e. o tamanho do resultado).

E por fim, para calcular o índice de Jaccard, vamos usar a formula que apresentamos anteriormente, junto com a função union() do pacote Set.

U <- length(union(data_esp2, data_esp2))
IJ <- I / U

O resultado dessa ultima equação pode variar, pois estamos trabalhando com amostragens. Mas exercitando um pouco a interpretação do Índice de Jaccard, na ultima vez que rodei esse código, obtive 0,8557; ou seja, as duas colunas (conjuntos) são muito semelhantes.

Você pode praticar mais esse cálculo substituindo nas variáveis data_esp a quantidade de valores amostrados, neste tutorial utilizamos 80, mas você pode testar outros valores como 70, 50 e 30. Teste e coloque os resultados nos comentários e caso precise de ajuda, comente ai embaixo.

Fontes consultadas:

Green Facts. Biodiversity: What is it, where is it, and why is it important?

Paul Jaccard. The Distribution of the Flora in the Alpine Zone.

Statistics How To. Jaccard Index / Similarity Coefficient.



Clique na figura abaixo e assine nossa lista de emails para receber nosso ebook "Como criar mapas de localização com ArcGIS 10.x".


Author: Fernando BS

Engenheiro Ambiental e de Segurança do Trabalho. Atua nas áreas de recuperação ambiental, geoprocessamento e ciência do solo. Busca soluções utilizando softwares como ArcGIS, R e MATLAB.

2 thoughts on “Biodiversidade e o Índice de Jaccard no R”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *