Exemplo: Experimento em DBC com dados Mistos

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)
#> Loading required package: corrplot
#> corrplot 0.88 loaded
#> Loading required package: crayon
#> Loading required package: ape
#> ############################################################
#> Obrigado por utilizar o MultivariateAnalysis
#> Author: Alcinei Mistico Azevedo (ICA-UFMG)
#> Veja tutoriais sobre este e outros pacotes no youtube:
#> https://www.youtube.com/channel/UCDGyvLCJnv9RtTY1YMBMVNQ
#> Se inscreva e compartilhe para ajudar o canal a crescer.
#> ############################################################

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.DBC.Misto")
head(Dados.DBC.Misto)
#>           Acesso Bloco ProdCom ProdTot NumRaiz CorRama TamRama TipoLobulosFolha
#> 1         Arruba     1  20.042  32.500   2.500       1       6                5
#> 2       Cambraia     1  19.125  34.500   2.625       3       5                7
#> 3 Cariruvermelha     1  27.917  46.542   4.500       9       5                7
#> 4       Coquinha     1   6.875  10.625   3.000       1       6                5
#> 5      Espanhola     1  17.958  26.833   3.000       1       6                5
#> 6         Licuri     1  27.083  39.208   5.333       1       6                7
#>   FormatoLobulo PigmentacaoNervura CorFolha
#> 1             6                  7        3
#> 2             6                  7        4
#> 3             6                  5        9
#> 4             6                  7        1
#> 5             6                  6        3
#> 6             6                  4        4

Analise de variancia Multivariada

Quando se quer saber se há diferença entre os “Tratamentos” do ponto de vista multivariado, pode-se fazer a analise de variância multivariada. Para isso, deve-se utilizar a função MANOVA. Dessa função deve-se considerar o delineamento desejado no argumento Modelo:

1 = Delineamento inteiramente casualizado (DIC)

2 = Delineamento em blocos casualizados (DBC)

3 = Delineamento em quadrado latino (DQL)

4 = Esquema fatorial em DIC

5 = Esquema fatorial em DBC

Res=MANOVA(Dados.DBC.Misto[,1:5],Modelo=2)
Res
#> $Manova
#> $Manova$Teste_Pillai
#>           Df    Pillai approx F num Df den Df       Pr(>F)
#> Trat       9 1.4208001 2.699088     27     81 0.0003195094
#> Bloco      3 0.8509652 3.563780      9     81 0.0009025751
#> Residuals 27        NA       NA     NA     NA           NA
#> 
#> $Manova$Teste_Wilks
#>           Df      Wilks approx F num Df   den Df       Pr(>F)
#> Trat       9 0.09550128 3.368661     27 73.65521 1.934035e-05
#> Bloco      3 0.35647163 3.577015      9 60.99404 1.266052e-03
#> Residuals 27         NA       NA     NA       NA           NA
#> 
#> $Manova$Teste_HotellingL
#>           Df Hotelling-Lawley approx F num Df den Df       Pr(>F)
#> Trat       9         4.857679 4.257965     27     71 5.177493e-07
#> Bloco      3         1.275248 3.353431      9     71 1.798071e-03
#> Residuals 27               NA       NA     NA     NA           NA
#> 
#> $Manova$Teste_Roy
#>           Df       Roy  approx F num Df den Df       Pr(>F)
#> Trat       9 3.9388079 11.816424      9     27 2.760817e-07
#> Bloco      3 0.6941331  6.247198      3     27 2.317696e-03
#> Residuals 27        NA        NA     NA     NA           NA
#> 
#> 
#> $CovarianciaResidual
#>           ProdCom  ProdTot   NumRaiz
#> ProdCom 32.481303 30.11095 2.4012477
#> ProdTot 30.110952 52.17210 2.2533897
#> NumRaiz  2.401248  2.25339 0.4983484
#> 
#> $GLres
#> [1] 27
#> 
#> $Med
#>                 ProdCom  ProdTot NumRaiz
#> Arruba         17.79200 27.41675 2.44800
#> Cambraia       19.71900 30.68750 2.40625
#> Cariruvermelha 29.45825 42.30225 3.93300
#> Coquinha        3.98950  7.34375 1.58325
#> Espanhola      16.48925 25.89575 2.50450
#> Licuri         27.20825 35.89550 3.66800
#> Palmas         19.44800 28.87475 2.61150
#> Princesa       18.22925 33.47925 2.90775
#> TCarro1        25.81250 47.12500 3.52375
#> TCarro2         8.53125 15.11450 0.96875

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:

