ppr(x, ...)
"ppr"(formula, data, weights, subset, na.action, contrasts = NULL, ..., model = FALSE)
"ppr"(x, y, weights = rep(1, n), ww = rep(1, q), nterms, max.terms = nterms, optlevel = 2, sm.method = c("supsmu", "spline", "gcvspline"), bass = 0, span = 0, df = 5, gcvpen = 1, ...)
model.frame
) from which
variables specified in formula
are preferentially to be taken.
w_i
for each case.i
and responses j
of
w_i ww_j (y_ij - fit_ij)^2
divided by the sum of w_i
.
NA
s are
found. The default action is given by getOption("na.action")
.
(NOTE: If given, this argument must be named.)
supsmu
. The alternatives are to use
the smoothing spline code underlying smooth.spline
, either with a
specified (equivalent) degrees of freedom for each ridge functions, or
to allow the smoothness to be chosen by GCV.Can be abbreviated.
supsmu
); the range of values is 0 to 10, with larger values
resulting in increased smoothing.
supsmu
). The default, 0
,
results in automatic span selection by local cross validation. span
can also take a value in (0, 1]
.
sm.method
is "spline"
specifies the smoothness of
each ridge term via the requested equivalent degrees of freedom.
sm.method
is "gcvspline"
this is the penalty used
in the GCV selection for each degree of freedom used.
nterms
max.terms
max.terms
. Will be invalid (and zero)
for less than nterms
.df
sm.method
is "spline"
or "gcvspline"
the equivalent number of degrees of freedom for each ridge term used.ys
to have unit total weighted sum of squares.q > 1
.q > 1
.model = TRUE
) the model frame.ppreg
. This code is extremely
sensitive to the compiler used. The algorithm first adds up to max.terms
ridge terms one at a
time; it will use less if it is unable to find a term to add that makes
sufficient difference. It then removes the least
important term at each step until nterms
terms
are left.
The levels of optimization (argument optlevel
)
differ in how thoroughly the models are refitted during this process.
At level 0 the existing ridge terms are not refitted. At level 1
the projection directions are not refitted, but the ridge
functions and the regression coefficients are.
Levels 2 and 3 refit all the terms and are equivalent for one response; level 3 is more careful to re-balance the contributions from each regressor at each step and so is a little less likely to converge to a saddle point of the sum of squares criterion.
Friedman, J. H. (1984) SMART User's Guide. Laboratory for Computational Statistics, Stanford University Technical Report No.\ifelse{latex}{\out{~}}{ } 1.
Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. Springer.
plot.ppr
, supsmu
, smooth.spline
require(graphics)
# Note: your numerical values may differ
attach(rock)
area1 <- area/10000; peri1 <- peri/10000
rock.ppr <- ppr(log(perm) ~ area1 + peri1 + shape,
data = rock, nterms = 2, max.terms = 5)
rock.ppr
# Call:
# ppr.formula(formula = log(perm) ~ area1 + peri1 + shape, data = rock,
# nterms = 2, max.terms = 5)
#
# Goodness of fit:
# 2 terms 3 terms 4 terms 5 terms
# 8.737806 5.289517 4.745799 4.490378
summary(rock.ppr)
# ..... (same as above)
# .....
#
# Projection direction vectors:
# term 1 term 2
# area1 0.34357179 0.37071027
# peri1 -0.93781471 -0.61923542
# shape 0.04961846 0.69218595
#
# Coefficients of ridge terms:
# term 1 term 2
# 1.6079271 0.5460971
par(mfrow = c(3,2)) # maybe: , pty = "s")
plot(rock.ppr, main = "ppr(log(perm)~ ., nterms=2, max.terms=5)")
plot(update(rock.ppr, bass = 5), main = "update(..., bass = 5)")
plot(update(rock.ppr, sm.method = "gcv", gcvpen = 2),
main = "update(..., sm.method=\"gcv\", gcvpen=2)")
cbind(perm = rock$perm, prediction = round(exp(predict(rock.ppr)), 1))
detach()
Run the code above in your browser using DataLab