35 lines
1.1 KiB
R
35 lines
1.1 KiB
R
library(cluster)
|
|
|
|
tools::assertWarning(eh <- ellipsoidhull(cbind(x=1:4, y = 1:4)), verbose=TRUE) #singular
|
|
eh ## center ok, shape "0 volume" --> Warning
|
|
stopifnot(volume(eh) == 0)
|
|
|
|
set.seed(157)
|
|
for(n in 4:10) { ## n=2 and 3 still differ -- platform dependently!
|
|
cat("n = ",n,"\n")
|
|
x2 <- rnorm(n)
|
|
print(ellipsoidhull(cbind(1:n, x2)))
|
|
print(ellipsoidhull(cbind(1:n, x2, 4*x2 + rnorm(n))))
|
|
}
|
|
|
|
set.seed(1)
|
|
x <- rt(100, df = 4)
|
|
y <- 100 + 5 * x + rnorm(100)
|
|
ellipsoidhull(cbind(x,y))
|
|
z <- 10 - 8 * x + y + rnorm(100)
|
|
(e3 <- ellipsoidhull(cbind(x,y,z)))
|
|
d3o <- cbind(x,y + rt(100,3), 2 * x^2 + rt(100, 2))
|
|
(e. <- ellipsoidhull(d3o, ret.sq = TRUE))
|
|
stopifnot(all.equal(e.$sqdist,
|
|
with(e., mahalanobis(d3o, center=loc, cov=cov)),
|
|
tol = 1e-13))
|
|
d5 <- cbind(d3o, 2*abs(y)^1.5 + rt(100,3), 3*x - sqrt(abs(y)))
|
|
(e5 <- ellipsoidhull(d5, ret.sq = TRUE))
|
|
tail(sort(e5$sqdist)) ## 4 values 5.00039 ... 5.0099
|
|
|
|
(e5.1e77 <- ellipsoidhull(1e77*d5))
|
|
stopifnot(# proof correct scaling c^5
|
|
all.equal(volume(e5.1e77, log=TRUE) - volume(e5, log=TRUE),
|
|
ncol(d5) * 77* log(10))
|
|
)
|