Exemplo: dados binários

Alcinei Mistico Azevedo (ICA-UFMG)

2021-09-27

Ativando o pacote

Após a instalação do pacote é preciso ativa-lo. Para isso, deve-se utilizar a função library ou require

library(MultivariateAnalysis)

Abrindo o conjunto de dados

Posteriormente, deve-se carregar no R o conjunto de dados a serem analizados. Isso pode ser feito de diferentes formas.

Uma possibilidade é utilizando a função read.table. Neste exemplo vamos trabalhar com o banco de dados do pacote, o qual pode ser carregado com a função data.

Este exemplo trata-se de dados binarios vindo do uso de marcadores moleculares em cinco individuos.

data("Dados.BIN")
Dados.BIN
#>   M1 M2 M3 M4 M5 M6 M7 M8 M9
#> 1  1  1  1  0  0  1  0  1  1
#> 2  0  1  0  1  0  0  1  0  0
#> 3  1  0  1  1  1  1  0  0  1
#> 4  0  1  1  0  0  1  0  1  0
#> 5  1  1  0  1  1  0  1  0  1

Obtenção de medidas de dissimilaridade

Muitas são as opções que este pacote oferece de medidas de dissimilaridade. Convidamos os usuários a ler o manual da funcao Distancia (?Distancia).

Para se ter diferentes medidas de dissimilaridade basta colocar o respectivo numero no argumento Metodo dentro da função Distancia:

Dados qualitativos (binários ou multicategóricos)

9 = Frequencia de coincidencia.

10 = Frequencia de discordancia.

11 = indice Inverso de 1+coincidencia = 1/(1+c)

Dados qualitativos binarios

12 = Dissimilaridade de Jacard: 1-a/(a+b+c).

13 = Dissimilaridade de Sorensen Dice: 1-2a/(2a+b+c).

14 = Dissimilaridade de Sokal e Sneath: 1-2(a+d)/(2(a+d)+b+c)

15 = Dissimilaridade de Roger e Tanimoto: 1-(a+d)/(a+2(b+c)+d)

16 = Dissimilaridade de Russel e Rao: 1-a/(a+b+c+d).

17 = Dissimilaridade de Ochiai: 1-a/sqrt((a+b)(a+c)).

18 = Dissimilaridade de Ochiai II: 1-ab/sqrt((a+b)(a+c)(b+d)(c+d)).

19 = Dissimilaridade de Haman: 1-((a+d)-(b+c))/(a+b+c+d).

20 = Dissimilaridade de Yule: 1-(ad-bc)/(ad+bc).

#colocando nome nos individuos
rownames(Dados.BIN)=paste0("Indiv_",1:nrow(Dados.BIN))
Dist=Distancia(Dados.BIN,Metodo = 12)
Dist
#> Medida de dissimilaridade: 12 = Dissimilaridade de Jacard: 1-a/(a+b+c).
#>      
#> Menor Distancia: 0.3333333 
#> Maior Distancia: 0.8888889 
#> Media das Distancias: 0.6722222 
#> Amplitude das Distancias: 0.5555556 
#> Desvio Padrao das Distancias: 0.2013969 
#> Coeficiente de variacao das Distancias: 29.95987 
#> Individuos mais proximos: Indiv_1 Indiv_4 
#> Individuos mais distantes: Indiv_4 Indiv_5

Informações importantes podem ser obtidas dessa matriz com a função SummaryDistancia:

resumo=SummaryDistancia(Dist)

resumo
#> _________________________________________________________________________ 
#> Tabela com o resumo da matriz dissimilaridade 
#>         Medio Minimo Maximo   sd MaisProximo MaisDistante
#> Indiv_1  0.59   0.33   0.88 0.23     Indiv_4      Indiv_2
#> Indiv_2  0.77   0.50   0.88 0.18     Indiv_5      Indiv_1
#> Indiv_3  0.66   0.50   0.88 0.19     Indiv_1      Indiv_2
#> Indiv_4  0.70   0.33   0.89 0.25     Indiv_1      Indiv_5
#> Indiv_5  0.64   0.50   0.89 0.18     Indiv_2      Indiv_4
#> 
#> Menor Distancia: 0.3333333 
#> Maior Distancia: 0.8888889 
#> Media das Distancias: 0.6722222 
#> Amplitude das Distancias: 0.5555556 
#> Desvio Padrao das Distancias: 0.2013969 
#> Coeficiente de variacao das Distancias: 29.95987 
#> Individuos mais proximos: Indiv_1 Indiv_4 
#> Individuos mais distantes: Indiv_4 Indiv_5 
#> _________________________________________________________________________

