plsmo {Hmisc} | R Documentation |
Plot smoothed estimates of x vs. y, handling missing data for lowess
or supsmu, and adding axis labels. Optionally suppresses plotting
extrapolated estimates. An optional 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 panel.superpose
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, ...)
x |
vector of x-values, NAs allowed |
y |
vector of y-values, NAs allowed |
method |
"lowess" (the default), "supsmu", or "raw" to not smooth at all |
xlab |
x-axis label iff add=F. Defaults of label(x) or argument name. |
ylab |
y-axis label, like xlab. |
add |
Set to T to call lines instead of plot. Assumes axes already labeled. |
lty |
line type, default=1,2,3,..., corresponding to group
|
col |
color for each curve, corresponding to group . Default is
current par("col") .
|
lwd |
vector of line widths for the curves, corresponding to group .
Default is current par("lwd") .
lwd can also be specified as an element of label.curves if
label.curves is a list.
|
iter |
iter parameter if method="lowess", default=0 if y is binary, and 3 otherwise.
|
bass |
bass parameter if method="bass", default=0. |
trim |
only plots smoothed estimates between trim and 1-trim quantiles of x. Default is to use 10th smallest to 10th largest x in the group if the number of observations in the group exceeds 200 (0 otherwise). Specify trim=0 to plot over entire range. |
fun |
after computing the smoothed estimates, if fun is given the y-values
are transformed by fun()
|
group |
a variable, either a 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 |
a character string to appear in group of group labels. The presence of
prefix ensures that labcurve will be called even when add=TRUE .
|
xlim |
a vector of 2 x-axis limits. Default is observed range. |
ylim |
a vector of 2 y-axis limits. Default is observed range. |
label.curves |
set to 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.
|
datadensity |
set to TRUE to draw tick marks on each curve, using x-coordinates
of the raw data x values. This is done using scat1d .
|
lines. |
set to FALSE to suppress smoothed curves from being drawn. This can
make sense if datadensity=TRUE .
|
subset |
a logical or integer vector specifying a subset to use for processing, with respect too all variables being analyzed |
grid |
set to TRUE if the R grid package drew the current plot |
... |
optional arguments that are passed to scat1d ,
or optional parameters to pass to plsmo from
panel.plsmo . See optional arguments for plsmo above.
|
type |
set to 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.
|
pch |
|
cex |
|
font |
vectors of graphical parameters corresponding to the 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
plots, and panel.plsmo
creates the Key
function in the session frame.
lowess
, supsmu
, label
, quantile
, labcurve
, scat1d
,
xyplot
, panel.superpose
, panel.xyplot
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