Exemplo: dados multicategóricos

Alcinei Mistico Azevedo (ICA-UFMG)

2021-08-04

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.

data("Dados.CAT")
Dados.CAT
#>   Altura Diam Peso corFlor CorFolha CorCaule MargemFolha CorFruto Sabor Amargo
#> 1      1    2    3       4        1        2           3        1     2      1
#> 2      2    3    2       2        3        3           2        1     1      1
#> 3      3    1    1       2        4        2           3        1     2      3
#> 4      2    1    1       4        1        3           2        2     1      1
#> 5      3    2    2       1        2        2           3        1     2      2
#> 6      2    3    2       2        1        1           2        1     1      1
#> 7      2    3    2       4        2        2           3        2     2      2
#> 8      3    2    4       4        1        1           1        1     1      1
#> 9      1    2    3       4        2        2           3        1     2      1
#>   Docura Acidez Resistencia
#> 1      2      3           4
#> 2      1      3           4
#> 3      2      2           2
#> 4      1      3           4
#> 5      2      2           2
#> 6      1      3           3
#> 7      2      2           4
#> 8      1      3           1
#> 9      2      3           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)

#colocando nome nos individuos
rownames(Dados.CAT)=paste0("T",1:nrow(Dados.CAT))
Dist=Distancia(Dados.CAT,Metodo = 10)
round(Dist,3)
#>       T1    T2    T3    T4    T5    T6    T7    T8
#> T2 0.692                                          
#> T3 0.615 0.846                                    
#> T4 0.615 0.385 0.846                              
#> T5 0.538 0.846 0.385 1.000                        
#> T6 0.692 0.231 0.846 0.462 0.846                  
#> T7 0.538 0.692 0.615 0.692 0.385 0.769            
#> T8 0.538 0.615 0.846 0.538 0.769 0.462 0.923      
#> T9 0.154 0.769 0.615 0.769 0.462 0.769 0.538 0.538

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

resumo=SummaryDistancia(Dist)

resumo
#>    Medio Minimo Maximo   sd MaisProximo MaisDistante
#> T1  0.55   0.15   0.69 0.17          T9           T2
#> T2  0.63   0.23   0.85 0.22          T6           T3
#> T3  0.70   0.38   0.85 0.17          T5           T2
#> T4  0.66   0.38   1.00 0.21          T2           T5
#> T5  0.65   0.38   1.00 0.24          T3           T4
#> T6  0.63   0.23   0.85 0.22          T2           T3
#> T7  0.64   0.38   0.92 0.16          T5           T8
#> T8  0.65   0.46   0.92 0.17          T6           T7
#> T9  0.58   0.15   0.77 0.21          T1           T2

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)

#> $DistanciaFenetica
#>           T1        T2        T3        T4        T5        T6        T7
#> T2 0.7393162                                                            
#> T3 0.6495726 0.7393162                                                  
#> T4 0.7393162 0.4230769 0.7393162                                        
#> T5 0.6495726 0.7393162 0.3846154 0.7393162                              
#> T6 0.7393162 0.2307692 0.7393162 0.4230769 0.7393162                    
#> T7 0.6495726 0.7393162 0.5000000 0.7393162 0.5000000 0.7393162          
#> T8 0.5384615 0.7393162 0.6495726 0.7393162 0.6495726 0.7393162 0.6495726
#> T9 0.1538462 0.7393162 0.6495726 0.7393162 0.6495726 0.7393162 0.6495726
#>           T8
#> T2          
#> T3          
#> T4          
#> T5          
#> T6          
#> T7          
#> T8          
#> T9 0.5384615
#> 
#> $CorrelacaoCofenetica
#> [1] 0.7792194
#> 
#> $SigCorrelCofenetica
#> 
#>             Mantel's permutation test
#> 
#> Correlation: 0.7792194
#> p-value: 0.001, based on 999 matrix permutations
#> Alternative hypothesis: true correlation is greater than 0 
#> 
#> $MojenaCorte
#>    k=1.25       k=2 
#> 0.7000256 0.8485666 
#> 
#> $Ordem
#> [1] 4 2 6 7 3 5 8 1 9

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

Tocher(Dist)

