[R] Clustering and Rand Index
Mark Hempelmann
neo27 at t-online.de
Sat Jan 7 13:38:30 CET 2006
Dear WizaRds,
I am trying to compute the (adjusted) Rand Index in order to comprehend
the variable selection heuristic (VS-KM) according to Brusco/ Cradit
2001 (Psychometrika 66 No.2 p.249-270, 2001).
Unfortunately, I am unable to correctly use
cl_ensemble and cl_agreement (package: clue). Here is what I am trying
to do:
library(clue)
## Let p1..p4 be four partitions of the kind
p1=c(1,1,1,2,2,2,3,3,3)
p2=c(1,1,1,3,2,2,3,3,2)
p3=c(1,2,1,3,1,3,1,3,2)
p4=c(1,2,1,3,1,3,1,3,2)
Each object within the partitions is assigned to cluster 1,2,3
respectively. Now I have to create a cl_ensemble object, so that I can
calculate the Rand index:
ens <- cl_ensemble(list=c(p1,p2,p3,p4))
which only leads to
"Ensemble elements must be all partitions or all hierarchies."
Although I understand that p1..p4 are vectors in this example, they
represent the partitions I want to use. I don't know how to create the
necessary partition object in order to transform it into an ensemble
object, so that I can run cl_agreement - so much transformation, so
little time...
I have also tried to work around this prbl, creating partitions via
k-means, but I do not get the same partitions I need to validate. I am
sure the following algorithm needs improvement, especially the use of
putting matrices into a list through a for loop (ouch) - I am very
grateful for your comments of improving this terrible piece of R-work
(is it easier to do sthg with apply?).
Thank you very much for your help and support
Mark
mat <- matrix( c(6,7,8,2,3,4,12,14,14, 14,15,13,3,1,2,3,4,2,
15,3,10,5,11,7,13,6,1, 15,4,10,6,12,8,12,7,1), ncol=9, byrow=T )
rownames(mat) <- paste("v", 1:4, sep="" )
clus.mat <- vector(mode="list", length=4)
for (i in 1:4){
clus.mat[[i]] <- kmeans(mat[i,], centers=3, nstart=1,
algorithm="MacQueen") ## run kmeans on each row (clustering per single
variable)
}
clus.mat
More information about the R-help
mailing list