Learn R Programming

fda (version 2.4.0)

knots.fd: Extract the knots from a function basis or data object

Description

Extract either all or only the interior knots from an object of class basisfd, fd, or fdSmooth.

Usage

## S3 method for class 'fd':
knots(Fn, interior=TRUE, ...)
## S3 method for class 'fdSmooth':
knots(Fn, interior=TRUE, ...)
## S3 method for class 'basisfd':
knots(Fn, interior=TRUE, ...)

Arguments

Fn
an object of class basisfd or containing such an object
interior
logical: if TRUE, Fn[["params"]] are returned. Else, nord <- norder(Fn); rng <- Fn[['rangeval']]; return c(rep(rng[1], nord), Fn[["params"]], rep(rng[2], nord))
...
ignored

Value

  • Numeric vector. If 'interior' is TRUE, this is the params component of the bspline basis. Otherwise, params is bracketed by rep(rangeval, norder(basisfd).

Details

The interior knots of a bspline basis are stored in the params component. The remaining knots are in the rangeval component, with mulltiplicity norder(Fn).

References

Dierckx, P. (1991) Curve and Surface Fitting with Splines, Oxford Science Publications.

See Also

fd, create.bspline.basis, knots.dierckx

Examples

Run this code
x <- 0:24
y <- c(1.0,1.0,1.4,1.1,1.0,1.0,4.0,9.0,13.0,
       13.4,12.8,13.1,13.0,14.0,13.0,13.5,
       10.0,2.0,3.0,2.5,2.5,2.5,3.0,4.0,3.5)
if(require(DierckxSpline)){
   z1 <- curfit(x, y, method = "ss", s = 0, k = 3)
   knots1 <- knots(z1)
   knots1All <- knots(z1, interior=FALSE) # to see all knots
#
   fda1 <- dierckx2fd(z1)
   fdaKnots <- knots(fda1)
   fdaKnotsA <- knots(fda1, interior=FALSE)
   stopifnot(all.equal(knots1, fdaKnots))
   stopifnot(all.equal(knots1All, fdaKnotsA))
}

# knots.fdSmooth
girlGrowthSm <- with(growth, smooth.basisPar(argvals=age, y=hgtf,
                                             lambda=0.1)$fd)

girlKnots.fdSm  <- knots(girlGrowthSm)
girlKnots.fdSmA <- knots(girlGrowthSm, interior=FALSE)
stopifnot(all.equal(girlKnots.fdSm, girlKnots.fdSmA[5:33]))

girlKnots.fd  <- knots(girlGrowthSm)
girlKnots.fdA <- knots(girlGrowthSm, interior=FALSE)

stopifnot(all.equal(girlKnots.fdSm,  girlKnots.fd))
stopifnot(all.equal(girlKnots.fdSmA, girlKnots.fdA))

Run the code above in your browser using DataLab