library(geex)
rootFUN
By default, geex
uses the rootSolve::multiroot
function for finding roots of a set of estimating equations when compute_roots = TRUE
in m_estimate()
. However, a user can choose a different root find find algorithm via the root_control
argument.
For example, consider the following estFUN
which is Huber's estimator for the center of symmetric distributions [@stefanski2002; example 6]. This example was chosen because it has a single root, so that the stats::uniroot
function can be used to find the roots.
myefun <- function(data, k = 1.5){ function(theta){ x <- data$Y1 - theta[1] if(abs(x) <= k) x else sign(x) * k } }
Internally, estFUN
is used to build $G_m = \sum_{i = 1}^m \psi(O_i, \theta)$ or in psuedo-code f = sum(inner_estFUN(theta))
. f
is passed to the root finding function along with options in the root_control
arguments. For example, multiroot
requires f
and start
(starting values for the algorithm:
multiroot_results <- m_estimate( estFUN = myefun, data = geexex, root_control = setup_root_control(start = 3))
The stats::uniroot
function, however, requires the arguments f
and interval
(or lower
and upper
)
uniroot_results <- m_estimate( estFUN = myefun, data = geexex, root_control = setup_root_control(stats::uniroot, interval = c(0, 10)))
Comparing results:
roots(multiroot_results) - roots(uniroot_results)
They are basically the same, but this may not be true depending f
and the options given to the root finder.
All that is necessary for rootFUN
is a function where:
rootFUN_object
argument in m_estimate
. For example, both uniroot
and multiroot
return a list where the root estimates are in the item named "roots". The default is rootFUN_object = 'roots'
, so this option works for both uniroot
and multiroot
. Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.