1 |
n |
|
csteps |
|
gam |
|
outliers |
|
start |
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 | ##---- 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 (n = 100, csteps = 5, gam = 0.4, outliers = TRUE, start = 2)
{
p <- 2
x <- matrix(rnorm(n * p), ncol = p, nrow = n)
A <- cbind(c(1, 0.4), c(0.4, 1))
B <- cbind(c(0.5, 0), c(0, 0.5))
if (outliers == T) {
val <- floor(gam * n)
x[(val + 1):n, ] <- x[(val + 1):n, ] %*% A
x[1:val, ] <- x[1:val, ] %*% B
x[1:val, 1] <- x[1:val, 1] + 0
x[1:val, 2] <- x[1:val, 2] + 6
}
else {
x <- x %*% A
}
if (start == 1) {
covs <- var(x)
mns <- apply(x, 2, mean)
}
if (start == 2) {
covv <- diag(p)
med <- apply(x, 2, median)
md2 <- mahalanobis(x, center = med, covv)
medd2 <- median(md2)
mns <- apply(x[md2 <= medd2, ], 2, mean)
covs <- var(x[md2 <= medd2, ])
}
if (start >= 2) {
tem <- apply(x, 2, mad)^2
covv <- diag(tem)
med <- apply(x, 2, median)
md2 <- mahalanobis(x, center = med, covv)
medd2 <- median(md2)
mns <- apply(x[md2 <= medd2, ], 2, mean)
covs <- var(x[md2 <= medd2, ])
}
for (i in 1:csteps) {
md2 <- mahalanobis(x, mns, covs)
medd2 <- median(md2)
mns <- apply(x[md2 <= medd2, ], 2, mean)
covs <- var(x[md2 <= medd2, ])
plot(x[, 1], x[, 2])
points(x[md2 <= medd2, 1], x[md2 <= medd2, 2], pch = 15)
identify(x[, 1], x[, 2])
}
}
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.