[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: leasqr problem - covp is 'NA'!!!

From: Przemek Klosowski
Subject: Re: leasqr problem - covp is 'NA'!!!
Date: Mon, 18 Apr 2011 14:22:11 -0400
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv: Gecko/20110307 Fedora/3.1.9-0.39.b3pre.fc14 Lightning/1.0b2 Thunderbird/3.1.9

On 04/15/2011 12:09 PM, neo7891 wrote:
hey guys,

I'm try to solve exponential fitting with leasqr.
The fitting itself is really good - and I want to measure the estimation
error of parameters.
but the problem is... my 'covp' is only...
covp =

     NA    NA    NA    NA
data = load("data2.txt");

so , covariance matrix is invalid, and we don't know why. It probably has to do with what particular data you're using, so we'd need your data2.txt. It could also be a bug in the leasqr() implementation so you'd need to specify which version of Octave you're using.

I tried my Octave 3.2.4, using synthetic data that should match your function:

x=[0:.1:3]'; y=1-exp(-x)+0.1*(rand(length(x),1)-1); pin=[0,1,1,0];
[f,p,kvg,iter,corp,covp,covr,stdresid,Z,r2] = leasqr(x,y,pin,F);
plot(x, y, "r+", x, f, "b-");

and got reasonable fit, p=0.061542   0.915680   0.931379   0.104827

The covariance matrix results in sqrt(diag(covp))) values of 77.468751 77.468741 0.061083 90.835584. These values look strange, given the goodness of the fit; I haven't dwelved into it but the covp matrix looks strange--- approximately

1000 * [1 -1 0 1; -1 1 0 -1; 0 0 0 0; 1 -1 0 1]

which doesn't make sense to me but I haven't thought about it long enough to convince myself one way or the other. Practitioners of leasqr, what do you think about the reliability of covp values?

x = data(1:length(data),1);
y = data(1:length(data),2);

orgFx = @(x, p) p(1) + p(2) * ( 1 - exp( -p(3) * ( x - p(4))));

pin = ones(1,4);
pin(1) = median(y(1:5));
pin(2) = max(y) - min(y);
pin(3) = abs(log(max(y) - min(y))) / (max(x)-min(x));
pin(4) = min(x);

F = orgFx;

[f,p,kvg,iter,corp,covp,covr,stdresid,Z,r2] = leasqr(x,y,pin,F);

plot(x, y, "r+", x, f, "b-");

fprintf("%f     %f     %f     %f\n", p(1), p(2), p(3), p(4));

reply via email to

[Prev in Thread] Current Thread [Next in Thread]