Dissimilaridade para os dados quantitativos:

1 = Distancia euclidiana.

2= Distancia euclidiana media.

3 = Quadrado da distancia euclidiana media.

4 = Distancia euclidiana padronizada.

5 = Distancia euclidiana padronizada media.

6 = Quadrado da distancia euclidiana padronizada media.

7 = Distancia de Mahalanobis.

8 = Distancia de Cole Rodgers.

DadosMed=Res$Med
DistMaha=Distancia(DadosMed,Metodo = 7,Cov = Res$CovarianciaResidual)
round(DistMaha,3)
#>                Arruba Cambraia Cariruvermelha Coquinha Espanhola Licuri Palmas
#> Cambraia        0.313                                                         
#> Cariruvermelha  6.064    5.210                                                
#> Coquinha        8.132   11.163         25.922                                 
#> Espanhola       0.129    0.813          6.644    6.810                        
#> Licuri          3.589    3.422          0.953   19.038     3.967              
#> Palmas          0.090    0.263          4.831    9.541     0.311  2.582       
#> Princesa        1.878    1.934          4.107   13.346     1.786  3.954  1.851
#> TCarro1         8.875    7.278          3.252   30.709     9.517  6.535  8.105
#> TCarro2         5.158    6.108         22.166    3.996     5.203 16.622  6.371
#>                Princesa TCarro1
#> Cambraia                       
#> Cariruvermelha                 
#> Coquinha                       
#> Espanhola                      
#> Licuri                         
#> Palmas                         
#> Princesa                       
#> TCarro1           3.582        
#> TCarro2          11.093  24.679

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

resumo=SummaryDistancia(DistMaha)

resumo
#>                Medio Minimo Maximo   sd    MaisProximo MaisDistante
#> Arruba          3.80   0.09   8.88 3.44         Palmas      TCarro1
#> Cambraia        4.06   0.26  11.16 3.71         Palmas     Coquinha
#> Cariruvermelha  8.79   0.95  25.92 8.85         Licuri     Coquinha
#> Coquinha       14.30   4.00  30.71 9.09        TCarro2      TCarro1
#> Espanhola       3.91   0.13   9.52 3.36         Arruba      TCarro1
#> Licuri          6.74   0.95  19.04 6.48 Cariruvermelha     Coquinha
#> Palmas          3.77   0.09   9.54 3.59         Arruba     Coquinha
#> Princesa        4.84   1.79  13.35 4.33      Espanhola     Coquinha
#> TCarro1        11.39   3.25  30.71 9.61 Cariruvermelha     Coquinha
#> TCarro2        11.27   4.00  24.68 7.94       Coquinha      TCarro1

Dissimilaridade para os dados qualitativos:

Opções de medidas para dados qualitativos

Dados qualitativos: binarios ou multicategoricos

9 = Frequencia de coincidencia.

10 = Frequencia de discordancia.

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

Dadosquali=Dados.DBC.Misto[,6:11]

#Excluindo os valores NA
id=is.na(Dadosquali$CorFolha)==FALSE
Dadosquali2=Dadosquali[id,]
#Colocando o nome dos tratamentos na matriz
rownames(Dadosquali2)=Dados.DBC.Misto[id,1]


