How to fit a histogram plot to a poisson distribution

I have a histogram plot which looks like this. where I have only plotted spacing_ratios = diff(energies) ./ mean(diff(energies)). energies corresponds to the eigenvalues of a particular hamiltonian matrix. I have used the code
edges=linspace(min(spacing_ratios),max(spacing_ratios),300);
h=histogram(spacing_ratios,'BinEdges',edges);
Now I want to fit this histogram plot to poisson distribution such that the probabilty of having n energy levels in a particular interval of energies E and E+deltaE will be
where \lambda is the average number of levels in that interval. How can I fit this with my numerical results shown above?

5 commentaires

It will be easier for us to help if you upload the data. You can use the paper clip icon in the INSERT section of the toolbar.
Abhik
Abhik le 31 Août 2023
Please see the attached data. note that i have not normalized the data this data is the raw data
Torsten
Torsten le 31 Août 2023
Modifié(e) : Torsten le 31 Août 2023
Do you have an additional question ? I think your original question has been answered, hasn't it ?
Abhik
Abhik le 31 Août 2023
using poissfit I can not fit the data I also do not know how to scale the histogram plot because what i am getting is the raw data of energy spacing Now I want a plot that describe this raw data with proper scaling so that I can get the unknown parameter of the poisson distribution
Torsten
Torsten le 31 Août 2023
Modifié(e) : Torsten le 31 Août 2023
Your data contain non-integer values - so they cannot follow a Poisson distribution.
To fit a distribution, you usually do not scale the data - you work with the raw data.
To get an empirical distribution curve for your data, use
histogram(spacing_ratios,'Normalization','pdf')

Connectez-vous pour commenter.

Réponses (1)

Torsten
Torsten le 30 Août 2023
Modifié(e) : Torsten le 30 Août 2023
Simply use
lambdahat = poissfit(spacing_ratios)
But I'm surprised you want to fit data that take non-integer values with a distribution that has only mass on the set of the natural numbers. Isn't that inadequate ?

1 commentaire

I agree, and frankly I'm surprised that poissfit doesn't give a warning for non-integer input. (Maybe I'm forgetting something.)
Perhaps wblfit is more appropriate (applied to the original data, not the histogrammed data, as @Torsten did in this solution). But, of course, the correct distribution to use depends on the underlying distribution that is theorized to have generated the data.

Connectez-vous pour commenter.

Question posée :

le 30 Août 2023

Modifié(e) :

le 31 Août 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by