set.seed(1234)
## seriate dist of 50 flowers from the iris data set
data("iris")
x <- as.matrix(iris[-5])
x <- x[sample(1:nrow(x), 50),]
rownames(x) <- 1:50
d <- dist(x)
## Create a list of different seriations
methods <- c("HC_single", "HC_complete", "OLO", "GW", "R2E", "VAT",
"TSP", "Spectral", "SPIN", "MDS", "Identity", "Random")
os <- sapply(methods, function(m) {
cat("Doing", m, "... ")
tm <- system.time(o <- seriate(d, method = m))
cat("took", tm[3],"s.
")
o
})
## Compare the methods using distances (default is based on
## Spearman's rank correlation coefficient)
ds <- ser_dist(os)
hmap(ds, margin=c(7,7))
## Compare using actual correlation (reversed orders have low or
## negative correlation!)
cs <- ser_cor(os)
hmap(cs, margin=c(7,7))
## Also check reversed seriation orders.
## Now all but random and identity are highly positive correlated
cs2 <- ser_cor(os, reverse = TRUE)
hmap(cs2, margin=c(7,7))
## Use Manhattan distance of the ranks (i.e., Spearman's foot rule)
ds <- ser_dist(os, method="manhattan")
plot(hclust(ds))
## Also check reversed orders
ds <- ser_dist(os, method="manhattan", reverse = TRUE)
plot(hclust(ds))
Run the code above in your browser using DataLab