Nothing
library("aroma.light")
for (zzz in 0) {
# This example requires plot3d() in R.basic [http://www.braju.com/R/]
if (!require(pkgName <- "R.basic", character.only=TRUE)) break
# -------------------------------------------------------------
# A first example
# -------------------------------------------------------------
# Simulate data from the model y <- a + bx + eps(bx)
x <- rexp(1000)
a <- c(2,15,3)
b <- c(2,3,15)
bx <- outer(b,x)
eps <- apply(bx, MARGIN=2, FUN=function(x) rnorm(length(x), mean=0, sd=0.1*x))
y <- a + bx + eps
y <- t(y)
# Add some outliers by permuting the dimensions for 1/3 of the observations
idx <- sample(1:nrow(y), size=1/3*nrow(y))
y[idx,] <- y[idx,c(2,3,1)]
# Down-weight the outliers W times to demonstrate how weights are used
W <- 10
# Plot the data with fitted lines at four different view points
N <- 4
theta <- seq(0,180,length.out=N)
phi <- rep(30, length.out=N)
# Use a different color for each set of weights
col <- topo.colors(W)
opar <- par(mar=c(1,1,1,1)+0.1)
layout(matrix(1:N, nrow=2, byrow=TRUE))
for (kk in seq(theta)) {
# Plot the data
plot3d(y, theta=theta[kk], phi=phi[kk])
# First, same weights for all observations
w <- rep(1, length=nrow(y))
for (ww in 1:W) {
# Fit a line using IWPCA through data
fit <- wpca(y, w=w, swapDirections=TRUE)
# Get the first principal component
ymid <- fit$xMean
d0 <- apply(y, MARGIN=2, FUN=min) - ymid
d1 <- apply(y, MARGIN=2, FUN=max) - ymid
b <- fit$vt[1,]
y0 <- -b * max(abs(d0))
y1 <- b * max(abs(d1))
yline <- matrix(c(y0,y1), nrow=length(b), ncol=2)
yline <- yline + ymid
points3d(t(ymid), col=col)
lines3d(t(yline), col=col)
# Down-weight outliers only, because here we know which they are.
w[idx] <- w[idx]/2
}
# Highlight the last one
lines3d(t(yline), col="red", lwd=3)
}
par(opar)
} # for (zzz in 0)
rm(zzz)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.