1.2 Aplicações do MDS

Nessa seção, apresentamos três aplicações que utilizam a técnica de escalonamento multidimensional. É importante notar que os dados foram coletados de maneira distinta em cada aplicação, o que ilustra a discussão da seção anterior sobre como podemos definir distâncias e dissimilaridades entre os objetos do nosso problema. Na Aplicação 1, os entrevistados indicam diretamente, numa escala de \(10\) pontos, a dissimilaridade entre países. Em seguida, na Aplicação 2, os indivíduos apenas agrupam os objetos que consideram semelhantes, e a partir desses agrupamentos é definida uma medida de dissimilaridade. Finalmente, na Aplicação 3, os indivíduos indicam se consomem ou não os produtos de uma lista, e a partir desta informação calculamos a distância de Jaccard entre os produtos.

1.2.1 Aplicação 1 - Comparando países

Neste exemplo, consideramos os dados de questionários aplicados a estudantes de Ciências Políticas sobre as dissimilaridades percebidas entre \(12\) países (Bélgica - BEL, Brasil - BRA, China - CHI, Cuba - CUB, Egito - EGY, França - FRA, Índia - IND, Israel - ISR, Estados Unidos da América - USA, União das Repúblicas Socialistas Soviéticas - USS, Iugoslávia - YUG e Zaire - ZAI). Nessa pesquisa, cada entrevistado indicava, em uma escala de \(10\) pontos, a dissimilaridade entre cada par de países. Após a coleta, os resultados foram agregados e considerou-se uma dissimilaridade média entre cada par de países. Os dados deste estudo fazem parte da biblioteca ElemStatLearn da linguagem R.

O código abaixo carrega bibliotecas que são necessárias em nossa análise e imprime a matriz countries que armazena as dissimilaridades entre os \(12\) países. Os comentários no código descrevem brevemente a função de cada biblioteca. Observe a utilização do pipe %>% da biblioteca magrittr, uma das componentes da biblioteca tidyverse. Essencialmente, o pipe é uma maneira de passar o valor de retorno de uma função como sendo o primeiro argumento da função subsequente, de maneira que este processo possa ser repetido tantas vezes quanto for necessário. Este simples atalho sintático criado pelo pipe tornou-se o elo de ligação entre as funções das bibliotecas de Data Science do R. De fato, a utilização sistemática do pipe diferencia o R de outras linguagens utilizadas em Data Science, tornando os códigos R extremamente concisos.

BEL BRA CHI CUB EGY FRA IND ISR USA USS YUG ZAI
BEL 0.00 5.58 7.00 7.08 4.83 2.17 6.42 3.42 2.50 6.08 5.25 4.75
BRA 5.58 0.00 6.50 7.00 5.08 5.75 5.00 5.50 4.92 6.67 6.83 3.00
CHI 7.00 6.50 0.00 3.83 8.17 6.67 5.58 6.42 6.25 4.25 4.50 6.08
CUB 7.08 7.00 3.83 0.00 5.83 6.92 6.00 6.42 7.33 2.67 3.75 6.67
EGY 4.83 5.08 8.17 5.83 0.00 4.92 4.67 5.00 4.50 6.00 5.75 5.00
FRA 2.17 5.75 6.67 6.92 4.92 0.00 6.42 3.92 2.25 6.17 5.42 5.58
IND 6.42 5.00 5.58 6.00 4.67 6.42 0.00 6.17 6.33 6.17 6.08 4.83
ISR 3.42 5.50 6.42 6.42 5.00 3.92 6.17 0.00 2.75 6.92 5.83 6.17
USA 2.50 4.92 6.25 7.33 4.50 2.25 6.33 2.75 0.00 6.17 6.67 5.67
USS 6.08 6.67 4.25 2.67 6.00 6.17 6.17 6.92 6.17 0.00 3.67 6.50
YUG 5.25 6.83 4.50 3.75 5.75 5.42 6.08 5.83 6.67 3.67 0.00 6.92
ZAI 4.75 3.00 6.08 6.67 5.00 5.58 4.83 6.17 5.67 6.50 6.92 0.00

É possível visualizar a matriz de dissimilaridades, de maneira que retângulos mais escuros indiquem uma maior dissimilaridade entre o par de países correspondentes.