#> $Tocher
#> $Tocher[[1]]
#> $Tocher[[1]]$`cluster 1`
#> [1] T1 T9
#> 
#> $Tocher[[1]]$`cluster 2`
#> [1] T2 T6 T4
#> 
#> $Tocher[[1]]$`cluster 3`
#> [1] T3 T5 T7
#> 
#> $Tocher[[1]]$`cluster 4`
#> [1] T8
#> 
#> 
#> 
#> $DistanciaCofenetica
#>           T1        T2        T3        T4        T5        T6        T7
#> T2 1.3765045                                                            
#> T3 0.9860740 1.5120146                                                  
#> T4 1.3765045 0.5659403 1.5120146                                        
#> T5 0.9860740 1.5120146 0.7527776 1.5120146                              
#> T6 1.3765045 0.5659403 1.5120146 0.5659403 1.5120146                    
#> T7 0.9860740 1.5120146 0.7527776 1.5120146 0.7527776 1.5120146          
#> T8 1.0583387 0.9024494 1.4279802 0.9024494 1.4279802 0.9024494 1.4279802
#> T9 0.2979218 1.3765045 0.9860740 1.3765045 0.9860740 1.3765045 0.9860740
#>           T8
#> T2          
#> T3          
#> T4          
#> T5          
#> T6          
#> T7          
#> T8          
#> T9 1.0583387
#> 
#> $DistanciaIntraInterCluster
#>           cluster 1 cluster 2 cluster 3 cluster 4
#> cluster 1 0.2979218 1.3765045 0.9860740 1.0583387
#> cluster 2 1.3765045 0.5659403 1.5120146 0.9024494
#> cluster 3 0.9860740 1.5120146 0.7527776 1.4279802
#> cluster 4 1.0583387 0.9024494 1.4279802 0.0000000
#> 
#> $CorrelacaoCofenetica
#> 
#>             Mantel's permutation test
#> 
#> Correlation: 0.9663975
#> p-value: 3e-04, based on 9999 matrix permutations
#> Alternative hypothesis: true correlation is greater than 0 
#> 
#> attr(,"class")
#> [1] "Tocher"

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.996230329  0.566878537   0.41684786   0.37040816    0.4168479
#> 2  0.406152779  0.231110504   0.19508289   0.22755102    0.6119308
#> 3  0.249818905  0.142152845   0.13632895   0.15612245    0.7482597
#> 4  0.176413169  0.100383251   0.10874136   0.10850340    0.8570011
#> 5  0.033060094  0.018811973   0.05486591   0.07278912    0.9118670
#> 6  0.012123314  0.006898451   0.04699738   0.04421769    0.9588643
#> 7  0.000000000  0.000000000   0.04113565   0.02040816    1.0000000
#> 8 -0.003473708 -0.001976622   0.00000000   0.00000000    1.0000000
#> 9 -0.112928432 -0.064258940   0.00000000   0.00000000    1.0000000
#>   Cumul_br_stick
#> 1      0.3704082
#> 2      0.5979592
#> 3      0.7540816
#> 4      0.8625850
#> 5      0.9353741
#> 6      0.9795918
#> 7      1.0000000
#> 8      1.0000000
#> 9      1.0000000
#> 
#> $vectors
#>        Axis.1      Axis.2      Axis.3       Axis.4       Axis.5       Axis.6
#> T1 -0.1182268  0.18058233  0.19870590  0.036276834  0.076259210 -0.052287726
#> T2  0.3659021 -0.20430214 -0.05968898 -0.099539812  0.097277781  0.054587540
#> T3 -0.3605134 -0.10009657 -0.22573090  0.280049458  0.028957970  0.000213903
#> T4  0.4096876 -0.10690338  0.17368106  0.201707361 -0.059779916  0.010718830
#> T5 -0.4641318 -0.00906798 -0.15413366 -0.144476741 -0.042281906  0.008586722
#> T6  0.3892343 -0.06530542 -0.17322014 -0.111552237  0.000828563 -0.069440949
#> T7 -0.2574707 -0.31974735  0.19478200 -0.097739688 -0.065580580 -0.004498400
#> T8  0.2593281  0.37783258 -0.10547513 -0.008801214 -0.075475742  0.022873745
#> T9 -0.2238094  0.24700794  0.15107984 -0.055923961  0.039794621  0.029246335
#> 
#> $trace
#> [1] 1.757396
#> 
#> attr(,"class")
#> [1] "pcoa"