Good day everyone!
I need a tiny toss in the right direction since I am stuck with some statistics problems.
I am investigating signals which are similar to a Landau distribution but I don’t have a good physical model to describe those (and also don’t really have to time to develop one, but it might be a nice master thesis candidate
;) ). Anyways, I am trying to characterise the distribution by its “FWHM” and peak location/height (just like a simple Gaussian) and then investigate data where I have a mix of these signals, with different widths/heights and peaks – usually two or three of them.
Here is an example with a single peak:
here with two peaks:
and here with 3-4 peaks:
Just for reference: in the ROOT (CERN) framework, there is a Landau function (see ROOT: Probability Density Functions (PDF) and TMath) which is implemented here: TMath - source file and calls the
G110 denlan from
CERNLIB (G110 Landau Distribution). I found the Fortran source code of the
DENLAN function in the tarball (Index of /download/2006_source/tar).
Since I could not find any implementation of the Landau function in Julia packages (
Distributions.jl etc.) I will probably just go ahead and reimplement it (incl. a PR to
Distributions.jl) and then try to fit it with a mixed model and least-squares fit with
JuMP.jl or so…
…but before I go ahead, I was wondering if there is a better approach or maybe even an existing implementation I overlooked. My first attempts with crude mixed Gaussian model fittings went horribly wrong, due to the asymmetry
My current best attempt is using
Peaks.jl and then fiddling around with cuts on the prominence and width of the peaks, but it’s quite messy and not stable enough. Especially when the peaks are not well separated, of course (see last example)
Sorry for this very broad question…