## 
## Attaching package: 'reshape2'
## The following object is masked from 'package:tidyr':
## 
##     smiths

Para realizarmos o escalonamento muldimensional desses dados, utilizamos a função cmdscale().

Verifiquemos o comportamento dos autovalores produzidos pelo escalonamento multidimensional.

Note que temos \(9\) autovalores positivos e \(3\) autovalores negativos, o que indica que a matriz de dissimilaridades não define uma distância (Fernandez e Yohai (2014)). No entanto, a soma dos autovalores positivos é muito maior do que a soma dos autovalores negativos. Ademais, perceba que apenas os dois primeiros autovalores representam aproximadamente \(60\%\) da soma total. Isso indica que um gráfico em duas dimensões pode representar a dissimilaridade dos dados de forma satisfatória (Mardia et al, 1979).

Para a representação desses dados em duas dimensões, criamos um data frame com os nomes dos países e as duas primeiras coordenadas obtidas a partir do escalonamento multidimensional.

Com isso, podemos representar os países em um gráfico de duas dimensões.

Com os países representados como pontos no plano após o escalonamento multidimensional, podemos definir clusters, por exemplo, de maneira hierárquica, a partir da distância euclidiana entre os países. Para tanto, utilizamos a função hclust().

O dendrograma pode ser cortado, de maneira a formarmos três clusters.

A representação bidimensional dos países pode ser refeita, identificando os clusters com o auxílio de um código de cores.

Assim, temos três grupos de países que são considerados similares pelos estudantes questionados no estudo. Um primeiro grupo formado por Cuba (CUB), China (CHI), Iugoslávia (YUG) e União Soviética (USS), um segundo grupo formado por EUA (EUA), Israel (ISR), Bélgica (BEL) e França (FRA), e um terceiro grupo formado por Brasil (BRA), Índia (IND), Zaire (ZAI) e Egito (EGY) (um pouco mais isolado).

1.2.2 Aplicação 2 - Mercado automobilístico

Nesta aplicação, cada um de \(n = 150\) consumidores recebeu \(30\) papeletas com modelos de carros, e solicitamos que agrupassem os carros de modo que dois carros alocados em um mesmo grupo fossem considerados equivalentes (substituíveis no momento da compra) para o consumidor. Conforme discutido anteriormente, este processo define uma medida de dissimilaridade por: \[ d_{ij} = \frac{n - (\text{quantas vezes } i \text{ e } j \text{ foram alocados no mesmo grupo})}{n}. \]

Assim, \(d_{ij}\) é igual a \(0\) quando os modelos \(i\) e \(j\) são alocados dentro do mesmo grupo por todos os consumidores, enquanto \(d_{ij}\) é igual a 1 se \(i\) e \(j\) não forem alocados dentro do mesmo grupo por nenhum consumidor.

Começamos pela leitura da matriz de dissimilaridades.

