COMO FAZER O R IDENTIFICAR MEUS GRUPOS NO CLUSTER?
2 participantes
Página 1 de 1
COMO FAZER O R IDENTIFICAR MEUS GRUPOS NO CLUSTER?
Boa noite a todos
Eu fiz o cluster e estou tentando fazer com que seja identificado os 4 grupos que se formaram. Quando faço o cluster com os dados na vertical ele identifica os 4 grupos mas quando coloco na horizontal eu não consigo fazer com que os grupos apareçam, alguém pode me ajudar? Sei que a dúvida é básica mas não estou conseguindo.
Abraços
Abaixo envio os dados:
par(mar=c(10,3,2,10))
plot(as.dendrogram(cluster.guildas),horiz=T)
rect.hclust(cluster.guildas, horizontal=T, k=4)
Eu fiz o cluster e estou tentando fazer com que seja identificado os 4 grupos que se formaram. Quando faço o cluster com os dados na vertical ele identifica os 4 grupos mas quando coloco na horizontal eu não consigo fazer com que os grupos apareçam, alguém pode me ajudar? Sei que a dúvida é básica mas não estou conseguindo.
Abraços
Abaixo envio os dados:
par(mar=c(10,3,2,10))
plot(as.dendrogram(cluster.guildas),horiz=T)
rect.hclust(cluster.guildas, horizontal=T, k=4)
Nelson Rodrigues- Mensagens : 3
Data de inscrição : 07/01/2016
Re: COMO FAZER O R IDENTIFICAR MEUS GRUPOS NO CLUSTER?
Oi, Nelson!
Testei aqui, e acredito que a função rect.hclust não funcione com o cluster na horizontal, pois para construí-lo nós mudamos a classe do objeto de cluster para dendrograma.
Vou buscar mais informações para saber se há algum outro comando alternativo, ok?
Testei aqui, e acredito que a função rect.hclust não funcione com o cluster na horizontal, pois para construí-lo nós mudamos a classe do objeto de cluster para dendrograma.
Vou buscar mais informações para saber se há algum outro comando alternativo, ok?
Re: COMO FAZER O R IDENTIFICAR MEUS GRUPOS NO CLUSTER?
Achei uma solução, Nelson, a partir de uma dúvida exatamente como a sua que foi respondida no Stack Overflow:
http://stackoverflow.com/questions/24140339/tree-cut-and-rectangles-around-clusters-for-a-horizontal-dendrogram-in-r
Na verdade há mais de uma solução lá, incluindo uma pelo ggplot, caso você queira olhar.
A solução mais direta é criar uma versão alternativa da função rect.hclust. Basta copiar e colar o código no R para criar a função:
E depois, com o seu cluster na horizontal aberto, executar a nova função assim:
rhc(cluster.guildas, k = 4, border = "red")
Avise se deu certo, ok?
http://stackoverflow.com/questions/24140339/tree-cut-and-rectangles-around-clusters-for-a-horizontal-dendrogram-in-r
Na verdade há mais de uma solução lá, incluindo uma pelo ggplot, caso você queira olhar.
A solução mais direta é criar uma versão alternativa da função rect.hclust. Basta copiar e colar o código no R para criar a função:
- Código:
rhc <- function (tree, k = NULL, which = NULL, x = NULL, h = NULL, border = 2,
cluster = NULL)
{
if (length(h) > 1L | length(k) > 1L)
stop("'k' and 'h' must be a scalar")
if (!is.null(h)) {
if (!is.null(k))
stop("specify exactly one of 'k' and 'h'")
k <- min(which(rev(tree$height) < h))
k <- max(k, 2)
}
else if (is.null(k))
stop("specify exactly one of 'k' and 'h'")
if (k < 2 | k > length(tree$height))
stop(gettextf("k must be between 2 and %d", length(tree$height)),
domain = NA)
if (is.null(cluster))
cluster <- cutree(tree, k = k)
clustab <- table(cluster)[unique(cluster[tree$order])]
m <- c(0, cumsum(clustab))
if (!is.null(x)) {
if (!is.null(which))
stop("specify exactly one of 'which' and 'x'")
which <- x
for (n in seq_along(x)) which[n] <- max(which(m < x[n]))
}
else if (is.null(which))
which <- 1L:k
if (any(which > k))
stop(gettextf("all elements of 'which' must be between 1 and %d",
k), domain = NA)
border <- rep_len(border, length(which))
retval <- list()
for (n in seq_along(which)) {
rect(
ybottom = m[which[n]] + 0.66,
xright = par("usr")[3L],
ytop = m[which[n] + 1] + 0.33,
xleft = mean(rev(tree$height)[(k - 1):k]),
border = border[n])
retval[[n]] <- which(cluster == as.integer(names(clustab)[which[n]]))
}
invisible(retval)
}
E depois, com o seu cluster na horizontal aberto, executar a nova função assim:
rhc(cluster.guildas, k = 4, border = "red")
Avise se deu certo, ok?
Re: COMO FAZER O R IDENTIFICAR MEUS GRUPOS NO CLUSTER?
SALVEEEEEEEEEEEEEEEE Marcos, sem comentários, muito obrigado
Deu certinho, agora ficou show. Agora to apanhando para colocar a legenda (coeficiente de correlação cofenética) no gráfico mas chego lá. A legenda aparece mas fica sobrepondo as minhas guildas.
Bom domingo e mais uma vez obrigado
Deu certinho, agora ficou show. Agora to apanhando para colocar a legenda (coeficiente de correlação cofenética) no gráfico mas chego lá. A legenda aparece mas fica sobrepondo as minhas guildas.
Bom domingo e mais uma vez obrigado
Nelson Rodrigues- Mensagens : 3
Data de inscrição : 07/01/2016
Re: COMO FAZER O R IDENTIFICAR MEUS GRUPOS NO CLUSTER?
Que legal, Nelson, que bom que deu certo!
Sobre incluir o texto, você pode ir pela função legend() e tentar ajustar a posição. Mas se estiver muito difícil, uma opção é usar a função mtext(), que coloca texto na margem, do lado "de fora" do gráfico .
Aqui eu dou algumas dicas sobre a inclusão de textos nos gráficos:
https://cantinhodor.wordpress.com/2015/04/24/graficos-no-r-mexendo-em-nomes-dos-eixos-e-algumas-outras-coisinhas/
Abraços, e qualquer coisa pergunte aqui.
Sobre incluir o texto, você pode ir pela função legend() e tentar ajustar a posição. Mas se estiver muito difícil, uma opção é usar a função mtext(), que coloca texto na margem, do lado "de fora" do gráfico .
Aqui eu dou algumas dicas sobre a inclusão de textos nos gráficos:
https://cantinhodor.wordpress.com/2015/04/24/graficos-no-r-mexendo-em-nomes-dos-eixos-e-algumas-outras-coisinhas/
Abraços, e qualquer coisa pergunte aqui.
Tópicos semelhantes
» Extraindo grupos de um cluster - dúvida da Danielle Castor no portal, webnário de 22-04-2019
» Como modificar os labels do cluster
» Como fazer um gráfico com dois eixos Y
» Atividade do módulo 1
» Uso de Ctrl+R para executar uma função digitada no script (como fazer no Mac???)
» Como modificar os labels do cluster
» Como fazer um gráfico com dois eixos Y
» Atividade do módulo 1
» Uso de Ctrl+R para executar uma função digitada no script (como fazer no Mac???)
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos