Nothing
# create several clusterings along a vector
# suitable for plotting
# return a list
# to do: rewrite to complement VegsoupOptimStride, high priority!
# and make both function a pair with similar arguments
# maybe make it a function returning class(VegsoupOptimStride)?
# currently returns a list
.strideVegsoup <- function (obj, method, stride, fidelity.method, partition.method, mode, verbose = TRUE, alpha = 0.05, ...) {
# obj = dta
if (missing(fidelity.method))
fidelity.method = "IndVal.g"
if (missing(partition.method))
partition.method = "flexible"
if (missing(stride))
stride = ceiling(ncol(obj) / 10)
if (missing(mode))
mode = 0
if (verbose) {
cat("compute", stride, "partitions for stride")
cat("\nrun SigFidelity with mode", mode)
}
res <- vector("list", length = stride)
names(res) <- 1:stride
if (verbose) {
pb.stride <- txtProgressBar(min = 1, max = stride,
char = '.', width = 45, style = 3)
}
cpu.time <- system.time({
for (i in 1:stride) {
if (verbose) {
setTxtProgressBar(pb.stride, i)
}
i.prt <- VegsoupPartition(obj, k = i, method = partition.method)
i.fid <- fidelity(i.prt, method = fidelity.method, verbose = FALSE)
stat.fid <- apply(getStat(i.fid), 1, sum)#, 2)
if (i > 1) {
i.sig.fid <- SigFidelity(i.prt, verbose = FALSE)
i.sig.fid <- length(which(i.sig.fid$stat < alpha))
} else {
i.sig.fid <- 0
}
res[[i]] <- list(stat = stat.fid, n.sig = i.sig.fid)
}
stat <- sapply(res, function (x) x[[1]])
n.sig <- sapply(res, function (x) x$n.sig)
diff.stat <- t(rbind(0, apply(stat, 1, diff)))
diff.stat <- apply(diff.stat, 2,
function(x) c(sum(x[x > 0]), sum(x[x < 0])))
})
if (verbose) {
close(pb.stride)
cat("\n computed stride in", cpu.time[3], "sec")
}
res <- list(
stat = stat,
n.sig = n.sig,
diff.stat = diff.stat)
return(invisible(res))
}
setGeneric("Stride",
function (obj, ...)
standardGeneric("Stride")
)
setMethod("Stride",
signature(obj = "Vegsoup"),
.strideVegsoup
)
# plotting method for stride list
plotStride <- function (x) {
# x = Stride(dta)
xx <- 1:(ncol(x$stat)) # getK(obj)
y1 <- x$diff.stat[1, ]
y2 <- x$diff.stat[2, ]
ylim <- range(x$diff.stat)
r1 <- t(rbind(xright = xx - 0.5, ybottom = 0,
xright = xx + 0.5, ytop = y1))
r2 <- t(rbind(xright = xx - 0.5, ybottom = y2,
xright = xx + 0.5, ytop = 0))
bars <- cbind(xx, c(x$n.sig))[-1,] #?
# out.rug <- x@outgroups[,1]
# open plot
par(mar= rep(4,4))
plot(xx, y1, xlim = c(1, max(xx)),
ylim = range(x$diff.stat), type = "n",
xlab = "Cluster", ylab = "Index", frame.plot = FALSE) # getIndex(obj)
# sums of positive differences
apply(r1, 1, function (x) rect(x[1], x[2], x[3], x[4],
col = "grey50"))
# sums of negative differences
apply(r2, 1, function (x) rect(x[1], x[2], x[3], x[4],
col = "grey90"))
# number of significant indicator species
plot.window(xlim = range(xx), ylim = range(bars[,2]))
lines(xx[-1], bars[,2], type = "b",
pch = 16, col = 2, lwd = 2, cex = 1)
axis(4, col = 1, lwd = 1)
# sum of all differnences
plot.window(xlim = range(xx),
ylim = range(apply(x$diff.stat, 2, sum)))
lines(xx, apply(x$diff.stat, 2, sum),
type = "b", pch = 15, cex = 1)
# mean significant indicator value
# plot.window(xlim = range(xx), ylim = range(apply(x$stat, 2, mean)))
# lines(xx, apply(x$stat, 2, mean), type = "b", pch = 16, cex = 0.5)
legend("top", lty = 1, col = c(1,2),
legend = c("sum of all differences",
"number of significant indicator species"),
bty = "n")
# if (any(out.rug > 0)) {
# rug(out.rug[out.rug > 0], side = 3)
# text(out.rug[out.rug > 0], par("usr")[4] * 1.1,
# xpd = T, srt = 90)
# }
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.