R: SQUAREM vs. TURBOEM for fixed point convergence? -


i have calculation in r needs iteratively call function fixed point contraction mapping. i've been using squarem function out of squarem package ravi varadhan. today while trying figure out way around issue having squarem came across turboem package, varadhan. @ first glance turboem seems same things squarem, additional functionality in dimensions.

does know whether 1 or other of these packages preferred, either in general or particular applications? 1 more current/updated other? turboem seems have ability customize convergence criterion, might me out of current bind i'm in, i'm concerned there might other issues. can go off , test corresponding functions each package, if out there knows background on 2 packages might save me ton of time.

there 4 underlying squarem algorithms used each package. identical*. can see underlying functions using:

squarem:::cyclem1 squarem:::cyclem2 squarem:::squarem1 squarem:::squarem2 turboem:::bodycyclem1 turboem:::bodycyclem2 turboem:::bodysquarem1 turboem:::bodysquarem2 

* apart differences due way in these used within packages. , argument method in squarem called version in turboem

i turboem preferred in general, following reasons:

  • as mention, turboem allows user select convergence criterion, either based on l2-norm of change in parameter vector (convtype = "parameter"), l1-norm of change in objective function (convtype = "objfn"), or specifying custom function (convfn.user). squarem checks convergence using l2-norm of change in parameter vector.
  • turboem can stop algorithm prior convergence based on either number of iterations (stoptype = "maxiter") or amount of time elapsed (stoptype = "maxtime"). squarem stops after specified number of iterations.
  • the pconstr , project arguments turboem allow user define parameter space constraints , function projects estimates parameter space if these violated. squarem not have functionality.
  • turboem can apply multiple versions of algorithm same data (e.g. different orders, step sizes, ...), providing vector method argument , list control.method argument...
  • ... , can in parallel via foreach package.
  • turboem offers convenient interface through apply vanilla em algorithm, em acceleration schemes other squarem: parabolic em (method = "pem"), dynamic ecme ("decme") , quasi-newton ("qn").
  • the turboem package provides turbosim function, allows user conduct benchmark studies comparing different acceleration schemes.

the 1 downside can see using turboem instead of squarem that, if interested in particulars of squarem algorithm, trace provided squarem gives more specific information (residual, extrapolation, step length) provided turboem (objective function [if calculated], iteration number, l2-norm of parameter change).

one final aside: current version of squarem on cran (v 2016.8-2) has indeed been updated more version of turboem on cran (v 2014.8-1). however, news suggests updates squarem since december 2010 have been vignettes , demos, while turboem's first release in december 2011.


Comments

Popular posts from this blog

angular - Is it possible to get native element for formControl? -

unity3d - Rotate an object to face an opposite direction -

javascript - Why jQuery Select box change event is now working? -