Good non linear Regression

I have the following data:
x = [15, 25, 35, 45, 55, 65, 75]
y = [22.3, 27.5, 28.8, 29.9, 29.6, 27.4, 23.3]
How could I create a good regression that would fit the data above best. I'm trying to plot them both on the same graph so you can see the different between both lines.

4 Comments

Do you know the underlying function or do you have an expectation of what the function should be?
The fitting model below is good enough:
y = p1+p2*x+p3*ln(x)+p4/x+p5/x^2
Root of Mean Square Error (RMSE): 0.00486074972111081
Sum of Squared Residual: 0.000165388214958952
Correlation Coef. (R): 0.999998485296235
R-Square: 0.999996970594765
Parameter Best Estimate
---------- -------------
p1 -1030.61369989144
p2 -2.88996744088543
p3 271.393077102476
p4 7919.34753749812
p5 -37493.8788669532
Is this result also from 1stOpt? Did you specify the equation or the toolbox is also able to find a suitable equation to fit the data points automatically? I have never tried it, so I am not aware of all the features.
There is also a function in 1stOpt in which the best fit model function could be serached automatically according to the data user provided.

Sign in to comment.

 Accepted Answer

Ameer Hamza
Ameer Hamza on 30 Apr 2020
Edited: Ameer Hamza on 30 Apr 2020
One option is to use smoothingspline option from the curve fitting toolbox
x = [15, 25, 35, 45, 55, 65, 75];
y = [22.3, 27.5, 28.8, 29.9, 29.6, 27.4, 23.3];
model = fit(x(:), y(:), 'smoothingspline');
plot(x, y, 'r+');
hold on
xv = linspace(min(x), max(x));
plot(xv, model(xv), 'b-');

2 Comments

Jessica Larry
Jessica Larry on 30 Apr 2020
Edited: Jessica Larry on 30 Apr 2020
I was able to resolve it, thank you so much for the help!!
Glad to be of help.

Sign in to comment.

More Answers (0)

Categories

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!