A fim de resumir as informações da matriz de dissimilaridade a fim de melhorar a visualização da dissimilaridade, pode-se fazer um dendograma com o auxilio da função dendograma. Varios algoritimos podem ser utilizados para a construção deste dendograma. Para isso, deve-se indicar no argumento Metodo:

1 = Ligacao simples (Metodo do vizinho mais proximo).

2 = Ligacao completa (Metodo do vizinho distante).

3 = Ligacao media entre grupo (UPGMA).

4 = Metodo de Ward.

5 = Metodo de ward (d2).

6= Metodo da mediana (WPGMC).

7= Metodo do centroide (UPGMC).

8 = Metodo mcquitty (WPGMA).


Dendograma(Dist,Metodo=3)

#> _________________________________________________________________________ 
#> Estimativa de correlacao cofenetica: 
#> [1] 0.7586138
#> Significancia da correlacao cofenetica pelo teste Mantel 
#> pvalor: 0.03 
#> Hipotese alternativa: A correlacao e maior que 0 
#> 
#> Ponto de corte pelo metodo Mojena 
#>    k=1.25       k=2 
#> 0.7912968 0.9313527 
#> _________________________________________________________________________

Adcionalmente, pode-se fazer o agrupamento Tocher com o auxilio da função Tocher:


Tocher(Dist)

#> _________________________________________________________________________ 
#> Agrupamento Tocher 
#> Cluster1: 
#> Indiv_1 Indiv_4 
#> 
#> Cluster2: 
#> Indiv_2 Indiv_5 
#> 
#> Cluster3: 
#> Indiv_3 
#> 
#> Distancia intra e intercluster: 
#>           Cluster1  Cluster2 Cluster3
#> Cluster1 0.3333333 0.8159722   0.6250
#> Cluster2 0.8159722 0.5000000   0.6875
#> Cluster3 0.6250000 0.6875000   0.0000
#> 
#> 
#> Correlacao Cofenetica: 0.7973581 
#> pvalor: 0.036 baseado no teste Mantel 
#> Hipotese alternativa: A correlacao e maior que 0 
#> _________________________________________________________________________

Outra possibilidade é o estudo da dispersão da matriz de dissimilaridade pelas técnica de coordenadas principais:

CoordenadasPrincipais(Dist)

#> $correction
#> [1] "none" "1"   
#> 
#> $note
#> [1] "No correction was applied to the negative eigenvalues"
#> 
#> $values
#>   Eigenvalues Relative_eig Rel_corr_eig Broken_stick Cum_corr_eig
#> 1  0.59349015   0.60760190   0.56957476    0.6111111    0.5695748
#> 2  0.36699792   0.37572423   0.36235480    0.2777778    0.9319296
#> 3  0.04534394   0.04642211   0.06807044    0.1111111    1.0000000
#> 4  0.00000000   0.00000000   0.00000000    0.0000000    1.0000000
#> 5 -0.02905732  -0.02974823   0.00000000    0.0000000    1.0000000
#>   Cumul_br_stick
#> 1      0.6111111
#> 2      0.8888889
#> 3      1.0000000
#> 4      1.0000000
#> 5      1.0000000
#> 
#> $vectors
#>              Axis.1      Axis.2      Axis.3
#> Indiv_1  0.33281033  0.03368527  0.12273425
#> Indiv_2 -0.45603577 -0.30691140 -0.04434396
#> Indiv_3  0.07364825  0.38570107 -0.12894680
#> Indiv_4  0.39092094 -0.29766861 -0.04686257
#> Indiv_5 -0.34134376  0.18519367  0.09741908
#> 
#> $trace
#> [1] 0.9767747
#> 
#> attr(,"class")
#> [1] "pcoa"