1 | ogk.pairwise(X, n.iter = 1, sigmamu = taulc, v = gkcov, beta = 0.9, ...)
|
X |
|
n.iter |
|
sigmamu |
|
v |
|
beta |
|
... |
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 | ##---- 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, n.iter = 1, sigmamu = taulc, v = gkcov, beta = 0.9,
...)
{
data.name <- deparse(substitute(X))
X <- as.matrix(X)
n <- dim(X)[1]
p <- dim(X)[2]
Z <- X
U <- diag(p)
A <- list()
for (iter in 1:n.iter) {
d <- apply(Z, 2, sigmamu, ...)
Z <- sweep(Z, 2, d, "/")
for (i in 1:(p - 1)) {
for (j in (i + 1):p) {
U[j, i] <- U[i, j] <- v(Z[, i], Z[, j], ...)
}
}
E <- eigen(U, symmetric = TRUE)$vectors
A[[iter]] <- d * E
Z <- Z %*% E
}
sqrt.gamma <- apply(Z, 2, sigmamu, mu.too = TRUE)
center <- sqrt.gamma[1, ]
sqrt.gamma <- sqrt.gamma[2, ]
Z <- sweep(Z, 2, center)
Z <- sweep(Z, 2, sqrt.gamma, "/")
distances <- rowSums(Z^2)
covmat <- diag(sqrt.gamma^2)
for (iter in seq(n.iter, 1, -1)) {
covmat <- A[[iter]] %*% covmat %*% t(A[[iter]])
center <- A[[iter]] %*% center
}
center <- as.vector(center)
weights <- hard.rejection(distances, p, beta = beta, ...)
sweights <- sum(weights)
wcenter <- colSums(sweep(X, 1, weights, "*"))/sweights
Z <- sweep(X, 2, wcenter)
Z <- sweep(Z, 1, sqrt(weights), "*")
wcovmat <- (t(Z) %*% Z)/sweights
list(center = center, covmat = covmat, wcenter = wcenter,
wcovmat = wcovmat, distances = distances, sigmamu = deparse(substitute(sigmamu)),
v = deparse(substitute(v)), data.name = data.name, data = X)
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.