[R-br] Cluster - agrupar grupos de pessoas

Daniel Guimarães Tiezzi dtiezzi em usp.br
Sex Jan 20 14:34:39 -03 2023


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 em usp.br

> On 20 Jan 2023, at 10:49, Chiara Lubich <lubichchiara em 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 em usp.br <mailto:dtiezzi em 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 em listas.c3sl.ufpr.br <mailto:r-br em 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 em listas.c3sl.ufpr.br <mailto:R-br em 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.

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20230120/f088fa00/attachment.htm>


Mais detalhes sobre a lista de discussão R-br