Hi!
I was wondering how to compute (which function to use) in Matlab the log likelihood but when the data is not normally distributed. Thanks!
Nuchto

 采纳的回答

Tom Lane
Tom Lane 2012-5-24
If you have the most recent release of the Statistics Toolbox:
>> x = poissrnd(4,20,1);
>> pd = fitdist(x,'poisson');
>> pd.NLogL
ans =
39.0221
If you do not:
>> mu = poissfit(x);
>> -sum(log(poisspdf(x,mu)))
ans =
39.0221

12 个评论

Thanks, Tom.
a) Could you explain me step by step what you are doing? I read the help files for those functions, but it takes too long for me to understand.
b) What if I don't know the distribution of my data?
Nuchto
[a] The second version fits the data to the Poisson distribution to get parameter estimate mu. Then it evaluates the density of each data value for this parameter value. (The density is the likelihood when viewed as a function of the parameter.) The overall log likelihood is the sum of the individual log likelihoods.
[b] You can try fitting different distributions. But your question was about the likelihood, and that depends on the distribution.
Thanks. This assumes I know what distribution my data is, and I don't know the distribution. "Probably" :) it has no typical distribution. So how to proceed? Along with this question, how can I know which distribution my data is? Is there a function to test my data in matlab this way?
Check out the link I posted.
Oleg's link looks interesting (I haven't tried it myself). Another option is to find a nonparametric estimate using either fitdist with the 'kernel' option, or ksdensity.
Thanks, Oleg. I tried your function but I don't know how to interpret the results. @Tom: my distribution has been produced using ksdensity with the data, and the shape doesn't resemble to any known distribution. So I didn't understand why I should use ksdensity... ksdensity doesn't tell you anything.
It's certainly possible for data to have a distribution that doesn't correspond to any theoretical distribution that has been given a name. The ksdensity function will estimate the density directly without estimating parameters of a theoretical distribution.
Ok. So how does the log likelihood here work?
In my example I used poisspdf to get the Poisson density. You could instead use ksdensity to get a nonparametric density estimate. You're likely to find the ksdensity likelihood is higher, since it is based on the sample you provide to it.
Thanks, then how do I interpret the resulting coefficient? What does 39.02 say to you?
Sadly, it doesn't say much on its own. You could compare it to the likelihood of other fits.
Im curious where the documentation for pd.NLogL is? specifically, I can't find how you would know to do this without having found this answer

请先登录,再进行评论。

更多回答(2 个)

the cyclist
the cyclist 2012-5-22
编辑:John Kelly 2015-2-26

0 个投票

If you have the Statistics Toolbox, you can calculate the (negative) log likelihood for several functional forms.
For example, there is a betalike() function that will calculate the NLL for a beta function.

3 个评论

The problem is I can't find any of those functions for non-lognormal data.
I'm not sure I understand what you mean. When you say you can't "find" them, do you mean they are not in your version of MATLAB? Do you have the Statistics Toolbox?
Or do you mean that you see all those functions, but none of them are for the distribution you are trying to use?
Or do you mean something else?
I meant the last: none of the functions listed in Matlab R2011a are for my distribution. My distribution is non-log. Anyway, is there a way to know which distribution is my data? I am very much a newbie.

请先登录,再进行评论。

Oleg Komarov
Oleg Komarov 2012-5-24

0 个投票

It will fit several distributions and should return the NLL (NegLogLik) for each.

标签

Community Treasure Hunt

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

Start Hunting!

Translated by