Cluster - agrupar grupos de pessoas

Boa tarde, pessoal Estou com dificuldade para entender como fazer para juntar os dados e formar grupos na análise e mostrar graficamente isso. Estou usando o seguinte banco de dados: encr.pw/Gs0ZK Estou usando o seguinte comando: dac<-read.table("clipboard",sep="\t", header=T, dec=".", row.names=1) dac attach(dac) # Ward Hierarchical Clustering d<-vegdist(dac[,-1],distance="jaccard")# distance matrix fit <- hclust(d, method="ward.D2") plot(fit) # display dendogram groups <- cutree(fit, k=5) # cut tree into 5 clusters # draw dendogram with red borders around the 5 clusters rect.hclust(fit, k=5, border="red") que gera esse gráfico: [image: image.png] No entanto, queria que formasse de acordo como nome dos grupos, semelhante a esse gráfico, mas em função dos meus dois atores avaliados (pescador e comunidade). [image: image.png] Só que no meu caso, ao invés de ser as cidades, são os grupos de pessoas. Aos que puderem ajudar eu agradeço Muito obrigada Abraços,

Fazer a transposição da matrix daniel On Tue, Jan 17, 2023, 3:33 PM Chiara Lubich por (R-br) < r-br@listas.c3sl.ufpr.br> wrote:
Boa tarde, pessoal
Estou com dificuldade para entender como fazer para juntar os dados e formar grupos na análise e mostrar graficamente isso.
Estou usando o seguinte banco de dados: encr.pw/Gs0ZK
Estou usando o seguinte comando: dac<-read.table("clipboard",sep="\t", header=T, dec=".", row.names=1) dac attach(dac) # Ward Hierarchical Clustering d<-vegdist(dac[,-1],distance="jaccard")# distance matrix fit <- hclust(d, method="ward.D2") plot(fit) # display dendogram groups <- cutree(fit, k=5) # cut tree into 5 clusters # draw dendogram with red borders around the 5 clusters rect.hclust(fit, k=5, border="red")
que gera esse gráfico: [image: image.png] No entanto, queria que formasse de acordo como nome dos grupos, semelhante a esse gráfico, mas em função dos meus dois atores avaliados (pescador e comunidade). [image: image.png] Só que no meu caso, ao invés de ser as cidades, são os grupos de pessoas.
Aos que puderem ajudar eu agradeço
Muito obrigada
Abraços,
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Oi, Daniel, obrigada pelo retorno Eu fiz a transposição, no entanto a organização fica em função dos objetos (importância, recurso, etc). Ver imagem aqui-->acesse.one/dqXgX Eu queria que ficasse em função de quem respondeu, ou seja, os atores que estou avaliando (pescador e comunidade). Pois quero ver se esses atores têm a mesma opinião sobre o ambiente, visto que um é visitante e outro é residente do local. Como você pode ver na tabela tenho 200 linhas de respostas (Pescador -> N=100 e Comunidade -> N=100). Minha tabela é essa -->encr.pw/Gs0ZK Mas queria algo assim, mas ao invés de organizar por cidade (Barcelos, Ausentes etc) como na imagem, quero organizar por ator (pescador e comunidade) -->l1nk.dev/xHbST Espero ter explicado melhor! Muito obrigada e aguardo o retorno Em ter., 17 de jan. de 2023 às 14:45, Daniel Guimarães Tiezzi < dtiezzi@usp.br> escreveu:
Fazer a transposição da matrix
daniel
On Tue, Jan 17, 2023, 3:33 PM Chiara Lubich por (R-br) < r-br@listas.c3sl.ufpr.br> wrote:
Boa tarde, pessoal
Estou com dificuldade para entender como fazer para juntar os dados e formar grupos na análise e mostrar graficamente isso.
Estou usando o seguinte banco de dados: encr.pw/Gs0ZK
Estou usando o seguinte comando: dac<-read.table("clipboard",sep="\t", header=T, dec=".", row.names=1) dac attach(dac) # Ward Hierarchical Clustering d<-vegdist(dac[,-1],distance="jaccard")# distance matrix fit <- hclust(d, method="ward.D2") plot(fit) # display dendogram groups <- cutree(fit, k=5) # cut tree into 5 clusters # draw dendogram with red borders around the 5 clusters rect.hclust(fit, k=5, border="red")
que gera esse gráfico: [image: image.png] No entanto, queria que formasse de acordo como nome dos grupos, semelhante a esse gráfico, mas em função dos meus dois atores avaliados (pescador e comunidade). [image: image.png] Só que no meu caso, ao invés de ser as cidades, são os grupos de pessoas.
Aos que puderem ajudar eu agradeço
Muito obrigada
Abraços,
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Boa tarde Chiara Desculpe por sugerir transpor a matriz. Eu interpretei de forma equivocada a sa questão. O tipo de organização que você está querendo fazer não vai acontecer. O algoritmo de clusterização que está usando é não supervisionado e ele irá agrupar cada pessoa que respondeu o questionário de acordo com a distância entre eles. No caso da cidade o exemplo agrupou por cidades pois havia uma linha para cada cidade com vários atributos. Você têm uma linha com vários atributos para cada pessoa. As pessoas pertencem ao mesmo grupo. O que você pode fazer é aplicar um algoritmo supervisionado, já que você sabe de qual grupo a pessoa pertence. Ou, como são dois grupos, verificar se a clusterização separa as pessoas nos dois grupos de forma eficaz. Por exemplo: df <- read.csv('~/Downloads/Questionários cluster.xlsx - Agrupamento.csv') head(df) dim(df) table(df$X) head(df[,-c(1,2)]) # Ward Hierarchical Clustering d <- vegan::vegdist(df[,-c(1,2)],distance="jaccard")# distance matrix fit <- hclust(d, method="ward.D2") groups <- cutree(fit, k=2) # draw dendogram with red borders around the 5 clusters plot(fit) # display dendogram plot.new() rect.hclust(fit, k=2, border="red") table(df$X, groups) groups 1 2 COM_LOCAL 90 10 PESCADOR_ESPORTIVO 63 37 Em porcentagens: round(prop.table(table(df$X, groups),2)*100,1) groups 1 2 COM_LOCAL 58.8 21.3 PESCADOR_ESPORTIVO 41.2 78.7 Veja que o algoritmo, de uma forma não muito eficaz, é capaz de separar os grupos baseado na resposta. Agora, qual seria o seu teste de hipótese aqui? Se você aplicar um um teste para verificar que a distribuição dos casos na tabela é uniforme ou não: chisq.test(df$X, groups) Pearson's Chi-squared test with Yates' continuity correction data: df$X and groups X-squared = 18.801, df = 1, p-value = 1.451e-05 Vai notar que você deveria rejeitar a H0. Mas depende muito do que você está investigando e qual é a sua hipótese. Outra questão é verificar se o método de cálculo de distância é aplicável para as suas variável e se o Ward.D é o melhor método de agrupamento. Aparentemente as suas variáveis são categóricas. Espero ter ajudado. Daniel ---------------------------------------------------------------- Daniel Tiezzi, MD, PhD Oncologia / Mastologia Professor Associado - Livre Docente Departamento de Ginecologia e Obstetrícia Setor de Mastologia e Oncologia Ginecológica Faculdade de Medicina de Ribeirão Preto - USP Tel.: 16 3602-2488 https://github.com/dtiezzi http://danieltiezzi.pro.br e-mail: dtiezzi@usp.br
On 20 Jan 2023, at 10:49, Chiara Lubich <lubichchiara@gmail.com> wrote:
Oi, Daniel, obrigada pelo retorno
Eu fiz a transposição, no entanto a organização fica em função dos objetos (importância, recurso, etc). Ver imagem aqui-->acesse.one/dqXgX Eu queria que ficasse em função de quem respondeu, ou seja, os atores que estou avaliando (pescador e comunidade). Pois quero ver se esses atores têm a mesma opinião sobre o ambiente, visto que um é visitante e outro é residente do local.
Como você pode ver na tabela tenho 200 linhas de respostas (Pescador -> N=100 e Comunidade -> N=100). Minha tabela é essa -->encr.pw/Gs0ZK <http://encr.pw/Gs0ZK>
Mas queria algo assim, mas ao invés de organizar por cidade (Barcelos, Ausentes etc) como na imagem, quero organizar por ator (pescador e comunidade) -->l1nk.dev/xHbST <http://l1nk.dev/xHbST>
Espero ter explicado melhor!
Muito obrigada e aguardo o retorno
Em ter., 17 de jan. de 2023 às 14:45, Daniel Guimarães Tiezzi <dtiezzi@usp.br <mailto:dtiezzi@usp.br>> escreveu: Fazer a transposição da matrix
daniel
On Tue, Jan 17, 2023, 3:33 PM Chiara Lubich por (R-br) <r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br>> wrote: Boa tarde, pessoal
Estou com dificuldade para entender como fazer para juntar os dados e formar grupos na análise e mostrar graficamente isso.
Estou usando o seguinte banco de dados: encr.pw/Gs0ZK <http://encr.pw/Gs0ZK>
Estou usando o seguinte comando: dac<-read.table("clipboard",sep="\t", header=T, dec=".", row.names=1) dac attach(dac) # Ward Hierarchical Clustering d<-vegdist(dac[,-1],distance="jaccard")# distance matrix fit <- hclust(d, method="ward.D2") plot(fit) # display dendogram groups <- cutree(fit, k=5) # cut tree into 5 clusters # draw dendogram with red borders around the 5 clusters rect.hclust(fit, k=5, border="red")
que gera esse gráfico: <image.png> No entanto, queria que formasse de acordo como nome dos grupos, semelhante a esse gráfico, mas em função dos meus dois atores avaliados (pescador e comunidade). <image.png> Só que no meu caso, ao invés de ser as cidades, são os grupos de pessoas.
Aos que puderem ajudar eu agradeço
Muito obrigada
Abraços,
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br <https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia <http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.

