Exemplo: dados multicategóricos

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.

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)
Dist
#> Medida de dissimilaridade: 10 = Frequencia de discordancia.
#>      
#> Menor Distancia: 0.1538462 
#> Maior Distancia: 1 
#> Media das Distancias: 0.6346154 
#> Amplitude das Distancias: 0.8461538 
#> Desvio Padrao das Distancias: 0.194058 
#> Coeficiente de variacao das Distancias: 30.57883 
#> Individuos mais proximos: T1 T9 
#> Individuos mais distantes: T4 T5

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
#> 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
#> 
#> Menor Distancia: 0.1538462 
#> Maior Distancia: 1 
#> Media das Distancias: 0.6346154 
#> Amplitude das Distancias: 0.8461538 
#> Desvio Padrao das Distancias: 0.194058 
#> Coeficiente de variacao das Distancias: 30.57883 
#> Individuos mais proximos: T1 T9 
#> Individuos mais distantes: T4 T5 
#> _________________________________________________________________________

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.7792194
#> Significancia da correlacao cofenetica pelo teste Mantel 
#> pvalor: 0.001 
#> Hipotese alternativa: A correlacao e maior que 0 
#> 
#> Ponto de corte pelo metodo Mojena 
#>    k=1.25       k=2 
#> 0.7000256 0.8485666 
#> _________________________________________________________________________

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

Tocher(Dist)

#> _________________________________________________________________________ 
#> Agrupamento Tocher 
#> Cluster1: 
#> T1 T9 
#> 
#> Cluster2: 
#> T2 T6 T4 
#> 
#> Cluster3: 
#> T3 T5 
#> 
#> Cluster4: 
#> T7 
#> 
#> Cluster5: 
#> T8 
#> 
#> Distancia intra e intercluster: 
#>           Cluster1  Cluster2  Cluster3  Cluster4  Cluster5
#> Cluster1 0.1538462 0.7179487 0.5576923 0.5384615 0.5384615
#> Cluster2 0.7179487 0.3589744 0.8717949 0.7179487 0.5384615
#> Cluster3 0.5576923 0.8717949 0.3846154 0.5000000 0.8076923
#> Cluster4 0.5384615 0.7179487 0.5000000 0.0000000 0.9230769
#> Cluster5 0.5384615 0.5384615 0.8076923 0.9230769 0.0000000
#> 
#> 
#> Correlacao Cofenetica: 0.9499247 
#> pvalor: 0.001 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.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"