1 |
J |
|
K |
|
x |
|
est |
|
alpha |
|
nboot |
|
SEED |
|
grp |
|
pr |
|
... |
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 | ##---- 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 (J, K, x, est = hd, alpha = 0.05, nboot = 600, SEED = TRUE,
grp = NA, pr = TRUE, ...)
{
JK <- J * K
if (is.data.frame(x))
x = as.matrix(x)
xcen <- list()
if (is.matrix(x))
x <- listm(x)
if (!is.list(x))
stop("Data must be stored in list mode or a matrix.")
if (!is.na(grp[1])) {
yy <- x
for (j in 1:length(grp)) x[[j]] <- yy[[grp[j]]]
}
for (j in 1:JK) {
temp <- x[[j]]
temp <- temp[!is.na(temp)]
x[[j]] <- temp
}
xx <- list()
mloc <- NA
for (i in 1:JK) {
xx[[i]] <- x[[i]]
mloc[i] <- est(xx[[i]], ...)
xcen[[i]] <- xx[[i]] - mloc[i]
}
x <- xx
mat <- matrix(mloc, nrow = J, ncol = K, byrow = T)
leva <- apply(mat, 1, mean)
levb <- apply(mat, 2, mean)
gm <- mean(levb)
testa <- sum((leva - mean(leva))^2)
testb <- sum((levb - mean(levb))^2)
testab <- NA
tempab <- matrix(NA, nrow = J, ncol = K)
for (j in 1:J) {
for (k in 1:K) {
tempab[j, k] <- mat[j, k] - leva[j] - levb[k] + gm
}
}
testab <- sum(tempab^2)
bvec <- matrix(NA, nrow = JK, ncol = nboot)
if (SEED)
set.seed(2)
if (pr)
print("Taking bootstrap samples. Please wait.")
for (j in 1:JK) {
if (pr)
print(paste("Working on group ", j))
data <- matrix(sample(xcen[[j]], size = length(xcen[[j]]) *
nboot, replace = TRUE), nrow = nboot)
bvec[j, ] <- apply(data, 1, est, ...)
}
boota <- NA
bootb <- NA
bootab <- NA
for (i in 1:nboot) {
mat <- matrix(bvec[, i], nrow = J, ncol = K, byrow = T)
leva <- apply(mat, 1, mean)
levb <- apply(mat, 2, mean)
gm <- mean(mat)
boota[i] <- sum((leva - mean(leva))^2)
bootb[i] <- sum((levb - mean(levb))^2)
for (j in 1:J) {
for (k in 1:K) {
tempab[j, k] <- mat[j, k] - leva[j] - levb[k] +
gm
}
}
bootab[i] <- sum(tempab^2)
}
pvala <- 1 - sum(testa >= boota)/nboot
pvalb <- 1 - sum(testb >= bootb)/nboot
pvalab <- 1 - sum(testab >= bootab)/nboot
list(p.value.A = pvala, p.value.B = pvalb, p.value.AB = pvalab,
test.A = testa, test.B = testb, test.AB = testab, est.loc = matrix(mloc,
nrow = J, ncol = K, byrow = T))
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.