UNO KA VECT CELT1 GOL GOLF CORSS GOL1 ECO BLA2 PALIN SAVEI HONDA FOX AUDI PALIF PARATI CORDL SIENAF ASTRAS PALIO DUBLO PEUGEO FIESTA ASTRAH CORSE PALIOW STILO CELTA CORHA
UNO 0.000 0.388 0.875 0.463 0.531 0.738 0.753 0.438 0.882 0.908 0.506 0.842 0.917 0.630 0.880 0.481 0.838 0.911 0.742 0.899 0.836 0.866 0.701 0.774 0.819 0.802 0.814 0.825 0.510 0.582
KA 0.388 0.000 0.902 0.382 0.527 0.730 0.745 0.440 0.920 0.937 0.491 0.852 0.912 0.627 0.873 0.454 0.836 0.929 0.754 0.918 0.854 0.917 0.673 0.765 0.823 0.801 0.845 0.786 0.450 0.563
VECT 0.875 0.902 0.000 0.866 0.829 0.749 0.563 0.858 0.899 0.855 0.832 0.863 0.442 0.838 0.602 0.853 0.814 0.466 0.554 0.429 0.862 0.888 0.779 0.568 0.637 0.549 0.828 0.648 0.848 0.827
CELT1 0.463 0.382 0.866 0.000 0.437 0.657 0.714 0.349 0.895 0.926 0.421 0.874 0.889 0.573 0.845 0.401 0.833 0.900 0.714 0.881 0.835 0.902 0.627 0.737 0.749 0.779 0.829 0.742 0.220 0.460
GOL 0.531 0.527 0.829 0.437 0.000 0.565 0.727 0.278 0.907 0.915 0.457 0.852 0.851 0.581 0.794 0.441 0.789 0.867 0.719 0.848 0.800 0.898 0.620 0.760 0.719 0.734 0.778 0.713 0.420 0.529
GOLF 0.738 0.730 0.749 0.657 0.565 0.000 0.713 0.560 0.891 0.873 0.663 0.885 0.731 0.638 0.659 0.683 0.761 0.758 0.739 0.752 0.763 0.883 0.655 0.769 0.644 0.717 0.744 0.580 0.647 0.665
CORSS 0.753 0.745 0.563 0.714 0.727 0.713 0.000 0.695 0.934 0.908 0.714 0.877 0.624 0.744 0.716 0.728 0.835 0.611 0.455 0.455 0.826 0.876 0.753 0.301 0.636 0.253 0.807 0.734 0.714 0.652
GOL1 0.438 0.440 0.858 0.349 0.278 0.560 0.695 0.000 0.913 0.911 0.382 0.864 0.862 0.548 0.823 0.378 0.809 0.882 0.710 0.860 0.830 0.902 0.624 0.731 0.755 0.765 0.811 0.752 0.386 0.488
ECO 0.882 0.920 0.899 0.895 0.907 0.891 0.934 0.913 0.000 0.340 0.926 0.784 0.878 0.858 0.860 0.921 0.749 0.878 0.920 0.909 0.732 0.330 0.894 0.932 0.897 0.934 0.766 0.865 0.900 0.900
BLA2 0.908 0.937 0.855 0.926 0.915 0.873 0.908 0.911 0.340 0.000 0.927 0.799 0.850 0.868 0.821 0.899 0.747 0.853 0.919 0.865 0.751 0.369 0.878 0.921 0.870 0.902 0.763 0.861 0.918 0.916
PALIN 0.506 0.491 0.832 0.421 0.457 0.663 0.714 0.382 0.926 0.927 0.000 0.855 0.863 0.567 0.816 0.266 0.762 0.873 0.659 0.860 0.735 0.905 0.579 0.735 0.749 0.762 0.703 0.701 0.454 0.502
SAVEI 0.842 0.852 0.863 0.874 0.852 0.885 0.877 0.864 0.784 0.799 0.855 0.000 0.904 0.851 0.913 0.848 0.813 0.896 0.854 0.894 0.817 0.755 0.886 0.886 0.923 0.895 0.819 0.854 0.868 0.877
HONDA 0.917 0.912 0.442 0.889 0.851 0.731 0.624 0.862 0.878 0.850 0.863 0.904 0.000 0.844 0.478 0.877 0.859 0.301 0.636 0.475 0.890 0.893 0.765 0.620 0.648 0.610 0.877 0.717 0.891 0.851
FOX 0.630 0.627 0.838 0.573 0.581 0.638 0.744 0.548 0.858 0.868 0.567 0.851 0.844 0.000 0.795 0.581 0.772 0.852 0.737 0.854 0.784 0.853 0.645 0.770 0.775 0.808 0.781 0.686 0.598 0.623
AUDI 0.880 0.873 0.602 0.845 0.794 0.659 0.716 0.823 0.860 0.821 0.816 0.913 0.478 0.795 0.000 0.813 0.829 0.510 0.730 0.552 0.869 0.898 0.680 0.733 0.530 0.711 0.852 0.618 0.823 0.776
PALIF 0.481 0.454 0.853 0.401 0.441 0.683 0.728 0.378 0.921 0.899 0.266 0.848 0.877 0.581 0.813 0.000 0.764 0.893 0.646 0.864 0.736 0.909 0.604 0.749 0.762 0.788 0.742 0.716 0.432 0.508
PARATI 0.838 0.836 0.814 0.833 0.789 0.761 0.835 0.809 0.749 0.747 0.762 0.813 0.859 0.772 0.829 0.764 0.000 0.844 0.804 0.841 0.404 0.768 0.813 0.821 0.817 0.822 0.307 0.741 0.838 0.822
CORDL 0.911 0.929 0.466 0.900 0.867 0.758 0.611 0.882 0.878 0.853 0.873 0.896 0.301 0.852 0.510 0.893 0.844 0.000 0.602 0.456 0.866 0.878 0.760 0.605 0.669 0.576 0.857 0.700 0.887 0.849
SIENAF 0.742 0.754 0.554 0.714 0.719 0.739 0.455 0.710 0.920 0.919 0.659 0.854 0.636 0.737 0.730 0.646 0.804 0.602 0.000 0.537 0.780 0.891 0.746 0.473 0.662 0.469 0.783 0.668 0.728 0.702
ASTRAS 0.899 0.918 0.429 0.881 0.848 0.752 0.455 0.860 0.909 0.865 0.860 0.894 0.475 0.854 0.552 0.864 0.841 0.456 0.537 0.000 0.881 0.908 0.794 0.477 0.479 0.436 0.865 0.702 0.863 0.818
PALIO 0.836 0.854 0.862 0.835 0.800 0.763 0.826 0.830 0.732 0.751 0.735 0.817 0.890 0.784 0.869 0.736 0.404 0.866 0.780 0.881 0.000 0.762 0.809 0.830 0.840 0.823 0.344 0.742 0.807 0.798
DUBLO 0.866 0.917 0.888 0.902 0.898 0.883 0.876 0.902 0.330 0.369 0.905 0.755 0.893 0.853 0.898 0.909 0.768 0.878 0.891 0.908 0.762 0.000 0.896 0.890 0.905 0.825 0.760 0.868 0.898 0.895
PEUGEO 0.701 0.673 0.779 0.627 0.620 0.655 0.753 0.624 0.894 0.878 0.579 0.886 0.765 0.645 0.680 0.604 0.813 0.760 0.746 0.794 0.809 0.896 0.000 0.786 0.669 0.797 0.807 0.652 0.622 0.616
FIESTA 0.774 0.765 0.568 0.737 0.760 0.769 0.301 0.731 0.932 0.921 0.735 0.886 0.620 0.770 0.733 0.749 0.821 0.605 0.473 0.477 0.830 0.890 0.786 0.000 0.688 0.368 0.821 0.748 0.741 0.726
ASTRAH 0.819 0.823 0.637 0.749 0.719 0.644 0.636 0.755 0.897 0.870 0.749 0.923 0.648 0.775 0.530 0.762 0.817 0.669 0.662 0.479 0.840 0.905 0.669 0.688 0.000 0.638 0.811 0.650 0.755 0.662
CORSE 0.802 0.801 0.549 0.779 0.734 0.717 0.253 0.765 0.934 0.902 0.762 0.895 0.610 0.808 0.711 0.788 0.822 0.576 0.469 0.436 0.823 0.825 0.797 0.368 0.638 0.000 0.810 0.717 0.742 0.703
PALIOW 0.814 0.845 0.828 0.829 0.778 0.744 0.807 0.811 0.766 0.763 0.703 0.819 0.877 0.781 0.852 0.742 0.307 0.857 0.783 0.865 0.344 0.760 0.807 0.821 0.811 0.810 0.000 0.749 0.813 0.799
STILO 0.825 0.786 0.648 0.742 0.713 0.580 0.734 0.752 0.865 0.861 0.701 0.854 0.717 0.686 0.618 0.716 0.741 0.700 0.668 0.702 0.742 0.868 0.652 0.748 0.650 0.717 0.749 0.000 0.743 0.713
CELTA 0.510 0.450 0.848 0.220 0.420 0.647 0.714 0.386 0.900 0.918 0.454 0.868 0.891 0.598 0.823 0.432 0.838 0.887 0.728 0.863 0.807 0.898 0.622 0.741 0.755 0.742 0.813 0.743 0.000 0.498
CORHA 0.582 0.563 0.827 0.460 0.529 0.665 0.652 0.488 0.900 0.916 0.502 0.877 0.851 0.623 0.776 0.508 0.822 0.849 0.702 0.818 0.798 0.895 0.616 0.726 0.662 0.703 0.799 0.713 0.498 0.000

