Lambert’s W function and the generalised logarithm

November 16, 2011

(This article was first published on dahtah » R, and kindly contributed to R-bloggers)

Yesterday I ran into an equation that was a sum of an exponential and a linear term:

\displaystyle \alpha x+\beta=\delta e^{x}

It doesn’t take long to figure out that there is no analytical solution, and so I set out to write some crappy numerical code. After wasting some time with a fixed point iteration that did not really work, it occured to me that I most probably wasn’t the first person out there trying to solve such a simple equation. Indeed not.

The equation above has a solution in terms of a special function called Lambert’s W, and an nicer-looking one in terms of its cousin the generalised log (introduced by D. Kalman here).

Just like {\log x} is the inverse of {\exp x}, {\mbox{glog}x} is the inverse of {x^{-1}\exp x}, and Lambert’s {W} is the inverse of {x\exp x}. Neither glog nor W can be computed analytically, but fast implementations for {W} are available (for R, it’s in the GSL package), and:

\displaystyle \mbox{glog}\left(x\right)=-W\left(-1/x\right)

In terms of the generalised log function the solution to the equation is:

\displaystyle \mbox{glog}\left(\frac{\alpha}{\delta}\exp\left(\frac{\beta}{\alpha}\right)\right)-\frac{\beta}{\alpha}

The (easy) proof is on page 5 of Kalman’s article. Here’s some R code:

solve.lexpeq <- function(alpha,beta,delta)
v <- beta/alpha
-lambert_W0(-(delta/alpha)*exp(-v)) -v


So where does this turn up in statistics? Well, one example is finding the Maximum A Posterior estimate of a Poisson mean, if you put a Gaussian prior on the log of the mean.

To leave a comment for the author, please follow the link and comment on their blog: dahtah » R. offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...

If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Tags: , , ,

Comments are closed.

Search R-bloggers


Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)