ace | R Documentation |
Uses the alternating conditional expectations algorithm to find the transformations of y and x that maximize the proportion of variation in y explained by x. When x is a matrix, it is transformed so that its columns are equally weighted when predicting y.
ace(...)
## Default S3 method:
ace(
x,
y,
wt = NULL,
cat = NULL,
mon = NULL,
lin = NULL,
circ = NULL,
delrsq = 0.01,
control = NULL,
on.error = warning,
...
)
## S3 method for class 'formula'
ace(
formula,
data = NULL,
subset = NULL,
na.action = getOption("na.action"),
...
)
## S3 method for class 'ace'
summary(object, ...)
## S3 method for class 'ace'
print(x, ..., digits = 4)
## S3 method for class 'ace'
plot(
x,
...,
which = 1:(x$p + 1),
caption = c(list("Response Y ACE Transformation"), as.list(paste("Carrier",
rownames(x$x), "ACE Transformation"))),
xlab = "Original",
ylab = "Transformed",
ask = prod(par("mfcol")) < length(which) && dev.interactive()
)
... |
additional arguments which go ignored for ace call. Included for S3 dispatch consistency. They are utilized when using print as they get passed to cat. Also when plotting an ace object they are passed to plot. |
x |
matrix; A matrix containing the independent variables. |
y |
numeric; A vector containing the response variable. |
wt |
numeric; An optional vector of weights. |
cat |
integer; An optional integer vector specifying which variables
assume categorical values. Positive values in |
mon |
integer; An optional integer vector specifying which variables are
to be transformed by monotone transformations. Positive values
in |
lin |
integer; An optional integer vector specifying which variables are
to be transformed by linear transformations. Positive values in |
circ |
integer; An integer vector specifying which variables assume
circular (periodic) values. Positive values in |
delrsq |
numeric(1); termination threshold. Iteration stops when
R-squared changes by less than |
control |
named list; control parameters to set. Documented at
|
on.error |
function; call back for when ierr is not equal to zero. Defaults to warning. |
formula |
formula; an object of class " |
data |
an optional data frame, list or environment (or object coercible
by |
subset |
an optional vector specifying a subset of observations to be
used in the fitting process. Only used when a |
na.action |
a function which indicates what should happen when the data
contain NAs. The default is set by the |
object |
an S3 ace object |
digits |
rounding digits for summary/print |
which |
when plotting an ace object which plots to produce. |
caption |
a list of captions for a plot. |
xlab |
the x-axis label when plotting. |
ylab |
the y-axis label when plotting. |
ask |
when plotting should the terminal be asked for input between plots. |
A structure with the following components:
x |
the input x matrix. |
y |
the input y vector. |
tx |
the transformed x values. |
ty |
the transformed y values. |
rsq |
the multiple R-squared value for the transformed values. |
l |
the codes for cat, mon, ... |
Breiman and Friedman, Journal of the American Statistical Association (September, 1985).
The R code is adapted from S code for avas() by Tibshirani, in the Statlib S archive; the FORTRAN is a double-precision version of FORTRAN code by Friedman and Spector in the Statlib general archive.
TWOPI <- 8*atan(1)
x <- runif(200,0,TWOPI)
y <- exp(sin(x)+rnorm(200)/2)
a <- ace(x,y)
par(mfrow=c(3,1))
plot(a$y,a$ty) # view the response transformation
plot(a$x,a$tx) # view the carrier transformation
plot(a$tx,a$ty) # examine the linearity of the fitted model
# example when x is a matrix
X1 <- 1:10
X2 <- X1^2
X <- cbind(X1,X2)
Y <- 3*X1+X2
a1 <- ace(X,Y)
par(mfrow=c(1,1))
plot(rowSums(a1$tx),a1$y)
(lm(a1$y ~ a1$tx)) # shows that the colums of X are equally weighted
# From D. Wang and M. Murphy (2005), Identifying nonlinear relationships
# regression using the ACE algorithm. Journal of Applied Statistics,
# 32, 243-258.
X1 <- runif(100)*2-1
X2 <- runif(100)*2-1
X3 <- runif(100)*2-1
X4 <- runif(100)*2-1
# Original equation of Y:
Y <- log(4 + sin(3*X1) + abs(X2) + X3^2 + X4 + .1*rnorm(100))
# Transformed version so that Y, after transformation, is a
# linear function of transforms of the X variables:
# exp(Y) = 4 + sin(3*X1) + abs(X2) + X3^2 + X4
a1 <- ace(cbind(X1,X2,X3,X4),Y)
# For each variable, show its transform as a function of
# the original variable and the of the transform that created it,
# showing that the transform is recovered.
par(mfrow=c(2,1))
plot(X1,a1$tx[,1])
plot(sin(3*X1),a1$tx[,1])
plot(X2,a1$tx[,2])
plot(abs(X2),a1$tx[,2])
plot(X3,a1$tx[,3])
plot(X3^2,a1$tx[,3])
plot(X4,a1$tx[,4])
plot(X4,a1$tx[,4])
plot(Y,a1$ty)
plot(exp(Y),a1$ty)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.