Visualizamos esta matriz como fizemos na aplicação anterior.

O passo seguinte é realizar o escalonamento multidimensional com a função cmdscale() e examinar os autovalores.

Embora um dos autovalores seja negativo, os dois primeiros autovalores apresentam uma magnitude muito maior em relação aos demais. Portanto, há novamente uma indicação de que os dados podem ser representados bidimensionalmente. A partir desta representação bidimensional construímos um dendrograma como na aplicação anterior.

Com base no dendrograma acima, optamos, nessa aplicação, por considerar \(3\) clusters.

Finalmente, representamos os carros bidimensionalmente, indicando os clusters obtidos.

Os clusters formados podem ser utilizados de diversas maneiras. Por exemplo, os carros dentro de um mesmo cluster indicam concorrentes diretos, e esta informação pode ser utilizada por um dos players do mercado no monitoramento das atividades das empresas concorrentes. Sistemas de recomendação simples também podem ser construídos. Por exemplo, usuários que navegaram na Internet fazendo buscas pelo modelo “Saveiro”, poderiam ser expostos a anúncios de modelos do mesmo cluster (“Pálio”, “Parati” etc).

1.2.3 Aplicação 3 - Mercado de Scotch whisky

Nesta aplicação, consideramos dados de uma pesquisa sobre hábitos de consumo de whisky de \(2.218\) consumidores regulares. Esses consumidores foram solicitados a indicar quais whiskies, de uma lista de \(21\) marcas, consomem regularmente. Desta forma, a resposta de cada consumidor é representada por um vetor de \(0\)’s e \(1\)’s de comprimento \(21\). Nesta codificação, \(1\) indica que a marca é consumida regularmente, enquanto \(0\) indica a marca não é consumida regularmente. Esses dados fazem parte da biblioteca bayesm

