Goodness of Fit - Error Bars
조회 수: 15 (최근 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!