plsmo                 package:Hmisc                 R Documentation

_P_l_o_t _s_m_o_o_t_h_e_d _e_s_t_i_m_a_t_e_s

_D_e_s_c_r_i_p_t_i_o_n:

     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.

_U_s_a_g_e:

     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, ...)

_A_r_g_u_m_e_n_t_s:

       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. 

_V_a_l_u_e:

     'plsmo' returns a list of curves (x and y coordinates) that was
     passed to 'labcurve'

_S_i_d_e _E_f_f_e_c_t_s:

     plots, and 'panel.plsmo' creates the 'Key' function in the session
     frame.

_S_e_e _A_l_s_o:

     'lowess', 'supsmu', 'label', 'quantile', 'labcurve', 'scat1d',
     'xyplot', 'panel.superpose', 'panel.xyplot'

_E_x_a_m_p_l_e_s:

     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

