Finding fit parameters for x,y data of a lognormal cdf
27 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi,
I have x, y vector data where x = some independent variable of interest and y = cumulative probability. I know the resulting curve represents a lognormal cdf but I'm having trouble finding a way to find the location and scale parameters that correspond to it.
My initial thought was to simply take the cdf, convert it to a pdf by taking p(ii) = y(ii+1) - y(ii), and then use the frequency option of lognfit to find the parameters. I do not get the correct result from this though and was wondering if anyone else had any ideas. Example code is below. Thanks!
if true
% code
end
X = 1:200;
Y = logncdf(X,4.5,0.1); %4.5 and 0.1 are just for illustration, in reality I don't know these parameters.
for ii = 1:length(X)-1
P(ii) = Y(ii+1)-Y(ii);
end
P(200) = 1 - Y(end);
fit = lognfit(X,[],[],P)
The location parameter I get from this example is correct, but the scale parameter is 0.
0 Kommentare
Akzeptierte Antwort
David
am 26 Mär. 2015
4 Kommentare
Star Strider
am 27 Mär. 2015
You already accepted your own answer, so I’ll delete mine.
It isn’t as difficult a problem as you’re making it. In fact, you’re using the wrong approach. You need to understand the lognormal distribution, then the solution is straightforward:
D = load('David SampleData.mat');
x = D.X;
p = D.P;
prms = @(b,x) logncdf(x,b(1),b(2));
init_prms = interp1(p, x, [0.5 0.025]);
B0 = [log(init_prms(1)) -diff(init_prms)/init_prms(1)];
B = nlinfit(x,p,prms,B0);
lncdfit = prms(B,x);
figure(1)
plot(x, p, 'bp')
hold on
plot(x, lncdfit, '-r')
hold off
grid
produces:
Alsc
am 10 Okt. 2019
Well, I guess I haven't understood this well enough when I have to ask this question, but,
where do I get the goodness of fit and fit parameters from this?
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!