Author: Alcinei Mistico Azevedo (ICA-UFMG)
Date: 2025-07-25

# Exemplo: Experimento com dados mistos sem repetições

#### Alcinei Mistico Azevedo (ICA-UFMG)

#### 2025-07-25

# 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)
    Gower1
    #> Medida de dissimilaridade:  21 =Dissimilaridade de Gower
    #>
    #> Menor Distancia: 0.3249251
    #> Maior Distancia: 0.7883117
    #> Media das Distancias: 0.5741259
    #> Amplitude das Distancias: 0.4633866
    #> Desvio Padrao das Distancias: 0.1364548
    #> Coeficiente de variacao das Distancias: 23.7674
    #> Individuos mais proximos: T1 T2
    #> Individuos mais distantes: T4 T5

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 Dendrograma.

A fim de resumir as informações da matriz de dissimilaridade a fim de melhorar a visualização da dissimilaridade, pode-se fazer um Dendrograma com o auxilio da função `Dendrograma`. Varios algoritimos podem ser utilizados para a construção deste Dendrograma. 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).

    Dendrograma(Gower1,Metodo=3,Titulo="Gower1")

    #> _________________________________________________________________________
    #> Estimativa de correlacao cofenetica:
    #> [1] 0.9486072
    #> Significancia da correlacao cofenetica pelo teste Mantel
    #> pvalor: 0.017
    #> Hipotese alternativa: A correlacao e maior que 0
    #>
    #> Criterio de Corte
    #>    k=1.25
    #> 0.7110568
    #>
    #> Agrupamentos
    #>    Cluster
    #> T1       1
    #> T2       1
    #> T3       1
    #> T4       1
    #> T5       1
    #> _________________________________________________________________________

    Dendrograma(Gower2,Metodo=3,Titulo="Gower2")

    #> _________________________________________________________________________
    #> Estimativa de correlacao cofenetica:
    #> [1] 0.9655169
    #> Significancia da correlacao cofenetica pelo teste Mantel
    #> pvalor: 0.017
    #> Hipotese alternativa: A correlacao e maior que 0
    #>
    #> Criterio de Corte
    #>    k=1.25
    #> 0.7410889
    #>
    #> Agrupamentos
    #>    Cluster
    #> T1       1
    #> T2       1
    #> T3       1
    #> T4       1
    #> T5       1
    #> _________________________________________________________________________

    Dendrograma(Metodo3,Metodo=3,Titulo="Metodo3")

    #> _________________________________________________________________________
    #> Estimativa de correlacao cofenetica:
    #> [1] 0.8987349
    #> Significancia da correlacao cofenetica pelo teste Mantel
    #> pvalor: 0.021
    #> Hipotese alternativa: A correlacao e maior que 0
    #>
    #> Criterio de Corte
    #>    k=1.25
    #> 0.8213046
    #>
    #> Agrupamentos
    #>    Cluster
    #> T1       1
    #> T2       1
    #> T3       1
    #> T4       1
    #> T5       1
    #> _________________________________________________________________________

    Dendrograma(Metodo4,Metodo=4,Titulo="Metodo4")

    #> _________________________________________________________________________
    #> Estimativa de correlacao cofenetica:
    #> [1] 0.9256188
    #> Significancia da correlacao cofenetica pelo teste Mantel
    #> pvalor: 0.032
    #> Hipotese alternativa: A correlacao e maior que 0
    #>
    #> Criterio de Corte
    #>    k=1.25
    #> 0.8787674
    #>
    #> Agrupamentos
    #>    Cluster
    #> T1       1
    #> T2       1
    #> T3       1
    #> T4       1
    #> T5       2
    #> _________________________________________________________________________

# 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

