KernS-methods {lokern}R Documentation

Methods for ("KernS" classed) Results of lokerns() and glkerns()

Description

Methods for results of glkerns() and lokerns() which are of (S3) class "KernS".

Usage

## S3 method for class 'KernS'
fitted(object, ...)
## S3 method for class 'KernS'
plot(x, type = "l", lwd = 2.5, col = 3, ...)
## S3 method for class 'KernS'
predict(object, x, deriv = object[["deriv"]],
        korder = deriv+2, trace.lev = 0, ...)
## S3 method for class 'KernS'
print(x, digits = getOption("digits"), ...)
## S3 method for class 'KernS'
residuals(object, ...)

Arguments

x, object

an R object, of S3 class "KernS", typically result either from glkerns() or lokerns().

type, lwd, col

arguments for plot() only for the case when x$deriv is not 0.

deriv

integer, \ge 0, specifiying order of derivative that should be predicted.

korder

nonnegative integer giving the kernel order; see lokerns or glkerns.

digits

number of significant digits, see print.

trace.lev

integer; level of tracing of Fortran level computations; see lokerns.

...

potentially further arguments passed to and from methods. For the plot(*, deriv=0) method, these are passed to plotDS from package sfsmisc.

Details

Note that fitted() and residuals() rely on x.inOut having been true or x.out having contained the data x, in the lokerns or glkerns call.

The plot() method calls plotDS from package sfsmisc.

predict(object, x, deriv) when either some x are not in x.out or deriv is not 0, basically recalls the original lokerns or glkerns function (keeping the bandwidths for lokerns).

Value

(differing, depending on the generic function)

See Also

glkerns, lokerns.

Examples

## "interesting" artificial data:
set.seed(47)
x <- sort(round(10*runif(250),2))
fn <- function(x) 5 - x/2 + 3*exp(-(x-5)^2)
y <- fn(x) + rnorm(x)/4
plot(x,y)
## Tracing the phases in the Fortran code: trace=1 gives some, trace=3 gives *much*
lof <- lokerns(x,y, trace=2)
plot(lof)
plot(lof, cex = 1/4)# maybe preferable
plot(fn, 0, 10, add=TRUE, col=adjustcolor("gray40",1/2), lwd=2, lty=2)
## Simpler, using the lines() method:
plot(x,y); lines(lof, lwd=2, col=2)

qqnorm(residuals(lof)) # hmm... overfitting?
stopifnot(all.equal(y, fitted(lof) + residuals(lof), tolerance = 1e-15),
          predict(lof)$y == fitted(lof))
lof$iter # negative ?
tt <- seq(0, 10, by=1/32)
## again with 'tracing' [not for the average user]
p0 <- predict(lof, x=tt,          trace=1)
p1 <- predict(lof, x=tt, deriv=1, trace=1)
p2 <- predict(lof, x=tt, deriv=2)
plot(p2, type="l"); abline(h=0, lty=3) # not satisfactory, but lokerns(*,deriv=2) is
lof2 <- lokerns(x,y, deriv=2)
plot(lof2, ylim = c(-12,4), main=
   "lokerns(*, deriv=2) -- much more smooth than predict(*,deriv=2)")
mtext("as lokerns(*, deriv=2) chooses larger bandwidths[] !")
lines(predict(lof2, x=tt), col=adjustcolor("tomato", 1/3), lwd=5)
lines(p2, col="gray50"); abline(h=0, lty=3)
## add 2nd derivative of underlying fn():
f2 <- fn; body(f2) <- D(D(body(fn), "x"),"x")
lines(tt, f2(tt), col="blue")

[Package lokern version 1.1-12 Index]