[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