nonlinear and linear regression
Ältere Kommentare anzeigen
I have created a script plus a function to use for nonlinear least square optimization. I have compared it with linear regression and also with built-in functions in MATLAB such as fminsearch,fminunc, lsqnonlin. The results for all regression models are surprisingly the same and I don't know why. Can anyone help me with that please?Here is my function:
function result = NonLsq(w,x,y)
ei = -(w(1).*x+w(2))+y;
result = sum(ei.^2);
end
And the following is my main script:
clc; clear; close all;
% { Linear And Nonlinear Curvefitting}
%% 1. One Dimensional data
x = [0.5 1 2 3 4];
y = [10.4 5.8 3.3 2.4 2];
xMin = min(x);
xMax = max(x);
n = 100; % Number of data which sould be interpolated
xInterp = linspace(xMin,xMax,n);
yInterp1 = interp1(x,y,xInterp);
yInterp2 = interp1(x,y,xInterp,'spline');
%% 2. NonLinear Least Square
% Initial Guess
g = @(w,x,y) (w(1).*x+w(2))-y;
X01 = [0.15 0.55];
X02 = [0.4 0.8];
X03 = [0.7 48];
% X0 = [0.15 0.55]';
Options1 = optimset('Display','Iter','TolX',1e-5);
Options2 = optimset('Display','on');
Options3 = optimset('MaxIter',50,'TolFun',1e-4);
p1_Nonlin = fminsearch(@NonLsq,X01,Options1,x,y);
p2_Nonlin = fminunc(@NonLsq,X02,Options2,x,y);
p3_Nonlin = lsqnonlin(g,X03,[],[],Options3,x,y);
plot(x,y,'o','MarkerSize',8,'LineWidth',3,'MarkerFaceColor','k');
hold on
grid on
plot(xInterp,yInterp1,'r--','LineWidth',2)
hold on
plot(xInterp,yInterp2,'b:','LineWidth',2)
legend('Spline INterpolated')
hold on
plot(xInterp,pLinear_Interp,'k*','LineWidth',2)
plot(xInterp,P1_Nonlin_Interp,'c.','LineWidth',2,'MarkerSize',12)
hold on
plot(xInterp,P2_Nonlin_Interp,'m','LineWidth',2)
hold on
plot(xInterp,P3_Nonlin_Interp,'g','LiNEwidth',2)
legend('Original Data','Linear Interpolatn','Linear Spline','Linear Regression'...
,'FminSearch','FminUnc','LsqNonLinear')
Could it be related to the function I'm trying to optimize?
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Systems of Nonlinear Equations finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!