[R-br] Dendrograma com UPGMA e Mahalanobis

Alexandre dos Santos alexandresantosbr em yahoo.com.br
Sexta Junho 24 16:28:38 BRT 2011


Boa Tarde Hugo,

 

     Certa vez precisei fazer o mesmo (calclular a matriz de distâncias de
Mahalanobis e após fazer o dendrograma) e o Walmes me passou o seguinte post
que me ajudou muito,

 

D2Mah <- function(y, x){
  stopifnot(is.data.frame(y), !missing(x))
  stopifnot(dim(y)[1] != dim(x)[1])
  y <- as.matrix(y)
  x <- as.factor(x)
  man <- manova(y ~ x)
  E <- summary(man)$SS[2]
  #Matrix E
  S <- as.matrix(E$Residuals)/man$df.residual
  InvS <- solve(S)
  mds <- matrix(unlist(by(y, x, mean)), byrow=T, ncol=ncol(y))
  f <- function(a,b) mapply(function(a,b) mahalanobis(mds[a,], mds[b,],
InvS, TRUE), a, b)
  seq. <- seq(length = nrow(mds))
  names(seq.) <- levels(x)
  D2 <- outer(seq., seq., f)
}

# # test # #
D2M <- D2Mah(iris[,1:4], iris[,5])
print(D2M)
dend <- hclust(as.dist(sqrt(D2M)), method='complete')
plot(dend) 

Veja se é isso mesmo que você procura. As fontes de consulta estão abaixo:
http://r-project.markmail.org/message/ybhsyzshjzhuktsn?q=hclust+mahalanobis
http://r-project.markmail.org/message/tml5eqm4v4grzp25?q=hclust+mahalanobis



Abraço,

 

Alexandre dos Santos

Ingenieur forestier, Msc.

INRA- Biostatistique et Processus Spatiaux (BioSP)

Domaine Saint-Paul
Site Agroparc 
84914 -  Avignon - France
Tél. : +33 (0)6 87 95 16 29

 

 

 

 

From: r-br-bounces em listas.c3sl.ufpr.br
[mailto:r-br-bounces em listas.c3sl.ufpr.br] On Behalf Of Ivan Bezerra Allaman
Sent: sexta-feira, 24 de junho de 2011 21:14
To: R Brasil
Subject: Re: [R-br] Dendrograma com UPGMA e Mahalanobis

 

Boa tarde Hugo!

 

Ainda não estou conseguindo ler o seu arquivo. O que pode ser trivial para
vc, para nós que estamos querendo ajudar as vezes não é. Por exemplo, salvei
o seu arquivo com o nome de "clipboard", e mesmo assim a leitura do arquivo
não sai. É preciso que vc passe detalhadamente o CMR, desde a leitura dos
dados até a execução dos comandos. Não seria necessário primeiro um
read.csv, read.table, ...., etc para ler o arquivo? Percebe-se que o seu CMR
ainda está incompleto, pois "clone" em nenhum momento é requisitado pelas
funções. Eu tenho um pouco de experiência com a "graphics", por isso é
provável que eu possa ajudá-lo. Se vc quer utilizar  a distância de
Mahalanobis, procure por pacotes que tenham esta metodologia, pois ser
digitar ?dist verás que não tem a metodologia de Mahalanobis. Instale a
library "sos" para procurar por pacotes que tenha tal metodologia.

 

install.packages("sos")

library(sos)

???"Mahalanobis distance"

 

Abraço.

 

Allaman

(S,f,P)

 

M.Sc Ivan Bezerra Allaman 
Zootecnista
Doutorando em Produção Animal/Aquicultura - UFLA 
email e msn - ivanalaman em yahoo.com.br 
Tel: (35)3826-6608/9900-2924

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20110624/233d5dec/attachment.html>


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