1 |
x |
|
sm |
|
op |
|
grp |
|
xlab |
|
ylab |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | ##---- Should be DIRECTLY executable !! ----
##-- ==> Define data, use random,
##-- or do help(data=index) for the standard data sets.
## The function is currently defined as
function (x, sm = TRUE, op = 1, grp = c(1:4), xlab = "First Group",
ylab = "Delta")
{
if (is.matrix(x))
x = listm(x)
if (length(grp) != 4)
stop("The argument grp must have 4 values")
x = x[grp]
for (j in 1:4) x[[j]] = elimna(x[[j]])
pc <- NA
crit = 1.36 * sqrt((length(x[[1]]) + length(x[[2]]))/(length(x[[1]]) *
length(x[[2]])))
remx = x
for (iloop in 1:2) {
if (iloop == 1) {
x = remx[[1]]
y = remx[[2]]
}
if (iloop == 2) {
x = remx[[3]]
y = remx[[4]]
}
xsort <- sort(x)
ysort <- c(NA, sort(y))
l <- 0
u <- 0
ysort[length(y) + 1 + 1] <- NA
for (ivec in 1:length(x)) {
isub <- max(0, ceiling(length(y) * (ivec/length(x) -
crit)))
l[ivec] <- ysort[isub + 1] - xsort[ivec]
isub <- min(length(y) + 1, floor(length(y) * (ivec/length(x) +
crit)) + 1)
u[ivec] <- ysort[isub + 1] - xsort[ivec]
}
num <- length(l[l > 0 & !is.na(l)]) + length(u[u < 0 &
!is.na(u)])
qhat <- c(1:length(x))/length(x)
m <- matrix(c(qhat, l, u), length(x), 3)
dimnames(m) <- list(NULL, c("qhat", "lower", "upper"))
xsort <- sort(x)
ysort <- sort(y)
del <- 0
for (i in 1:length(x)) {
ival <- round(length(y) * i/length(x))
if (ival <= 0)
ival <- 1
if (ival > length(y))
ival <- length(y)
del[i] <- ysort[ival] - xsort[i]
}
if (iloop == 1) {
allx <- c(xsort, xsort, xsort)
ally <- c(del, m[, 2], m[, 3])
}
if (iloop == 2) {
allx <- c(allx, xsort, xsort, xsort)
ally <- c(ally, del, m[, 2], m[, 3])
plot(allx, ally, type = "n", ylab = ylab, xlab = xlab)
}
ik <- rep(F, length(xsort))
if (sm) {
if (op == 1) {
ik <- duplicated(xsort)
del <- lowess(xsort, del)$y
}
if (op != 1)
del <- runmean(xsort, del, pyhat = TRUE)
}
if (iloop == 1) {
xsort1 = xsort[!ik]
del1 = del[!ik]
}
if (iloop == 2) {
lines(xsort1, del1, lty = iloop)
lines(xsort[!ik], del[!ik], lty = iloop)
}
}
done = "Done"
done
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.