1 | kbcon(x, con = 0, tr = 0.2, alpha = 0.05, pr = T)
|
x |
|
con |
|
tr |
|
alpha |
|
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 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | ##---- 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, con = 0, tr = 0.2, alpha = 0.05, pr = T)
{
if (is.matrix(x))
x <- listm(x)
if (!is.list(x))
stop("Data must be stored in a matrix or in list mode.")
con <- as.matrix(con)
J <- length(x)
h <- vector("numeric", J)
w <- vector("numeric", J)
xbar <- vector("numeric", J)
for (j in 1:J) {
xx <- !is.na(x[[j]])
val <- x[[j]]
x[[j]] <- val[xx]
h[j] <- length(x[[j]]) - 2 * floor(tr * length(x[[j]]))
w[j] <- ((length(x[[j]]) - 1) * winvar(x[[j]], tr))/(h[j] *
(h[j] - 1))
xbar[j] <- mean(x[[j]], tr)
}
if (sum(con^2) == 0) {
CC <- (J^2 - J)/2
v1 = J - 1
psihat <- matrix(0, CC, 6)
dimnames(psihat) <- list(NULL, c("Group", "Group", "psihat",
"ci.lower", "ci.upper", "p.value"))
test <- matrix(NA, CC, 6)
dimnames(test) <- list(NULL, c("Group", "Group", "test",
"crit", "se", "df"))
jcom <- 0
for (j in 1:J) {
for (k in 1:J) {
if (j < k) {
jcom <- jcom + 1
df <- (w[j] + w[k])^2/(w[j]^2/(h[j] - 1) +
w[k]^2/(h[k] - 1))
term = sqrt((J - 1) * (1 + (J - 2)/df))
test[jcom, 3] <- ((xbar[j] - xbar[k])/(term *
sqrt(w[j] + w[k])))^2
sejk <- sqrt(w[j] + w[k])
test[jcom, 5] <- sejk
psihat[jcom, 1] <- j
psihat[jcom, 2] <- k
test[jcom, 1] <- j
test[jcom, 2] <- k
psihat[jcom, 3] <- (xbar[j] - xbar[k])
test[jcom, 6] <- df
crit = qf(1 - alpha, v1, df)
aterm = sqrt(crit) * term
test[jcom, 4] <- qf(1 - alpha, v1, df)
psihat[jcom, 4] <- (xbar[j] - xbar[k]) - aterm *
sejk
psihat[jcom, 5] <- (xbar[j] - xbar[k]) + aterm *
sejk
psihat[jcom, 6] <- 1 - pf(test[jcom, 3], v1,
df)
}
}
}
}
if (sum(con^2) > 0) {
if (nrow(con) != length(x)) {
stop("The number of groups does not match the number of contrast coefficients.")
}
v1 = nrow(con) - 1
psihat <- matrix(0, ncol(con), 5)
dimnames(psihat) <- list(NULL, c("con.num", "psihat",
"ci.lower", "ci.upper", "p.value"))
test <- matrix(0, ncol(con), 5)
dimnames(test) <- list(NULL, c("con.num", "test", "crit",
"se", "df"))
df <- 0
L = nrow(con)
for (d in 1:ncol(con)) {
psihat[d, 1] <- d
psihat[d, 2] <- sum(con[, d] * xbar)
sejk <- sqrt(sum(con[, d]^2 * w))
test[d, 1] <- d
df <- (sum(con[, d]^2 * w))^2/sum(con[, d]^4 * w^2/(h -
1))
A = (L - 1) * (1 + (L - 2)/df)
test[d, 2] <- (sum(con[, d] * xbar)/(sqrt(A) * sejk))^2
crit = qf(1 - alpha, v1, df)
test[d, 3] <- crit
test[d, 4] <- sejk
test[d, 5] <- df
psihat[d, 3] <- psihat[d, 2] - sqrt(crit * A) * sejk
psihat[d, 4] <- psihat[d, 2] + sqrt(crit * A) * sejk
psihat[d, 5] <- 1 - pf(test[d, 2], v1, df)
}
}
if (pr) {
print("Note: confidence intervals are adjusted to control FWE")
print("But p-values are not adjusted to control FWE")
}
list(test = test, psihat = psihat)
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.