# Uma opção de biplot legal para dados mistos é o PCAmixed.

    ComponentesPrincipais.Misto(Dados.Misto,plot = "individuos")

    #> $Autovalores
    #>       Eigenvalue Proportion Cumulative
    #> dim 1   5.853056   45.02351   45.02351
    #> dim 2   2.986940   22.97646   67.99997
    #> dim 3   2.837528   21.82714   89.82712
    #> dim 4   1.322475   10.17288  100.00000
    #>
    #> $Escores
    #>         dim 1      dim 2      dim 3       dim 4
    #> T1  1.0397489 -1.0987370 -1.5175138 -1.85414540
    #> T2  0.3765185 -1.0657093 -1.8859019  1.75994227
    #> T3  1.2444265 -1.5736106  2.8577009  0.19372558
    #> T4  2.0574396  3.1198194  0.1928201  0.08184657
    #> T5 -4.7181335  0.6182376  0.3528947 -0.18136902
    #>
    #> $CorrelacaoQuanti
    #>             dim 1       dim 2     dim 3     dim 4
    #> Altura  0.7814370  0.33600164 0.5084262 0.1340218
    #> Prod    0.9237992 -0.02618815 0.1790451 0.3374198
    #> NumFr  -0.9121228  0.33060980 0.1780682 0.1643801
    #>
    #> $ImportanciaQuali
    #>                  dim 1      dim 2      dim 3        dim 4
    #> M1          0.16869111 0.23543425 0.16836988 4.275047e-01
    #> M2          0.06614482 0.20725644 0.71950417 7.094577e-03
    #> M3          0.53674580 0.01117258 0.13803744 3.140442e-01
    #> M4          0.27315006 0.22792411 0.10307171 3.958541e-01
    #> M5          0.34359939 0.05092936 0.60545201 1.924228e-05
    #> CorFlor     0.98593291 0.98918493 0.01839505 6.487103e-03
    #> Crescimento 0.98119162 0.26247681 0.74494354 1.138802e-02
    #> Pelos       0.20158391 0.77967582 0.01749202 1.248255e-03
    #>
    #> $Niveis
    #>                               dim 1       dim 2      dim 3        dim 4
    #> M1=0                      0.5030275  0.59426541 -0.5025483  0.800785316
    #> M1=1                     -0.3353517 -0.39617694  0.3350322 -0.533856877
    #> M2=0                      0.5143727 -0.91050851  1.6964718  0.168458620
    #> M2=1                     -0.1285932  0.22762713 -0.4241180 -0.042114655
    #> M3=0                     -0.8972841 -0.12945607 -0.4550342  0.686342674
    #> M3=1                      0.5981894  0.08630405  0.3033562 -0.457561783
    #> M4=0                      0.6400977  0.58471033 -0.3932017 -0.770571984
    #> M4=1                     -0.4267318 -0.38980688  0.2621345  0.513714656
    #> M5=0                      0.4786087  0.18426314 -0.6353225 -0.003581646
    #> M5=1                     -0.7179130 -0.27639471  0.9529837  0.005372469
    #> CorFlor=Amarelo           0.8504244  1.80516206  0.1144675  0.071171601
    #> CorFlor=Branco            0.3665914 -0.72096039 -0.1079877  0.028847361
    #> CorFlor=Vermelho         -1.9501987  0.35771910  0.2094957 -0.157713682
    #> Crescimento=ereto         0.2927008 -0.62618632 -1.0102175 -0.040958269
    #> Crescimento=prostado      0.6823986  0.44732678  0.9054697  0.119815110
    #> Crescimento=semiprostado -1.9501987  0.35771910  0.2094957 -0.157713682
    #> Pelos=Nao                -0.5498871  1.08144058  0.1619816 -0.043271041
    #> Pelos=Sim                 0.3665914 -0.72096039 -0.1079877  0.028847361

    CPM=ComponentesPrincipais.Misto(Dados.Misto,plot = "nivel")

    CPM=ComponentesPrincipais.Misto(Dados.Misto,plot = "correlacao")

    CPM=ComponentesPrincipais.Misto(Dados.Misto,plot = "pesos")