I would like to elaborate a bit. I have one data set where the numbers vary from a min 0.991 and max of 1.441. If I try to "betafit" to Data as it is, then it gives an error saying my data can not lie outside of 0-1 interval. So I used the command rescale(Data) which scaled the Data between 0 and 1. Now I beta fit and got the following picture which is clearly wrong. Picture Attached. What am I doing wrong here?
how to use betafit for a data that is outside the range of 0 to 1.?
조회 수: 20 (최근 30일)
이전 댓글 표시
I have numbers between 10 to 20. If I try to use betafit it refuses to fit because the range is not from 0 to 1. If I have numbers from say .12 to .25 it lets me fit a beta. I am not sure why range has to limit my ability to fit a beta distribution to a dataset. Help please.
채택된 답변
John D'Errico
2022년 1월 12일
편집: John D'Errico
2022년 1월 12일
You essentially have a 4 parameter beta distribution that you wish to fit. That is, the upper and lower limits can be part of it. But betafit only does the 2-parameter one, because estimating those bounds can be difficult.
Why do I say the bounds are difficult to estimate automatically? Because where the distrbution goes to zero at the end, exactly where does it become exactly zero? And on distributions where the PDF goes to infinity, now you have a singularity, and trying to figure out exactly where the singularity lies is again a nasty thing.
But you can simply shift and scale your data to [0,1], or [-1,1], depending on the beta parameterization. For example...
x = randn(1,10000)/10 + 3;
histogram(x,'norm','pdf')
Yes, we all know this is normally distributed data. SHSSH! Its a secret. Now, suppose we want to fit a beta distribution to it? Now it lives in the interval [0,1]. Again, exactly where those limits really should be is very difficult to quantify.
xscale = (x - mean(x));
xscale = xscale/max([abs(min(xscale)),max(xscale)])/2 + 1/2;
histogram(xscale,'norm','pdf')
PHAT = betafit(xscale)
hold on
fplot(@(X) betapdf(X,PHAT(1),PHAT(2)),[0 1])
That is not a terrible fit, but a normal would surely have done better.
Finally, what did you do wrong in the pickture you showed? That data does not look very much like any beta distribution I can think of, with that large spike in the center, but flat tails. I'm not remotely surprised you got crap for a fit. And it does not look like you have much data. Betafit had problems fitting a beta to that data. Again, absolutely no surprise.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!