How do I evaluate the error for a fitted non-linear curve
62 次查看(过去 30 天)
显示 更早的评论
Hi,
I have an experimental data spectrum which contains 3 overlapping peaks. I deconvoluted this spectrum with 3 Lorentianz using 'fit', as seen in the code. I'm quite happy with the fit, but I don't understand how I can estimate how good the fit is. Using the 'fit' function I can get R^2 goodness of fit but I found that its only good for linear regression type of fitting, not for a spectrum like mine.
More over, after I fit the data I integrate using 'trapz' over the 3 lorentianz in order to get their area. I need to estimate the error of these integrations. assuming I can get some form of goodness of fit for my fitted spectrum, how will I correlate it to an error of the integration?
I hope I managed to explain my problem.
Here is the fittype function I use in my code:
ft = fittype(@(A1,A2,A3,s1,s2,s3,x) A1*s1^2./(s1^2+(x-pos1).^2) + ...
A2*s2^2./(s2^2+(x-pos2).^2) + A3*s3^2./(s3^2+(x-pos3).^2), 'independent', 'x', 'dependent', 'y' );

0 个评论
回答(2 个)
Mathieu NOE
2022-8-25
hello
using both experimental and fitted data you can compute R2 this way :
function Rsquared = my_Rsquared_coeff(data,data_fit)
% R2 correlation coefficient computation
% The total sum of squares
sum_of_squares = sum((data-mean(data)).^2);
% The sum of squares of residuals, also called the residual sum of squares:
sum_of_squares_of_residuals = sum((data-data_fit).^2);
% definition of the coefficient of correlation is
Rsquared = 1 - sum_of_squares_of_residuals/sum_of_squares;
end
3 个评论
Mathieu NOE
2022-8-25
maybe some usefull info's here :
When fitting data, the evaluation of the GoF is almost never a trivial task. Even in the linear case, there exist some issues as can be read in the following paper :
In the non linear case, the problem becomes much more complicated and, of course, is not free of issues either. (see for example the following paper regarding the use of R-squared)
Ben Mercer
2022-8-25
Hi yuval, I'm not sure if I'm entirely clear on what you're asking. But to my understanding R^2 is not specific to linear regression, the criteria for using it is that the model must be a least-squares solution - otherwise you end up with meaningless (sometimes negative) R^2 values.
If an R^2 value is not output from whatever fitting function you are using, you can calculate it by calculating the value of your fitted model at your input data points, then calculate R^2 using the following definition:
The R^2 tells you how much variation in the data is captured by your model, as a fraction of the total variation. You can also calculate the RMS error between the data and model, but this will output a result in the physical units of whatever you are measuring, and this is not a very specific measure of how well your model captures patterns in te data.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear and Nonlinear Regression 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!