group
variable can be
specified to compute and plot the smooth curves by levels of
group
. When
group
is present, the
datadensity
option will draw tick marks showing the location of the raw
x
-values, separately for each curve.
plsmo
has an
option to plot connected points for raw data, with no smoothing.
panel.plsmo
is a
panel
function for
trellis
for the
xyplot
function that uses
plsmo
and its options to draw
one or more nonparametric function estimates on each panel. This has
advantages over using
xyplot
with
panel.xyplot
and
panel.loess
: (1) by default it will invoke
labcurve
to
label the curves where they are most separated, (2) the
datadensity
option will put rug plots on each curve (instead of a
single rug plot at the bottom of the graph), and (3) when
panel.plsmo
invokes
plsmo
it can use the "super smoother"
(
supsmu
function) instead of
lowess
.
panel.plsmo
senses when a
group
variable is specified to
xyplot
so
that it can invoke
instead of
panel.xyplot
. Using
panel.plsmo
through
trellis
has some advantages over calling
plsmo
directly in that
conditioning variables are allowed and
trellis
uses nicer fonts
etc.
When a
group
variable was used,
panel.plsmo
creates a function
Key
in the session frame that the user can invoke to draw a key for
individual data point symbols used for the
group
s.
By default, the key is positioned at the upper right
corner of the graph. If
Key(locator(1))
is specified, the key will
appear so that its upper left corner is at the coordinates of the
mouse click.
plsmo(x, y, method=c("lowess","supsmu","raw"), xlab, ylab, add=FALSE, lty=1:nlev, col=par("col"), lwd=par("lwd"), iter=if(length(unique(y))>2) 3 else 0, bass=0, trim, fun, group, prefix, xlim, ylim, label.curves=TRUE, datadensity=FALSE, lines.=TRUE, subset=TRUE, grid=FALSE, ...) #To use panel function: #xyplot(formula=y ~ x | conditioningvars, groups, # panel=panel.plsmo, type='b', # label.curves=TRUE, # lwd = superpose.line$lwd, # lty = superpose.line$lty, # pch = superpose.symbol$pch, # cex = superpose.symbol$cex, # font = superpose.symbol$font, # col = NULL, ...)
group
group
. Default is
current
par("col")
.
group
.
Default is current
par("lwd")
.
lwd
can also be specified as an element of
label.curves
if
label.curves
is a list.
y
is binary, and 3 otherwise.
fun
is given the y-values
are transformed by
fun()
factor
vector or one that will be converted to
factor
by
plsmo
, that is used to stratify the data so that separate
smooths may be computed
prefix
ensures that
labcurve
will be called even when
add=TRUE
.
FALSE
to prevent
labcurve
from being called to label multiple
curves corresponding to
group
s. Set to a list to pass options to
labcurve
.
lty
and
col
are passed to
labcurve
automatically.
TRUE
to draw tick marks on each curve, using x-coordinates
of the raw data
x
values. This is done using
scat1d
.
FALSE
to suppress smoothed curves from being drawn. This can
make sense if
datadensity=TRUE
.
TRUE
if the R
grid
package drew the current plot
scat1d
,
or optional parameters to pass to
plsmo
from
panel.plsmo
. See optional arguments for
plsmo
above.
p
to have
panel.plsmo
plot points (and not call
plsmo
),
l
to call
plsmo
and not plot points, or use the default
b
to plot both.
group
s (scalars
if
group
is absent). By default, the parameters set up by
trellis
will be used.
plsmo
returns a list of curves (x and y coordinates) that was passed to
labcurve
set.seed(1) x <- 1:100 y <- x + runif(100, -10, 10) plsmo(x,y,"supsmu",xlab="Time of Entry") #Use label(y) or "y" for ylab plsmo(x,y,add=TRUE,lty=2) #Add lowess smooth to existing plot, with different line type age <- rnorm(500, 50, 15) survival.time <- rexp(500) sex <- sample(c('female','male'), 500, TRUE) race <- sample(c('black','non-black'), 500, TRUE) plsmo(age, survival.time < 1, fun=qlogis, group=sex) # plot logit by sex #Plot points and smooth trend line using trellis # (add type='l' to suppress points or type='p' to suppress trend lines) if(.R.) library(lattice) xyplot(survival.time ~ age, panel=panel.plsmo) #Do this for multiple panels xyplot(survival.time ~ age | sex, panel=panel.plsmo) #Do this for subgroups of points on each panel, show the data #density on each curve, and draw a key at the default location xyplot(survival.time ~ age | sex, groups=race, panel=panel.plsmo, datadensity=TRUE) Key() #Use wloess.noiter to do a fast weighted smooth plot(x, y) lines(wtd.loess.noiter(x, y)) lines(wtd.loess.noiter(x, y, weights=c(rep(1,50), 100, rep(1,49))), col=2) points(51, y[51], pch=18) # show overly weighted point #Try to duplicate this smooth by replicating 51st observation 100 times lines(wtd.loess.noiter(c(x,rep(x[51],99)),c(y,rep(y[51],99)), type='ordered all'), col=3) #Note: These two don't agree exactly