Distquali=Distancia(Dadosquali2,Metodo = 10)
round(Distquali,3)
#>                Arruba Cambraia Cariruvermelha Coquinha Espanhola Licuri Palmas
#> Cambraia        0.667                                                         
#> Cariruvermelha  0.833    0.500                                                
#> Coquinha        0.167    0.667          0.833                                 
#> Espanhola       0.167    0.833          0.833    0.333                        
#> Licuri          0.500    0.500          0.667    0.500     0.500              
#> Palmas          0.667    1.000          1.000    0.833     0.667  0.833       
#> Princesa        1.000    1.000          0.667    1.000     0.833  1.000  1.000
#> TCarro1         0.833    0.500          0.667    0.833     1.000  0.833  1.000
#> TCarro2         0.667    1.000          1.000    0.833     0.667  0.833  0.000
#>                Princesa TCarro1
#> Cambraia                       
#> Cariruvermelha                 
#> Coquinha                       
#> Espanhola                      
#> Licuri                         
#> Palmas                         
#> Princesa                       
#> TCarro1           1.000        
#> TCarro2           1.000   1.000

Obtendo a média ponderada das matrizes de dissimilaridade


#Criando list com as matrizes
dissimilaridades=list(DistMaha,Distquali)
n=c(ncol(DadosMed),ncol(Dadosquali2))
#Calculando a media ponderada
DistMisto=MediaDistancia(dissimilaridades,n)
DistMisto
#>                    Arruba   Cambraia Cariruvermelha   Coquinha  Espanhola
#> Cambraia       0.44784038                                                
#> Cariruvermelha 0.62137298 0.38988736                                     
#> Coquinha       0.19938334 0.56561782     0.83692668                      
#> Espanhola      0.11251594 0.56437701     0.62767207 0.29614257           
#> Licuri         0.37228812 0.37048266     0.45478809 0.53998338 0.37638866
#> Palmas         0.44542087 0.66952651     0.71910793 0.65912197 0.44781930
#> Princesa       0.68704895 0.68766317     0.48901959 0.81153120 0.57494561
#> TCarro1        0.65189350 0.41233327     0.47974207 0.88888889 0.76997345
#> TCarro2        0.50042758 0.73296801     0.90727161 0.59893358 0.50091940
#>                    Licuri     Palmas   Princesa    TCarro1
#> Cambraia                                                  
#> Cariruvermelha                                            
#> Coquinha                                                  
#> Espanhola                                                 
#> Licuri                                                    
#> Palmas         0.58358742                                 
#> Princesa       0.70958440 0.68675915                      
#> TCarro1        0.62648640 0.75464494 0.70554673           
#> TCarro2        0.73598043 0.06915459 0.78707948 0.93454414

Obtendo dendograma para as 3 medidas de dissimilaridade

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 com o metodo UPGMA
Dendograma(DistMaha,Metodo=3,Titulo="Dados quantiativos")

#> $DistanciaFenetica
#>                     Arruba    Cambraia Cariruvermelha    Coquinha   Espanhola
#> Cambraia        0.46300647                                                   
#> Cariruvermelha  4.43695705  4.43695705                                       
#> Coquinha       13.87884103 13.87884103    13.87884103                        
#> Espanhola       0.22016882  0.46300647     4.43695705 13.87884103            
#> Licuri          4.43695705  4.43695705     0.95292853 13.87884103  4.43695705
#> Palmas          0.08995549  0.46300647     4.43695705 13.87884103  0.22016882
#> Princesa        1.86237671  1.86237671     4.43695705 13.87884103  1.86237671
#> TCarro1         6.73489393  6.73489393     6.73489393 13.87884103  6.73489393
#> TCarro2        13.87884103 13.87884103    13.87884103  3.99628521 13.87884103
#>                     Licuri      Palmas    Princesa     TCarro1
#> Cambraia                                                      
#> Cariruvermelha                                                
#> Coquinha                                                      
#> Espanhola                                                     
#> Licuri                                                        
#> Palmas          4.43695705                                    
#> Princesa        4.43695705  1.86237671                        
#> TCarro1         6.73489393  6.73489393  6.73489393            
#> TCarro2        13.87884103 13.87884103 13.87884103 13.87884103
#> 
#> $CorrelacaoCofenetica
#> [1] 0.7302818
#> 
#> $SigCorrelCofenetica
#> 
#>             Mantel's permutation test
#> 
#> Correlation: 0.7302818
#> p-value: 0.001, based on 999 matrix permutations
#> Alternative hypothesis: true correlation is greater than 0 
#> 
#> $MojenaCorte
#>    k=1.25       k=2 
#>  9.215353 12.568870 
#> 
#> $Ordem
#>  [1]  4 10  9  3  6  8  2  5  1  7
Dendograma(Distquali,Metodo=3, Titulo="Dados qualitativos")

