modelMethods | R Documentation |
A large number of functions for obtaining and modifying the parameters
of likelihood models made in paleotree
.
These functions allow users to obtain
or set parameter names, or obtain and set parameter bounds, both of which
are treated as an attribute of the function class used by paleotree. In
practice, this allows users to quickly obtain parameter names and upper
and lower values for use in bounded optimizers, including reasonable
starting values.
parnames(x, ...) ## S3 method for class 'paleotreeFunc' parnames(x, ...) ## S3 method for class 'constrained' parnames(x, ...) parnames(x) <- value ## S3 replacement method for class 'constrained' parnames(x) <- value ## S3 replacement method for class 'paleotreeFunc' parnames(x) <- value parbounds(x, ...) ## S3 method for class 'paleotreeFunc' parbounds(x, ...) ## S3 method for class 'constrained' parbounds(x, ...) parbounds(x) <- value ## S3 replacement method for class 'constrained' parbounds(x) <- value ## S3 replacement method for class 'paleotreeFunc' parbounds(x) <- value parLower(x, ...) ## S3 method for class 'constrained' parLower(x, ...) ## S3 method for class 'paleotreeFunc' parLower(x, ...) parLower(x) <- value ## S3 replacement method for class 'constrained' parLower(x) <- value ## S3 replacement method for class 'paleotreeFunc' parLower(x) <- value parUpper(x, ...) ## S3 method for class 'constrained' parUpper(x, ...) ## S3 method for class 'paleotreeFunc' parUpper(x, ...) parUpper(x) <- value ## S3 replacement method for class 'constrained' parUpper(x) <- value ## S3 replacement method for class 'paleotreeFunc' parUpper(x) <- value parInit(x, ...) ## S3 method for class 'constrained' parInit(x, ...) ## S3 method for class 'paleotreeFunc' parInit(x, ...)
x |
A function of |
... |
'Ignored arguments to future methods' (i.e. for |
value |
The new value with which to replace the parameter names or bounds. Must
be a vector of the same length as the number of parameters. For |
Parameter names cannot be changed for a constrained function.
The parInit
function calls the bounds for each parameter and gives a randomly
selected value selected from a uniform distribution, using the parameter bounds
for each parameter as the bounds on the uniform distribution. This users a
shorthand to quickly generate initial parameter values which are within the
set bounds, for use in functions such as optim
. The random
sampling of initial values allows a user to quickly assess if initial
parameter values affect the optimization by simply rerunning the function on new values.
Infinite initial parameter values (resulting from infinite bounds) are discarded, and
replaced with the lower bound value (assuming only upper bounds are infinite...).
Some randomly selected initial parameter values may be too high (due to the liberal
upper bounds I set for parameters in many of the likelihood functions) and
thus users should always try slightly different values to see if the resulting
maximum likelihood parameter values change.
As parInit
depends on the upper and lower bounds attribute, no function is offered
to allow it to be replaced (as there is nothing to replace!).
Returns the sought parameter names, bounds or initial values or (for the replacement methods) returns a modified function with the respective attributes altered.
These functions are strongly based on or inspired by the argnames
functions
provided for handling models in Rich Fitzjohn's library diversitree
, but
the functions presented here are derivations written by David Bapst.
These model methods were introduced to interact with the new model framework introduced in
paleotree
version >1.9, in particular to interface with constrainParPaleo
.
#example with make_durationFreqCont set.seed(444) record <- simFossilRecord(p = 0.1, q = 0.1, nruns = 1, nTotalTaxa = c(30,40), nExtant = 0) taxa <- fossilRecord2fossilTaxa(record) rangesCont <- sampleRanges(taxa,r = 0.5) likFun <- make_durationFreqCont(rangesCont) #get parameter names parnames(likFun) #get the bounds for those parameters parbounds(likFun) #can also get these seperately parLower(likFun) parUpper(likFun) #initial parameter values parInit(likFun) #arbitrary midway value between par bounds #can then use these in optimizers, such as optim with L-BFGS-B #see the example for make_durationFreqCont #renaming parameter names likFun2 <- likFun parnames(likFun2) <- c("extRate","sampRate") parnames(likFun2) #test if reset correctly parnames(likFun2) == c("extRate","sampRate") #also works for constrained functions constrainFun <- constrainParPaleo(likFun,q.1~r.1) parnames(constrainFun) #also modified the parameter bounds, see! parbounds(constrainFun) parInit(constrainFun) #but cannot rename parameter for constrained function!
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.