Cosma Shalizi Research
Maximum Likelihood Estimation for q-Exponential (Tsallis) Distributions
The q-exponential distributions are a special case of the type II
generalized Pareto distribution; they were introduced into the literature of
statistical mechanics by Constantino Tsallis, who argued, on theoretical
grounds, for their applicability to systems with long-range interactions. They
have come to be used more generally by physicists to model the distribution of
many heavy-tailed phenomena in complex systems. While
I have my doubts about all this, if
people are going to fit them to data they ought to fit them well, and that
means using maximum likelihood estimates.
- "Maximum Likelihood Estimation for q-Exponential (Tsallis)
- A short (4 pp.) paper, showing how the q-exponentials are a
special case of one of the generalized Pareto distributions, recapitulating the
derivation of the maximum likelihood estimator, and establishing its
superiority to the practice of fitting curves to the distribution
- Last revised 31 January 2007.
Tsallis q-Exp Distribution
- An R package available through CRAN: Paul Higbie took the initiative
to make this happen, and Christophe Dutang actually did the code packaging.
So as not to break links, I still have here my original code, but you should
really use the package.
A set of functions, written in R,
to do calculations with the q-exponential distributions, to implement the MLE
described in the paper, and to do some bootstrap error checking.
Usage information is provided in the comments, which are pretty
Note that this is not a proper R package, because I am
insufficiently motivated to put one together.
This code is free, open-source software, released under
the Gnu Public License. You are free
to redistribute it or modify it under certain conditions. It comes with
absolutely no warranty whatsoever.
Last revised (version 0.2.1) on 6 February 2007.
A copy of the relevant Gnu Public License.
A tar'd, gzip'd arxiv containing this document, the paper, the code, the
figures below, and the legal documentation.
(Again, this is all superseded by the package at CRAN.)
Put a copy of tsal.R in your favorite directory. Have R source the
file. (From the R command line, this
is source("path_to_tsal/tsal.R"), where path_to_tsal is the
path from R's current working directory to wherever you put the code.) The
functions are now ready for use.
The code contains two functions, plot.tsal.quantile.transform and
plot.tsal.LR.distribution, which are intended to sanity-check the
quality of the implementation. When run with their default parameters on my
laptop, they give the following pictures, respectively (click for
higher-resolution PDF versions, about 1.5 Mb):
Run on your machine, the results should be similar. (But
plot.tsal.LR.distribution calls the random number generator each time
it is run, so if you get exactly the same figure, that is also
Page created 28 January 2007, last revised 17 March 2015