Veja como é simples fazer uma análise de cluster,ou conglomerados, no software R.
Em primeiro lugar é preciso organizar sua base de dados. Vamos trabalha com uma base que criei com dados que não são verdadeiros, mas serão úteis para nosso exemplo.
Como já foi dito em outro post no blog a organização dos dados para utilização de Estatística Multivariada e essencial. Nossa base tem apenas 20 registros e 3 variáveis. Essas variáveis são: faturamento (FATUR), quantidade de funcionários (QTD_FUNC) e tempo de vida, em anos, da empresa (TEMP_VIDA).
Na figura 1 é possível ver como estão dispostas as variáveis na base e seus valores também.
Em primeiro lugar é preciso organizar sua base de dados. Vamos trabalha com uma base que criei com dados que não são verdadeiros, mas serão úteis para nosso exemplo.
Como já foi dito em outro post no blog a organização dos dados para utilização de Estatística Multivariada e essencial. Nossa base tem apenas 20 registros e 3 variáveis. Essas variáveis são: faturamento (FATUR), quantidade de funcionários (QTD_FUNC) e tempo de vida, em anos, da empresa (TEMP_VIDA).
Na figura 1 é possível ver como estão dispostas as variáveis na base e seus valores também.
É importante prestar atenção em um detalhe bem interessante que ajuda bastante. Na primeira coluna da tabela temos os nomes das empresas, porém não temos um nome para essa variável. A questão é que se deixarmos esse célula vazia o R entenderá que os nomes das empresas são a "chave" dos registros. Ou nome que faz referência a cada registro da tabela de dados. Agora além de deixar o nome em branco, vejamos o que é preciso fazer para que o software faça esse reconhecimento.
A Figura 1 mostra a tabela de dados do MS Excel. Isso, é pelo fato de que precisamos salvar essa tabela no formato CSV. Essa é uma extensão facilmente reconhecida pelo software R e fácil de ser manipulada. Após salvar essa tabela em CSV vamos abrir o arquivo. Porém clique com o botão direito do mouse, vá em "Abrir com..." e peça para abrir com Bloco de Notas. O arquivo salvo será apresentado como na Figura 2.
A Figura 1 mostra a tabela de dados do MS Excel. Isso, é pelo fato de que precisamos salvar essa tabela no formato CSV. Essa é uma extensão facilmente reconhecida pelo software R e fácil de ser manipulada. Após salvar essa tabela em CSV vamos abrir o arquivo. Porém clique com o botão direito do mouse, vá em "Abrir com..." e peça para abrir com Bloco de Notas. O arquivo salvo será apresentado como na Figura 2.
Note que o primeiro item do arquivo é um ponto e vírgula (;). Antes desse item não se tem nada nada, pois o local onde deveríamos colocar um nome de variável para a coluna contendo o nome das empresas foi deixado em branco. Para que o software R entenda que esses são os nomes das empresas é preciso apagar esse ponto e vírgula. Apenas apague esse item, feche o arquivo. Quando for perguntado se deseja salvar, clique em sim. Assim ficamos com um arquivo como o da Figura 3.
Agora vamos para o R. Vejamos a sequência de códigos necessárias para executar uma segmentação da base proposta no post. Em primeiro lugar é necessário colocar a base no ambiente do R. Podemos começar mostrando ao R onde será nossa pasta de trabalho. Nosso diretório. No ambiente R vá em "File" e escolha a opção "Change dir..." como mostra a Figura 4.
Em seguida uma janela do Explorer se abrirá para que você escolha a paste onde trabalhará com os arquivos do R. Após isso vamos para o comando responsável por trazer a base para dentro do R.
EMPRESAS_V1<-read.csv2(file='EMPRESAS_V1.csv')
Com esse código o R entende que o arquivo de nome "EMPRESAS_V1.csv" está na pasta que foi indicada anteriormente. Seu nome será o mesmo dentro do R, pois determinamos isso logo no começo do código (EMPRESAS_V1<-...). Após essa etapa, sugiro a utilização dessas duas linhas de comando:
variaveis<-names(EMPRESAS_V1)
objetos<-rownames(EMPRESAS_V1)
Com isso o R entende que os nomes da primeira linha da base importada são as variáveis e cada linha refere-se a um registro, sendo a primeira coluna a identificação de cada registro. Agora vamos a função do cluster.
Sugiro a utilização do Cluster Hierárquico para que seja possível, através do Dendograma, identificar o melhor número de cluster possível. Após identificar essa quantidade rodamos um cluster não hierárquico, utilizando o K-means para formação dos grupos. Para mais informações sobre as técnicas eu recomendo três obras Hair et al (2009), Mingoti (2007) e Fávero, et al (2009).
Para executar o cluster hierárquico (método de ward) usaremos o seguinte código:
output_cluster<-hclust(dist(EMPRESAS_V1),method='ward')
Em seguida rodamos o código abaixo para construção do Dendograma.
dendograma_output_cluster<-plclust(output_cluster,labels=objetos,ylab='distancia')
O Dendograma apresentará a seguinte imagem:
EMPRESAS_V1<-read.csv2(file='EMPRESAS_V1.csv')
Com esse código o R entende que o arquivo de nome "EMPRESAS_V1.csv" está na pasta que foi indicada anteriormente. Seu nome será o mesmo dentro do R, pois determinamos isso logo no começo do código (EMPRESAS_V1<-...). Após essa etapa, sugiro a utilização dessas duas linhas de comando:
variaveis<-names(EMPRESAS_V1)
objetos<-rownames(EMPRESAS_V1)
Com isso o R entende que os nomes da primeira linha da base importada são as variáveis e cada linha refere-se a um registro, sendo a primeira coluna a identificação de cada registro. Agora vamos a função do cluster.
Sugiro a utilização do Cluster Hierárquico para que seja possível, através do Dendograma, identificar o melhor número de cluster possível. Após identificar essa quantidade rodamos um cluster não hierárquico, utilizando o K-means para formação dos grupos. Para mais informações sobre as técnicas eu recomendo três obras Hair et al (2009), Mingoti (2007) e Fávero, et al (2009).
Para executar o cluster hierárquico (método de ward) usaremos o seguinte código:
output_cluster<-hclust(dist(EMPRESAS_V1),method='ward')
Em seguida rodamos o código abaixo para construção do Dendograma.
dendograma_output_cluster<-plclust(output_cluster,labels=objetos,ylab='distancia')
O Dendograma apresentará a seguinte imagem:
O Dendograma mostra os agrupamentos sendo realizados através das distâncias calculadas a partir das variáveis da base. De acordo com esse Dendograma, apresentado pela Figura 5, um bom número de agrupamentos seria 4. Isso, pois formamos 4 grupos pensando em um corte como mostra a Figura 6 com uma linha vermelha.
Após tomar esse decisão com relação a quantidade de agrupamentos, sugiro (como já mencionado), executar o k-means. Para isso vamos utilizar o seguinte código:
output_cluster<-kmeans(EMPRESAS_V1,4)
Nessa linha de código, o último item é o 4. Esse está representando nossa quantidade de cluster. Após isso vamos utilizar o código abaixo:
membros<-output_cluster$cluster
matriz<-cbind(EMPRESAS_V1,membros)
write.table(file='EMPRESAS_V2.csv',matriz, sep=';',dec=',')
Na primeira linha de código estamos uma coluna em uma "tabela" chamada "membros". Nela estão os números dos grupos de cada registro da tabela EMPRESAS_V1. Na segunda linha de código estamos criando uma nova tabela, chamada matriz. Nessa temos a tabela original (EMPRESAS_V1) e mais a coluna com o número do cluster (1, 2, 3 ou 4) para cada empresa da base. Por último temos a função "write.table" que está salvando nossa nova base com o nome de EMPRESAS_V2. Essa nova base estará como a Figura 7 está mostrando.
output_cluster<-kmeans(EMPRESAS_V1,4)
Nessa linha de código, o último item é o 4. Esse está representando nossa quantidade de cluster. Após isso vamos utilizar o código abaixo:
membros<-output_cluster$cluster
matriz<-cbind(EMPRESAS_V1,membros)
write.table(file='EMPRESAS_V2.csv',matriz, sep=';',dec=',')
Na primeira linha de código estamos uma coluna em uma "tabela" chamada "membros". Nela estão os números dos grupos de cada registro da tabela EMPRESAS_V1. Na segunda linha de código estamos criando uma nova tabela, chamada matriz. Nessa temos a tabela original (EMPRESAS_V1) e mais a coluna com o número do cluster (1, 2, 3 ou 4) para cada empresa da base. Por último temos a função "write.table" que está salvando nossa nova base com o nome de EMPRESAS_V2. Essa nova base estará como a Figura 7 está mostrando.
Agora é possível identificar as características de cada um dos 4 agrupamentos através das estatísticas das variáveis da base. Esse é um exemplo simples e com foco no aprendizado. Para entender mais sobre esse tema é muito importante estudar a bibliografia recomendada nesse post.
Espero que tenham gostado e em breve estaremos falando mais sobre multivariada e o software R também! Grande abraço a todos!
Referencia Bibliográfica:
[1]. FÁVERO, L. P. L.; BELFIORE, P. P.; CHAN, B. L.; SILVA, F. L. Análise de Dados: Modelagem multivariada para tomada de decisões. Rio de Janeiro: Elsevier, 2009.
[2]. HAIR J. F.; BLACK, W. C.; BADIM, B. J.; ANDERSON, R. E.; TATHAM, R. L. Análise Multivariada de Dados. Porto Alegre: Bookman, 2009.
[3]. MINGOTI, S. P. Análise de Dados Através de Métodos de Estatística Multivariada: Uma Abordagem Aplicada. Belo Horizonte: UFMG, 2007.
Espero que tenham gostado e em breve estaremos falando mais sobre multivariada e o software R também! Grande abraço a todos!
Referencia Bibliográfica:
[1]. FÁVERO, L. P. L.; BELFIORE, P. P.; CHAN, B. L.; SILVA, F. L. Análise de Dados: Modelagem multivariada para tomada de decisões. Rio de Janeiro: Elsevier, 2009.
[2]. HAIR J. F.; BLACK, W. C.; BADIM, B. J.; ANDERSON, R. E.; TATHAM, R. L. Análise Multivariada de Dados. Porto Alegre: Bookman, 2009.
[3]. MINGOTI, S. P. Análise de Dados Através de Métodos de Estatística Multivariada: Uma Abordagem Aplicada. Belo Horizonte: UFMG, 2007.