Oi, Daniel Muito obrigada pela ajuda e seu tempo. Ajudou a esclarecer bastante coisa! Irei verificar outros métodos de agrupamento como você sugeriu. Abraçi Em sex., 20 de jan. de 2023 às 13:34, Daniel Guimarães Tiezzi < dtiezzi@usp.br> escreveu:
Boa tarde Chiara
Desculpe por sugerir transpor a matriz. Eu interpretei de forma equivocada a sa questão.
O tipo de organização que você está querendo fazer não vai acontecer. O algoritmo de clusterização que está usando é não supervisionado e ele irá agrupar cada pessoa que respondeu o questionário de acordo com a distância entre eles.
No caso da cidade o exemplo agrupou por cidades pois havia uma linha para cada cidade com vários atributos. Você têm uma linha com vários atributos para cada pessoa. As pessoas pertencem ao mesmo grupo. O que você pode fazer é aplicar um algoritmo supervisionado, já que você sabe de qual grupo a pessoa pertence. Ou, como são dois grupos, verificar se a clusterização separa as pessoas nos dois grupos de forma eficaz.
Por exemplo: df <- read.csv('~/Downloads/Questionários cluster.xlsx - Agrupamento.csv') head(df) dim(df) table(df$X) head(df[,-c(1,2)]) # Ward Hierarchical Clustering d <- vegan::vegdist(df[,-c(1,2)],distance="jaccard")# distance matrix fit <- hclust(d, method="ward.D2") groups <- cutree(fit, k=2) # draw dendogram with red borders around the 5 clusters
plot(fit) # display dendogram plot.new() rect.hclust(fit, k=2, border="red")
table(df$X, groups)
groups 1 2 COM_LOCAL 90 10 PESCADOR_ESPORTIVO 63 37
Em porcentagens:
round(prop.table(table(df$X, groups),2)*100,1) groups 1 2 COM_LOCAL 58.8 21.3 PESCADOR_ESPORTIVO 41.2 78.7
Veja que o algoritmo, de uma forma não muito eficaz, é capaz de separar os grupos baseado na resposta.
Agora, qual seria o seu teste de hipótese aqui?
Se você aplicar um um teste para verificar que a distribuição dos casos na tabela é uniforme ou não:
chisq.test(df$X, groups)
Pearson's Chi-squared test with Yates' continuity correction
data: df$X and groups X-squared = 18.801, df = 1, p-value = 1.451e-05
Vai notar que você deveria rejeitar a H0.
Mas depende muito do que você está investigando e qual é a sua hipótese.
Outra questão é verificar se o método de cálculo de distância é aplicável para as suas variável e se o Ward.D é o melhor método de agrupamento. Aparentemente as suas variáveis são categóricas.
Espero ter ajudado.
Daniel
---------------------------------------------------------------- Daniel Tiezzi, MD, PhD Oncologia / Mastologia Professor Associado - Livre Docente Departamento de Ginecologia e Obstetrícia Setor de Mastologia e Oncologia Ginecológica Faculdade de Medicina de Ribeirão Preto - USP Tel.: 16 3602-2488 https://github.com/dtiezzi http://danieltiezzi.pro.br e-mail: dtiezzi@usp.br
On 20 Jan 2023, at 10:49, Chiara Lubich <lubichchiara@gmail.com> wrote:
Oi, Daniel, obrigada pelo retorno
Eu fiz a transposição, no entanto a organização fica em função dos objetos (importância, recurso, etc). Ver imagem aqui-->acesse.one/dqXgX Eu queria que ficasse em função de quem respondeu, ou seja, os atores que estou avaliando (pescador e comunidade). Pois quero ver se esses atores têm a mesma opinião sobre o ambiente, visto que um é visitante e outro é residente do local.
Como você pode ver na tabela tenho 200 linhas de respostas (Pescador -> N=100 e Comunidade -> N=100). Minha tabela é essa -->encr.pw/Gs0ZK
Mas queria algo assim, mas ao invés de organizar por cidade (Barcelos, Ausentes etc) como na imagem, quero organizar por ator (pescador e comunidade) -->l1nk.dev/xHbST
Espero ter explicado melhor!
Muito obrigada e aguardo o retorno
Em ter., 17 de jan. de 2023 às 14:45, Daniel Guimarães Tiezzi < dtiezzi@usp.br> escreveu:
Fazer a transposição da matrix
daniel
On Tue, Jan 17, 2023, 3:33 PM Chiara Lubich por (R-br) < r-br@listas.c3sl.ufpr.br> wrote:
Boa tarde, pessoal
Estou com dificuldade para entender como fazer para juntar os dados e formar grupos na análise e mostrar graficamente isso.
Estou usando o seguinte banco de dados: encr.pw/Gs0ZK
Estou usando o seguinte comando: dac<-read.table("clipboard",sep="\t", header=T, dec=".", row.names=1) dac attach(dac) # Ward Hierarchical Clustering d<-vegdist(dac[,-1],distance="jaccard")# distance matrix fit <- hclust(d, method="ward.D2") plot(fit) # display dendogram groups <- cutree(fit, k=5) # cut tree into 5 clusters # draw dendogram with red borders around the 5 clusters rect.hclust(fit, k=5, border="red")
que gera esse gráfico: <image.png> No entanto, queria que formasse de acordo como nome dos grupos, semelhante a esse gráfico, mas em função dos meus dois atores avaliados (pescador e comunidade). <image.png> Só que no meu caso, ao invés de ser as cidades, são os grupos de pessoas.
Aos que puderem ajudar eu agradeço
Muito obrigada
Abraços,
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Estou confuso: Se a ideia é obter a distância de Jaccard entre dois grupos vc não precisa do dendrograma, mas sim o valor dessa distância, não é? Algo na linha (ñ testado *caveat emptor*): jccard(dac[1:100,-1], dac[101:200,-1) HTH -- Cesar Rabak On Fri, Jan 20, 2023 at 10:50 AM Chiara Lubich por (R-br) < r-br@listas.c3sl.ufpr.br> wrote:
Oi, Daniel, obrigada pelo retorno
Eu fiz a transposição, no entanto a organização fica em função dos objetos (importância, recurso, etc). Ver imagem aqui-->acesse.one/dqXgX Eu queria que ficasse em função de quem respondeu, ou seja, os atores que estou avaliando (pescador e comunidade). Pois quero ver se esses atores têm a mesma opinião sobre o ambiente, visto que um é visitante e outro é residente do local.
Como você pode ver na tabela tenho 200 linhas de respostas (Pescador -> N=100 e Comunidade -> N=100). Minha tabela é essa -->encr.pw/Gs0ZK
Mas queria algo assim, mas ao invés de organizar por cidade (Barcelos, Ausentes etc) como na imagem, quero organizar por ator (pescador e comunidade) -->l1nk.dev/xHbST
Espero ter explicado melhor!
Muito obrigada e aguardo o retorno
Em ter., 17 de jan. de 2023 às 14:45, Daniel Guimarães Tiezzi < dtiezzi@usp.br> escreveu:
Fazer a transposição da matrix
daniel
On Tue, Jan 17, 2023, 3:33 PM Chiara Lubich por (R-br) < r-br@listas.c3sl.ufpr.br> wrote:
Boa tarde, pessoal
Estou com dificuldade para entender como fazer para juntar os dados e formar grupos na análise e mostrar graficamente isso.
Estou usando o seguinte banco de dados: encr.pw/Gs0ZK
Estou usando o seguinte comando: dac<-read.table("clipboard",sep="\t", header=T, dec=".", row.names=1) dac attach(dac) # Ward Hierarchical Clustering d<-vegdist(dac[,-1],distance="jaccard")# distance matrix fit <- hclust(d, method="ward.D2") plot(fit) # display dendogram groups <- cutree(fit, k=5) # cut tree into 5 clusters # draw dendogram with red borders around the 5 clusters rect.hclust(fit, k=5, border="red")
que gera esse gráfico: [image: image.png] No entanto, queria que formasse de acordo como nome dos grupos, semelhante a esse gráfico, mas em função dos meus dois atores avaliados (pescador e comunidade). [image: image.png] Só que no meu caso, ao invés de ser as cidades, são os grupos de pessoas.
Aos que puderem ajudar eu agradeço
Muito obrigada
Abraços,
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (3)
-
Cesar Rabak
-
Chiara Lubich
-
Daniel Guimarães Tiezzi