Exemplo: Experimento com dados mistos sem repetições

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.Misto")
Dados.Misto
#>   M1 M2 M3 M4 M5 Altura Prod  CorFlor  Crescimento NumFr Pelos
#> 1  1  1  1  0  0     55  100   Branco        ereto    50   Sim
#> 2  0  1  0  1  0     57  110   Branco        ereto    55   Sim
#> 3  1  0  1  1  1     85  115   Branco     prostado    54   Sim
#> 4  0  1  1  0  0     92  114  Amarelo     prostado    56   Nao
#> 5  1  1  0  1  1     40   80 Vermelho semiprostado    70   Nao

Obtenção de medidas de dissimilaridade para dados mistos

Muitas são as opções para a obtenção de medidas de dissimilaridade para dados mistos. Vamos apresentar aqui algumas possibilidades para analise.

Método 1: Índice de Gower

Uma possibilidade quando se tem dados misto é o uso do índice de Gower.

#colocando nome nos individuos
rownames(Dados.Misto)=paste0("T",1:nrow(Dados.Misto))
Gower1=Distancia(Dados.Misto,Metodo = 21)
round(Gower1$Distancia,3)
#>       T1    T2    T3    T4
#> T2 0.325                  
#> T3 0.473 0.521            
#> T4 0.492 0.531 0.569      
#> T5 0.715 0.630 0.697 0.788

Um problema desta metodologia, é que neste caso, quando as variáveis binárias (0 ou 1) indicando a presença ou ausência de bandas a informação 0-0 (ausencia de bandas em ambos os indivíduos) indica que os dois índivíduos são iguais, o que não é verdade necessáriamente. Caso queira desconsiderar essas informações (0-0) no cômputo da dissimilaridade, pode-se usar o “índice de Gower 2”.

Método 2: Índice de Gower 2

Essa medidada deve ser utilizada quando se tem variáveis binárias (0 ou 1) indicando a presença ou ausência de bandas. Neste caso, a informação 0-0 (ausencia de bandas em ambos os indivíduos) são desconsiderados no cômputo da dissimilaridade, raciocícnio similar ao indice de Jacard.

Gower2=Distancia(Dados.Misto,Metodo = 22)
round(Gower2$Distancia,3)
#>       T1    T2    T3    T4
#> T2 0.357                  
#> T3 0.473 0.521            
#> T4 0.601 0.649 0.569      
#> T5 0.715 0.693 0.697 0.788

Método 3: Calcular a medida de dissimilaridade mais apropriada para cada variável e fazer a média ponderada posteriormente.

Neste caso, vamos usar o índice de jacard para os dados binários, índice de discordância para os dados multicategóricos e distância euclidiana padronizada para os dados quantitativos.

#Indice de jacard
DistBin=Distancia(Dados.Misto[,c(1:5)],Metodo = 12)
#Indice de discordancia
DistCat=Distancia(Dados.Misto[,c(8,9,11)],Metodo = 10)
#Distancia euclidiana padronizada
DadosQanti=Distancia(Dados.Misto[,c(6,7,10)],Metodo = 5)

#Criando list com as matrizes
dissimilaridades=list(DistBin,DistCat,DadosQanti)

#Calculando a media ponderada
Metodo3=MediaDistancia(dissimilaridades,n=c(5,3,3))
Metodo3
#>           T1        T2        T3        T4
#> T2 0.4945408                              
#> T3 0.5603724 0.6408972                    
#> T4 0.6125539 0.7682414 0.6664392          
#> T5 0.8316672 0.7685447 0.7721730 0.9090909

Metodo 4: Transformar os dados quantitativos em qualitativos e considerar tudo como multicategórico

Os dados quantitativos podem ser transformados em qualitativos. Para isso, pode-se usar a funcao Quant2Quali. Assim basta indicar o numero maximo de classes desejadas e a funcao demonstrará para cada individuo a classe que ele pertence. Essa classe é obtida considerando intervalos equidistantes entre o menor e maior valor de cada variavel, considerando-se o número de classes.

DadosQuanti=Dados.Misto[,c(6,7,10)]
DadosQuanti
#>    Altura Prod NumFr
#> T1     55  100    50
#> T2     57  110    55
#> T3     85  115    54
#> T4     92  114    56
#> T5     40   80    70
Mat=Quant2Quali(DadosQuanti,nclasses = 4)
Mat
#>    Altura Prod NumFr
#> T1 "C2"   "C3" "C1" 
#> T2 "C2"   "C4" "C2" 
#> T3 "C4"   "C4" "C1" 
#> T4 "C4"   "C4" "C2" 
#> T5 "C1"   "C1" "C4"

#Substituido nos dados os valores quatitativos por qualitativos
Dados.Misto2=Dados.Misto
Dados.Misto2[,c(6,7,10)]=Mat
Dados.Misto2
#>    M1 M2 M3 M4 M5 Altura Prod  CorFlor  Crescimento NumFr Pelos
#> T1  1  1  1  0  0     C2   C3   Branco        ereto    C1   Sim
#> T2  0  1  0  1  0     C2   C4   Branco        ereto    C2   Sim
#> T3  1  0  1  1  1     C4   C4   Branco     prostado    C1   Sim
#> T4  0  1  1  0  0     C4   C4  Amarelo     prostado    C2   Nao
#> T5  1  1  0  1  1     C1   C1 Vermelho semiprostado    C4   Nao

Agora, podemos considerar todos os dados como qualitativos e considerar o índice de discordancia com medida de dissimilaridade.

Metodo4=Distancia(Dados.Misto2,Metodo = 10)
Metodo4
#> Medida de dissimilaridade: 10 = Frequencia de discordancia.
#>      
#> Menor Distancia: 0.4545455 
#> Maior Distancia: 0.8181818 
#> Media das Distancias: 0.6545455 
#> Amplitude das Distancias: 0.3636364 
#> Desvio Padrao das Distancias: 0.1196874 
#> Coeficiente de variacao das Distancias: 18.28557 
#> Individuos mais proximos: T1 T2 
#> Individuos mais distantes: T1 T5

Após obter a matriz de dissimilaridade, podemos fazer o dendograma.

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(Gower1,Metodo=3,Titulo="Gower1")

#> _________________________________________________________________________ 
#> Estimativa de correlacao cofenetica: 
#> [1] 0.9486072
#> Significancia da correlacao cofenetica pelo teste Mantel 
#> pvalor: 0.02 
#> Hipotese alternativa: A correlacao e maior que 0 
#> 
#> Ponto de corte pelo metodo Mojena 
#>    k=1.25       k=2 
#> 0.7110568 0.8286550 
#> _________________________________________________________________________
Dendograma(Gower2,Metodo=3,Titulo="Gower2")

#> _________________________________________________________________________ 
#> Estimativa de correlacao cofenetica: 
#> [1] 0.9655169
#> Significancia da correlacao cofenetica pelo teste Mantel 
#> pvalor: 0.015 
#> Hipotese alternativa: A correlacao e maior que 0 
#> 
#> Ponto de corte pelo metodo Mojena 
#>    k=1.25       k=2 
#> 0.7410889 0.8581060 
#> _________________________________________________________________________
Dendograma(Metodo3,Metodo=3,Titulo="Metodo3")

#> _________________________________________________________________________ 
#> Estimativa de correlacao cofenetica: 
#> [1] 0.8987349
#> Significancia da correlacao cofenetica pelo teste Mantel 
#> pvalor: 0.02 
#> Hipotese alternativa: A correlacao e maior que 0 
#> 
#> Ponto de corte pelo metodo Mojena 
#>    k=1.25       k=2 
#> 0.8213046 0.9243939 
#> _________________________________________________________________________
Dendograma(Metodo4,Metodo=4,Titulo="Metodo4")

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

Para comparar as metodologias pode-se estimar a correlação dos metodos dois a dois

mat=cbind(Gower1=Gower1$Distancia,Gower2=Gower2$Distancia,Metodo3=Metodo3,Metodo4=Metodo4$Distancia)
Cor=cor(mat)
Cor
#>            Gower1    Gower2   Metodo3   Metodo4
#> Gower1  1.0000000 0.9370078 0.9399261 0.9468470
#> Gower2  0.9370078 1.0000000 0.9600371 0.8780937
#> Metodo3 0.9399261 0.9600371 1.0000000 0.8509176
#> Metodo4 0.9468470 0.8780937 0.8509176 1.0000000