#> $DistanciaFenetica
#>                   Arruba  Cambraia Cariruvermelha  Coquinha Espanhola    Licuri
#> Cambraia       0.8518519                                                       
#> Cariruvermelha 0.8518519 0.5000000                                             
#> Coquinha       0.1666667 0.8518519      0.8518519                              
#> Espanhola      0.2500000 0.8518519      0.8518519 0.2500000                    
#> Licuri         0.5000000 0.8518519      0.8518519 0.5000000 0.5000000          
#> Palmas         0.7500000 0.8518519      0.8518519 0.7500000 0.7500000 0.7500000
#> Princesa       0.9444444 0.9444444      0.9444444 0.9444444 0.9444444 0.9444444
#> TCarro1        0.8518519 0.5833333      0.5833333 0.8518519 0.8518519 0.8518519
#> TCarro2        0.7500000 0.8518519      0.8518519 0.7500000 0.7500000 0.7500000
#>                   Palmas  Princesa   TCarro1
#> Cambraia                                    
#> Cariruvermelha                              
#> Coquinha                                    
#> Espanhola                                   
#> Licuri                                      
#> Palmas                                      
#> Princesa       0.9444444                    
#> TCarro1        0.8518519 0.9444444          
#> TCarro2        0.0000000 0.9444444 0.8518519
#> 
#> $CorrelacaoCofenetica
#> [1] 0.8915022
#> 
#> $SigCorrelCofenetica
#> 
#>             Mantel's permutation test
#> 
#> Correlation: 0.8915022
#> p-value: 0.001, based on 999 matrix permutations
#> Alternative hypothesis: true correlation is greater than 0 
#> 
#> $MojenaCorte
#>    k=1.25       k=2 
#> 0.9039087 1.1431675 
#> 
#> $Ordem
#>  [1]  8  9  2  3  7 10  6  5  1  4
Dendograma(DistMisto,Metodo=3,Titulo= "Qualitativos + Quantiativos")

#> $DistanciaFenetica
#>                    Arruba   Cambraia Cariruvermelha   Coquinha  Espanhola
#> Cambraia       0.67392873                                                
#> Cariruvermelha 0.67392873 0.42233772                                     
#> Coquinha       0.24776296 0.67392873     0.67392873                      
#> Espanhola      0.11251594 0.67392873     0.67392873 0.24776296           
#> Licuri         0.67392873 0.37048266     0.42233772 0.67392873 0.67392873
#> Palmas         0.52544045 0.67392873     0.67392873 0.52544045 0.52544045
#> Princesa       0.67392873 0.64795347     0.64795347 0.67392873 0.67392873
#> TCarro1        0.67392873 0.50618725     0.50618725 0.67392873 0.67392873
#> TCarro2        0.52544045 0.67392873     0.67392873 0.52544045 0.52544045
#>                    Licuri     Palmas   Princesa    TCarro1
#> Cambraia                                                  
#> Cariruvermelha                                            
#> Coquinha                                                  
#> Espanhola                                                 
#> Licuri                                                    
#> Palmas         0.67392873                                 
#> Princesa       0.64795347 0.67392873                      
#> TCarro1        0.50618725 0.67392873 0.64795347           
#> TCarro2        0.67392873 0.06915459 0.67392873 0.67392873
#> 
#> $CorrelacaoCofenetica
#> [1] 0.788377
#> 
#> $SigCorrelCofenetica
#> 
#>             Mantel's permutation test
#> 
#> Correlation: 0.788377
#> p-value: 0.001, based on 999 matrix permutations
#> Alternative hypothesis: true correlation is greater than 0 
#> 
#> $MojenaCorte
#>    k=1.25       k=2 
#> 0.6697798 0.8332634 
#> 
#> $Ordem
#>  [1]  7 10  4  1  5  8  9  3  2  6

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

