[R-br] Cluster - agrupar grupos de pessoas

Chiara Lubich lubichchiara em gmail.com
Sex Jan 20 15:26:58 -03 2023


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


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