Translate a spline object of another class into the Functional Data
(class fd) format.
Usage
as.fd(x, ...)
## S3 method for class 'fdSmooth'
as.fd(x, ...)
## S3 method for class 'function'
as.fd(x, ...)
## S3 method for class 'smooth.spline'
as.fd(x, ...)
Arguments
x
an object to be converted to class fd.
...
optional arguments passed to specific methods, currently unused.
Details
The behavior depends on the class and nature of x.
as.fd.fdSmoothextract the fd component
as.fd.dierckx
The 'fda' package (as of version 2.0.0) supports B-splines with
coincident boundary knots. For periodic phenomena, the
DierckxSpline packages uses periodic spines, while
fda recommends finite Fourier series. Accordingly,
as.fd.dierckx if x[["periodic"]] is TRUE.
The following describes how the components of a dierckx
object are handled by as.dierckx(as.fd(x)):
xlost. Restored from the knots.
y
lost. Restored from spline predictions at the restored values
of 'x'.
wlost. Restored as rep(1, length(x)).
from, tofd[["basis"]][["rangeval"]]
k
coded indirectly as fd[["basis"]][["nbasis"]] -
length(fd[["basis"]][["params"]]) - 1.
slost, restored as 0.
nestlost, restored as length(x) + k + 1
n
coded indirectly as 2*fd[["basis"]][["nbasis"]] -
length(fd[["basis"]][["params"]]).
knots
The end knots are stored (unreplicated) in
fd[["basis"]][["rangeval"]], while the interior knots are
stored in fd[["basis"]][["params"]].
fplost. Restored as 0.
wrk, lwrk, iwrk
lost. Restore by refitting to the knots.
ierlost. Restored as 0.
messagelost. Restored as character(0).
gstored indirectly as
length(fd[["basis"]][["params"]]).
methodlost. Restored as "ss".
periodic
'dierckx2fd' only translates 'dierckx' objects
with coincident boundary knots. Therefore, 'periodic' is
restored as FALSE.
routinelost. Restored as 'curfit.default'.
xlabfd[["fdnames"]][["args"]]
ylabfd[["fdnames"]][["funs"]]
as.fd.function
Create an fd object from a function of the form created by
splinefun. This will translate method = 'fmn' and
'natural' but not 'periodic': 'fmn' splines are isomorphic to
standard B-splines with coincident boundary knots, which is the
basis produced by create.bspline.basis. 'natural' splines
occupy a subspace of this space, with the restriction that the
second derivative at the end points is zero (as noted in the
Wikipedia spline article). 'periodic' splines do not use
coindicent boundary knots and are not currently supported in
fda; instead, fda uses finite Fourier bases for
periodic phenomena.
as.fd.smooth.spline
Create an fd object from a smooth.spline object.
Value
as.fd.dierckx converts an object of class 'dierckx' into one of
class fd.
Author(s)
Spencer Graves
References
Dierckx, P. (1991) Curve and Surface Fitting with Splines,
Oxford Science Publications.
Ramsay, James O., and Silverman, Bernard W. (2006), Functional
Data Analysis, 2nd ed., Springer, New York.
Ramsay, James O., and Silverman, Bernard W. (2002), Applied
Functional Data Analysis, Springer, New York.
##
## as.fd.fdSmooth
##
girlGrowthSm <- with(growth, smooth.basisPar(argvals=age, y=hgtf,
lambda=0.1))
girlGrowth.fd <- as.fd(girlGrowthSm)
##
## as.fd.function(splinefun(...), ...)
##
x2 <- 1:7
y2 <- sin((x2-0.5)*pi)
f <- splinefun(x2, y2)
fd. <- as.fd(f)
x. <- seq(1, 7, .02)
fx. <- f(x.)
fdx. <- eval.fd(x., fd.)
# range(y2, fx., fdx.) generates an error 2012.04.22
rfdx <- range(fdx.)
plot(range(x2), range(y2, fx., rfdx), type='n')
points(x2, y2)
lines(x., sin((x.-0.5)*pi), lty='dashed')
lines(x., f(x.), col='blue')
lines(x., eval.fd(x., fd.), col='red', lwd=3, lty='dashed')
# splinefun and as.fd(splineful(...)) are close
# but quite different from the actual function
# apart from the actual 7 points fitted,
# which are fitted exactly
# ... and there is no information in the data
# to support a better fit!
# Translate also a natural spline
fn <- splinefun(x2, y2, method='natural')
fn. <- as.fd(fn)
lines(x., fn(x.), lty='dotted', col='blue')
lines(x., eval.fd(x., fn.), col='green', lty='dotted', lwd=3)
## Not run:
# Will NOT translate a periodic spline
fp <- splinefun(x, y, method='periodic')
as.fd(fp)
#Error in as.fd.function(fp) :
# x (fp) uses periodic B-splines, and as.fd is programmed
# to translate only B-splines with coincident boundary knots.
## End(Not run)
##
## as.fd.smooth.spline
##
cars.spl <- with(cars, smooth.spline(speed, dist))
cars.fd <- as.fd(cars.spl)
plot(dist~speed, cars)
lines(cars.spl)
sp. <- with(cars, seq(min(speed), max(speed), len=101))
d. <- eval.fd(sp., cars.fd)
lines(sp., d., lty=2, col='red', lwd=3)