Linear Regression
Solution
%% Input data for linear regression
%% Dependent DATA SETS
O2=[14.6; 12.8; 11.3; 10.1; 9.09; 8.26; 7.56; 12.9; 11.3; 10.1; 9.03; 8.17;
7.46; 6.85; 11.4; 10.3; 8.96; 8.08; 7.35; 6.73; 6.2; 14.32; 12.49; 10.78;
9.07; 8.45; 7.71; 7.25; 11.64; 10.94; 9.13; 8.99; 7.43; 6.74; 6.32];
%% Independent DATA SETS
T=[0;5;10;15;20;25;30;0;5;10;15;20;25;30;0;5;10;15;20;25;30;0;5;10;15;20;25;30;0;5;10;15;20;25;30];
Cl=[0;0;0;0;0;0;0;10;10;10;10;10;10;10;20;20;20;20;20;20;20;0;0;0;0;0;0;0;0;0;0;0;0;0;0];
CO2=[0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;10;10;10;10;10;10;10;20;20;20;20;20;20;20];
%% Dependent matrix
Y=O2;
%%Independent Matrix
Z=[ones(35,1) T Cl CO2];
A=Z’*Z;
b=Z’*Y;
%% Gauss Seidel Method
%% Solution of ‘a’ in ‘Aa=b’ using Gauss Seidel Method
%% Intial guess for ‘a’
a=[0 0 0 0]’;
n=size(a,1);
absVal=Inf;
%% Tolerence for method
tol=1e-4; itr=0;
%% Algorithm: Gauss Seidel Method
%%
whileabsVal>tol
a_old=a;
for i=1:n
sigma=0;
for j=1:i-1
sigma=sigma+A(i,j)*a(j);
end
for j=i+1:n
sigma=sigma+A(i,j)*a_old(j);
end
a(i)=(1/A(i,i))*(b(i)-sigma);
end
itr=itr+1;
absVal=abs((a_old-a)./a_old);
end
%% Value of ‘a’
fprintf(‘\n a0= %f\n a1=%f\n a2=%f \n a3=%f \n’,a);
%% Predicted value of O2
O2_predicted=Z*a;
%% Absolute relative percentage error
error=abs((O2-O2_predicted)./O2)*100;
%% Data to predict with linear regression on T, Cl& CO2
O2_new=[12.13; 10.87; 9.70; 9.15; 7.93; 7.11; 5.91; 9.94; 8.99; 7.81; 7.36; 5.85; 4.85; 3.95];
T_new=[0;5;10;15;20;25;30;0;5;10;15;20;25;30];
Cl_new=[10;10;10;10;10;10;10;20;20;20;20;20;20;20];
CO2_new=[10;10;10;10;10;10;10;20;20;20;20;20;20;20];
Z_new=[ones(14,1) T_newCl_new CO2_new];
%% Predicted value of O2_new
O2_new_predicted=Z_new*a;
%% Absolute relative percentage error
New_error=abs((O2_new-O2_new_predicted)./O2_new)*100;