merlin version 1.0.0

merlin used to be called megenreg… I’m sure everyone (except Tim Morris…he was a forge fan) will agree merlin is a better name. I’m planning T-shirts…

merlin stands for Mixed Effects Regression for LInear and Non-linear models. merlin can fit multivariate outcome models of any type, each of which could be repeatedly measured (panel/longitudinal), with any number of levels, and with any number of random effects at each level. Standard distributions/models available include the Bernoulli, beta, gamma, Gaussian, linear quantile, negative binomial, ordinal, Poisson, and time-to-event/survival models include the exponential, gompertz, splines on the log hazard scale, Royston-Parmar, and Weibull. merlin provides a flexible predictor syntax, allowing the user to define variables, random effects, spline and fractional polynomial functions, functions of other outcome models, and any interaction of them. Non-linear and time-dependent effects are seemlessly incorporated into the predictor. merlin allows level-specific random effect distributions, either multivariate normal or $t$, which are integrated out using either Gaussian quadrature or Monte-Carlo integration.


merlin version 1.0.0 is now released

The development version is now up on my website, and you can install it by typing:

net install merlin, from("")

It’ll be on SSC very soon as well, and when it is, I recommend you uninstall the development version, and install the SSC version instead. Development updates will be pushed to my website first.

All of the tutorials on the accompanying merlin pages have been updated.

There are some big changes and improvements:

  • syntax re-write -> megenreg used to require naming parameters through @name notation, when anything more complicated than a varname was specified in the complex predictor, now @ is only required when specifiying a constraint on a parameter, such as M1[id]@1 when specifying a random intercept. This is much more consistent with gsem, and a lot more convenient.
  • syntax re-write -> fp(varname, ...) and rcs(varname, ...) now take a variable input to specify fractional polynomial and restricted cubic spline elements. Before, fp() and rcs() elements could only be used with timevar() for time-dependent effects. Now they can be used with any variable, but if varname matches with that in timevar() then time-dependent effects are automatically handled.
  • offset() has also been added as an option of both fp() and rcs()
  • interactions between fp() and rcs() elements etc. are now allowed
  • predictions have (finally) been added -> currently supporting fixedonly which calculates predictions based only on the fixed effects, and marginal which calculates predictions by marginalising over the random effects. Available predictions include the expected value of an outcome, the expected value of a complex predictor, the hazard function, the cumulative hazard function, the survival function, and restricted mean survival time. Lots more to add. Predictions can be made at() specified covariate patterns, and at user-specified times using a timevar().
  • EV[] notation now corresponds to the expected value of a response, whereas before it corresponded to the expected value of each model’s complex predictor - which has been replaced with XB[] elements.
  • random effect names in the complex syntax must now start with a capital M e.g. M#[]
  • all help files updated, including documenting all utility functions for use in family(user) distributions
  • results table substantially improved

Error checks and bug fixes:

  • bug fix with if statements
  • error check added for . notation or ## in a complex predictor, as they are not supported

There’s a lot more to come from merlin.


comments powered by Disqus