Chivas.Regal Dewar.s.White.Label Johnnie.Walker.Black.Label J…B Johnnie.Walker.Red.Label Other.Brands Glenlivet Cutty.Sark Glenfiddich Pinch..Haig. Clan.MacGregor Ballantine Macallan Passport Black…White Scoresby.Rare Grants Ushers White.Horse Knockando the.Singleton
1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
1 0 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Assim, vemos que o primeiro indivíduo é consumidor regular das marcas “Chivas Regal”, “Johnnie Walker Red Label”, “Other Brands”, “Glenlivet” e “Glenfiddich”.

Vamos definir a penetração de cada marca como a porcentagem de cada menção específica em relação ao total de menções de todas as marcas.

As três marcas com maior penetração são: “Chivas Regal”, “Dewars White Label” e “Johnnie Walker Black Label”. Já as três marcas com menor penetração foram “White Horse”, “Knockando” e “The Singleton”.

Para o caso de respostas binárias, conforme discutido anteriormente, definimos distantes entre os whiskies utilizando a distância de Jaccard.

Inspecionemos as distâncias entre as marcas “Chivas Regal”, “Dewars White Label” e “Passport”.

##                     Chivas.Regal Dewar.s.White.Label  Passport
## Chivas.Regal           0.0000000           0.8394737 0.9601874
## Dewar.s.White.Label    0.8394737           0.0000000 0.9527972
## Passport               0.9601874           0.9527972 0.0000000

Uma vez que possuímos a matriz de distâncias, podemos aplicar a técnica de escalonamento multidimensional.

Vejamos o comportamento dos autovalores produzidos pelo processo de escalonamento multidimensional.

Neste caso, temos de fato uma matriz de distâncias, pois a desigualdade triangular é satisfeita pela distância de Jaccard. Isso faz com que todos os autovalores sejam positivos. No mais, procedemos como nas aplicações anteriores.

Com base no dendrograma acima, vamos considerar \(6\) clusters de whiskies.

Façamos a representação bidimensional dos clusters e seus respectivos whiskies.

Os clusters obtidos revelam a estrutura de concorrência no mercado de Scotch whisky. Entre outras possibilidades, as aplicações vão desde a formação de estoques e pedidos de compra, até a organização de prateleiras em pontos de venda e sistemas de recomendação.