Tocher(DistMisto,corPlot = FALSE)
#> $Tocher
#> $Tocher[[1]]
#> $Tocher[[1]]$`cluster 1`
#> [1] Arruba    Espanhola Coquinha  Licuri   
#> 
#> $Tocher[[1]]$`cluster 2`
#> [1] Palmas  TCarro2
#> 
#> $Tocher[[1]]$`cluster 3`
#> [1] Cambraia       Cariruvermelha TCarro1       
#> 
#> $Tocher[[1]]$`cluster 4`
#> [1] Princesa
#> 
#> 
#> 
#> $DistanciaCofenetica
#>                   Arruba  Cambraia Cariruvermelha  Coquinha Espanhola    Licuri
#> Cambraia       1.1907061                                                       
#> Cariruvermelha 1.1907061 0.7536074                                             
#> Coquinha       0.6564798 1.1907061      1.1907061                              
#> Espanhola      0.6564798 1.1907061      1.1907061 0.6564798                    
#> Licuri         0.6564798 1.1907061      1.1907061 0.6564798 0.6564798          
#> Palmas         1.1222314 1.4870133      1.4870133 1.1222314 1.1222314 1.1222314
#> Princesa       1.2832416 1.0143250      1.0143250 1.2832416 1.2832416 1.2832416
#> TCarro1        1.1907061 0.7536074      0.7536074 1.1907061 1.1907061 1.1907061
#> TCarro2        1.1222314 1.4870133      1.4870133 1.1222314 1.1222314 1.1222314
#>                   Palmas  Princesa   TCarro1
#> Cambraia                                    
#> Cariruvermelha                              
#> Coquinha                                    
#> Espanhola                                   
#> Licuri                                      
#> Palmas                                      
#> Princesa       1.3336803                    
#> TCarro1        1.4870133 1.0143250          
#> TCarro2        0.3522991 1.3336803 1.4870133
#> 
#> $DistanciaIntraInterCluster
#>           cluster 1 cluster 2 cluster 3 cluster 4
#> cluster 1 0.6564798 1.1222314 1.1907061  1.283242
#> cluster 2 1.1222314 0.3522991 1.4870133  1.333680
#> cluster 3 1.1907061 1.4870133 0.7536074  1.014325
#> cluster 4 1.2832416 1.3336803 1.0143250  0.000000
#> 
#> $CorrelacaoCofenetica
#> 
#>             Mantel's permutation test
#> 
#> Correlation: 0.8376112
#> p-value: 3e-04, based on 9999 matrix permutations
#> Alternative hypothesis: true correlation is greater than 0 
#> 
#> attr(,"class")
#> [1] "Tocher"

Estimativas de correção entre as medidas de dissimilaridade

CorrelacaoMantel(DistMaha,DistMisto)

#> 
#>             Mantel's permutation test
#> 
#> Correlation: 0.5400622
#> p-value: 0.001, based on 999 matrix permutations
#> Alternative hypothesis: true correlation is greater than 0
CorrelacaoMantel(DistMaha,Distquali)

#> 
#>             Mantel's permutation test
#> 
#> Correlation: 0.1649969
#> p-value: 0.168, based on 999 matrix permutations
#> Alternative hypothesis: true correlation is greater than 0
CorrelacaoMantel(Distquali,DistMisto)

#> 
#>             Mantel's permutation test
#> 
#> Correlation: 0.9191985
#> p-value: 0.001, based on 999 matrix permutations
#> Alternative hypothesis: true correlation is greater than 0