Goodness of Fit - Error Bars
18 次查看(过去 30 天)
显示 更早的评论
I'm currently using the fminsearch function in order to find a best fit curve to a non-analytic function. However, I would also like to be able to find error bars on my fit parameters, say at a 95% confidence level.
I don't have any experience with statistical analyses, and have been relying on built in fit functions to obtain error bars in the past. Is there any good way to do that without drastically altering my program?
To give a bit more information about my program: I am solving a system of equations with given parameters p(1), p(2), p(3), and then subtracting experimental data, x. The fminsearch function searches for optimal p by referencing a function (here, "functionname") which computes the quadratic mean (RMS) RMS(f(p)-x)
[poptimal, fval] = fminsearch(@functionname, p0);
I'd like to comment ahead of time that I don't want errorbars on the graph of my function or anything like that. I just want to know, for example, that p(1) is equal to 3e-6 +/- 2e-7 with 95% confidence.
0 个评论
采纳的回答
the cyclist
2011-7-29
I could be wrong, but I don't think that fminsearch() will be able to give you a canned goodness-of-fit error bar, because in a sense it does not "know" that you are doing a fit at all. You should theoretically be able to calculate it, but MATLAB isn't going to do it for you.
I believe the more standard approach for what you are doing would be to use the nlinfit() function in the Statistics Toolbox. That function produces error estimate output for the fitted parameters.
更多回答(1 个)
Clement Wong
2011-7-30
2 个评论
the cyclist
2011-7-30
I disagree with you. Here is a simple set of (x,y) data. In the first call to nlinfit(), I use the model y = P*x. In the second call, I used y = (P1+P2)*x. The first call works fine. The second call gives me a warning that the Jacobian is ill-conditioned, and the covariance matrix of the parameter estimates is of order 1e27. This is exactly the behavior I would expect. [Sorry that the code will probably be very poorly formatted, but there is no markup in comments.]
% Pretend data
x = 1:8;
y = 3*x + 0.4*rand(1,8);
% Well parameterized model
f = @(p,x) p(1)*x;
beta0 = [1];
[beta,r,j,covb,mse] = nlinfit(x,y,f,beta0)
% Poorly parameterized model
f = @(p,x) (p(1)+p(2))*x;
beta0 = [1 1];
[beta,r,j,covb,mse] = nlinfit(x,y,f,beta0)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Interpolation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!