1\name{loessDemo}
2\title{Graphical Interactive Demo of loess()}
3\alias{loessDemo}
4\description{
5  A graphical and interactive demonstration and visualization of how
6  \code{\link{loess}} works.  By clicking on the graphic, the user
7  determines the current estimation window which is visualized together
8  with the weights.
9}
10\usage{
11loessDemo(x, y, span = 1/2, degree = 1, family = c("gaussian", "symmetric"),
12          nearest = FALSE, nout = 501,
13          xlim = numeric(0), ylim = numeric(0), strictlim = TRUE, verbose = TRUE,
14          inch.sym = 0.25, pch = 4, shade = TRUE, w.symbols = TRUE,
15          sym.col = "blue", w.col = "light blue", line.col = "steelblue")
16}
17\arguments{
18  \item{x,y}{numeric vectors of the same length; the demo is about
19    \code{\link{loess}(y ~ x)}.}
20  \item{span}{the smoothing parameter \eqn{\alpha}.}
21  \item{degree}{the degree of the polynomials to be used; must be in \eqn{{0,1,2}}.}
22  \item{family}{if \code{"gaussian"} fitting is by least-squares, and if
23    \code{"symmetric"} a re-descending M estimator is used with Tukey's
24    biweight function.  Can be abbreviated.}
25  \item{nearest}{logical indicating how \eqn{x_0} should be determined,
26    the value at which \eqn{\hat{f}(x_0)}{f^(x_0)} is computed.  If
27    \code{nearest} is true, the closest \emph{data} value is taken.
28  }
29  \item{nout}{the number of points at which to evaluate, i.e,
30    determining \eqn{u_i}, \eqn{i = 1,2, \dots, \mathtt{nout}}, at
31    which \eqn{\hat{f}(u_i)}{f^(u_i)} is computed.}
32  \item{xlim}{x-range; to extend or determine (iff \code{strictlim} is
33    true) the \eqn{x}-range for plotting.}
34  \item{ylim}{y-range; to extend or determine (iff \code{strictlim} is
35    true) the \eqn{y}-range for plotting.}
36  \item{strictlim}{logical determining if \code{xlim} and \code{ylim}
37    should be strict limits (as e.g., in \code{\link{plot.default}}), or
38    just a suggestion to \emph{extend} the data-dependent ranges.}
39  \item{verbose}{logical ......}
40  \item{inch.sym}{symbol size in inches of the maximal weight circle symbol.}
41  \item{pch}{plotting character, see \code{\link{points}}.}
42  \item{shade}{logical; if true, \code{\link{polygon}(.., density=..)}
43    will be used to shade off the regions where the weights are zero.}
44  \item{w.symbols}{logical indicating if the non-zero weights should be
45    visualized by circles with radius proportional to \code{inch.sym}
46    and \eqn{\sqrt{w}} where \eqn{w} are the weights.}
47  \item{sym.col, w.col, line.col}{colors for the symbols, weights and
48    lines, respectively.}
49}
50%% \value{
51%% }
52\author{%%for grep: Greg Snow, ... Henrik Aa. Nielsen ..
53  As function \code{loess.demo()},  written and posted to S-news, on 27
54  Sep 2001, by Greg Snow, Brigham Young University, % gls@byu.edu
55  it was modified by Henrik Aa. Nielsen, IMM, DTU, % han@imm.dtu.dk
56  and subsequently spiffed up for \R by Martin Maechler.
57}
58\seealso{
59  \code{\link{loess}}.
60}
61\examples{
62if(dev.interactive()) {
63
64 if(requireNamespace("lattice")) {
65    data("ethanol", package = "lattice")
66    attach(ethanol)
67    loessDemo(E,NOx, span=.25)
68    loessDemo(E,NOx, span=.25, family = "symmetric")
69
70    loessDemo(E,NOx, degree=0)# Tricube Kernel estimate
71  }% if (. lattice .)
72
73 ## Artificial Example with one outlier
74 n2 <- 50; x <- 1:(1+2*n2)
75 fx <- (x/10 - 5)^2
76 y <- fx + 4*rnorm(x)
77 y[n2+1] <- 1e4
78 loessDemo(x,y, span=1/3, ylim= c(0,1000))# not robust !!
79 loessDemo(x,y, span=1/3, family = "symm")
80 loessDemo(x,y, span=1/3, family = "symm", w.symb = FALSE, ylim = c(0,40))
81 loessDemo(x,y, span=1/3, family = "symm", ylim = c(0,40))
82 ## but see warnings() --- there's a "fixup"
83
84}% only if  interactive
85}
86\keyword{loess}
87\keyword{dynamic}
88\keyword{hplot}
89