
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@listas.c3sl.ufpr.br [mailto:r-br-bounces@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@yahoo.com.br Tel: (35)3826-6608/9900-2924