calculate coefficients with linear regression
24 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Antrea Plastira
am 12 Okt. 2022
Kommentiert: Image Analyst
am 12 Okt. 2022
i have a set of data (xj, yj) which describe a function f(x) = a0 + a1x +a2 x^2 +a3 e^x
how can i find the coefficents a0, a1,a2,a3 modeling with linear regression and using quatratic programming.
so far i have found the slope and intercept.
my code is:
clc
clear
load('DataEx3(1).mat');
% calculating the mean for the x and y variable
x_mean = mean(xj);
y_mean = mean(yj);
% number of data points
n = length(xj);
%cross deviation of x and y
dev_xy = sum(xj*yj.') - (n*x_mean*y_mean);
%square deviation of x
dev_x = sum(xj*xj.') - (n*x_mean*x_mean);
% calculation of optimum coefficient a
a = dev_xy/dev_x;
% calculation of optimum intercept (c)
c = y_mean - (a*x_mean);
disp('value of coffiecent m is: '); disp(a);
disp('value of optimum intercept is: '); disp(c);
% best line has the form y = mx+c
0 Kommentare
Akzeptierte Antwort
Weitere Antworten (1)
Image Analyst
am 12 Okt. 2022
Why do you want to use linear regression for that very non-linear function? Why not use fitnlm to do a non-linear fit to your equation? Demos attached.
2 Kommentare
Torsten
am 12 Okt. 2022
The function is linear in the parameters to be fitted. Thus a linear regression suffices.
Image Analyst
am 12 Okt. 2022
@Torsten Oh (sound of hand slapping forehead) you're right.
However if the x in the exponential had a coefficient a4,
f(x) = a0 + a1 * x + a2 * x^2 + a3 * exp(a4 *x)
then we could use fitnlm. Not sure why that last x doesn't have a coefficient, which would allow for a "slope" or different steepnesses of the exponential term. I think that would give a more flexible model. You could always put in a4, and if it's 1, then it's 1, and a linear estimation is fine. But if a4 is not 1, it might be a better model by including a4.
Siehe auch
Kategorien
Mehr zu Linear and Nonlinear Regression finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!