create.power.basis {fda} | R Documentation |
Create a Power Basis Object
Description
The basis system is a set of powers of argument $x$. That is, a basis
function would be x^exponent
, where exponent
is a vector
containing a set of powers or exponents. The power basis would
normally only be used for positive values of x, since the power of a
negative number is only defined for nonnegative integers, and the
exponents here can be any real numbers.
Usage
create.power.basis(rangeval=c(0, 1), nbasis=NULL, exponents=NULL,
dropind=NULL, quadvals=NULL, values=NULL,
basisvalues=NULL, names='power', axes=NULL)
Arguments
rangeval |
a vector of length 2 with the first element being the lower limit of the range of argument values, and the second the upper limit. Of course the lower limit must be less than the upper limit. |
nbasis |
the number of basis functions = |
exponents |
a numeric vector of length |
dropind |
a vector of integers specifiying the basis functions to be dropped, if any. For example, if it is required that a function be zero at the left boundary, this is achieved by dropping the first basis function, the only one that is nonzero at that point. |
quadvals |
a matrix with two columns and a number of rows equal to the number
of quadrature points for numerical evaluation of the penalty
integral. The first column of |
values |
a list of matrices with one row for each row of |
basisvalues |
A list of lists, allocated by code such as vector("list",1). This
field is designed to avoid evaluation of a basis system repeatedly
at a set of argument values. Each list within the vector
corresponds to a specific set of argument values, and must have at
least two components, which may be tagged as you wish. 'The first
component in an element of the list vector contains the argument
values. The second component in an element of the list vector
contains a matrix of values of the basis functions evaluated at the
arguments in the first component. The third and subsequent
components, if present, contain matrices of values their derivatives
up to a maximum derivative order. Whenever function getbasismatrix
is called, it checks the first list in each row to see, first, if
the number of argument values corresponds to the size of the first
dimension, and if this test succeeds, checks that all of the
argument values match. This takes time, of course, but is much
faster than re-evaluation of the basis system. Even this time can
be avoided by direct retrieval of the desired array. For example,
you might set up a vector of argument values called "evalargs" along
with a matrix of basis function values for these argument values
called "basismat". You might want too use names like "args" and
"values", respectively for these. You would then assign them to
basisobj$basisvalues <- vector("list",1) basisobj$basisvalues[[1]] <- list(args=evalargs, values=basismat) |
names |
either a character vector of the same length as the number of basis functions or a simple stem used to construct such a vector. For |
axes |
an optional list used by selected |
Details
The power basis differs from the monomial basis in two ways. First, the powers may be nonintegers. Secondly, they may be negative. Consequently, a power basis is usually used with arguments that only take positive values, although a zero value can be tolerated if none of the powers are negative.
Value
a basis object of type power
.
References
Ramsay, James O., Hooker, Giles, and Graves, Spencer (2009), Functional data analysis with R and Matlab, Springer, New York.
Ramsay, James O., and Silverman, Bernard W. (2005), Functional Data Analysis, 2nd ed., Springer, New York.
Ramsay, James O., and Silverman, Bernard W. (2002), Applied Functional Data Analysis, Springer, New York.
See Also
basisfd
,
create.bspline.basis
,
create.constant.basis
,
create.exponential.basis
,
create.fourier.basis
,
create.monomial.basis
,
create.polygonal.basis
,
Examples
# Create a power basis over the interval [1e-7,1]
# with powers or exponents -1, -0.5, 0, 0.5 and 1
basisobj <- create.power.basis(c(1e-7,1), 5, seq(-1,1,0.5))
# plot the basis
oldpar <- par(no.readonly=TRUE)
plot(basisobj)
par(oldpar)