How to specify a specific constant for a multiple linear regression?

I would like to know if it is possible to specify a certain constant to a multiple linear regression abd how?

2 commentaires

would you clarify your question with an example that we can help ?
I have a multiple linear regression using three predictor variables, say x1,x2,x3 the resulting equation is y=43-1.4x1+3.8x2-1.1x3 due to some presentation reasons I want to force the constant to be 30 instead of 43; so that the resulting equation becomes y=30-ax1+bx2-cx3;
is this possible in MATLAB?

Connectez-vous pour commenter.

 Réponse acceptée

You can fit y-43 instead of y, then do the fit and add back in the 43 to get yFitted .

4 commentaires

Actually, if you want to force the constant term to be 30, then fit the model as
y - 30 = a*x1 + b*x2 + c*x3
Thus estimate a 3 term model with no constant term, but subtract the constant you want in there from y.
I think that is what you meant, but you said to fit it as y-43.
Right (didn't read it carefully enough). Thanks for the correction.
@Khaled Ahmat: Please use flags only to inform editors and admins about contributions, which might conflict with the terms of use e.g. by rudeness. Thanks.
so sorry about this mistake!

Connectez-vous pour commenter.

Plus de réponses (4)

Khaled Ahmat
Khaled Ahmat le 15 Oct 2017
Thank you very much for your suggestion; my next question is how to run a Multiple linear regression without a constant in MATLAB? Is it the same function Regress(y,x) or there is another function for regression without a constant? Thank you in advance

3 commentaires

I thought a*x1 + b*x2 + c*x3 was a multiple linear regression. What formula are you thinking about?
Khaled Ahmat
Khaled Ahmat le 15 Oct 2017
Modifié(e) : Khaled Ahmat le 15 Oct 2017
Yes it is a Multiple linear regression, but my question is how to make it with a zero constant in MATLAB
But we already solved that in the first answer. If you don't know how to do it, then just attach vectors x1, x2, x3, and y in a .mat file.

Connectez-vous pour commenter.

Khaled Ahmat
Khaled Ahmat le 15 Oct 2017
The m.file along with the data file is attached. Thank you for your effort

2 commentaires

Not familiar with regress(). Why didn't you use the method of John D'Errico?
Khaled Ahmat
Khaled Ahmat le 16 Oct 2017
Modifié(e) : Khaled Ahmat le 16 Oct 2017
Actually I liked the method he which proposed y-30= ax1+bx2+cx3; and I am sure that there is a function in MATLAB for linear regression without a constant but now I am not able to get the function in MATLAB! This my Challenge now. If Mr John D'Errico can give us a clue about the function or an example it would be great

Connectez-vous pour commenter.

I'm not sure I've got the columns correct for x1, x2, x3, and y, but this is essentially how you'd do it (again, thanks to John D'Errico):
% Read in data file.
data = importdata('Data_case1.txt')
% Extract columns into separate variables.
% Make sure the column numbers are the correct ones!!!!
x1 = data(:, 1);
x2 = data(:, 2);
x3 = data(:, 3);
y = data(:, 4);
% Construct x matrix
x = [x1, x2, x3];
% Construct y
y = y - 30;
% Get the cofficients:
coefficients = x \ y; % Estimate Parameter: x*coefficients = y
% Get fitted values for y. Be sure to add back in the 30 we subtracted!
y_estimated = x*coefficients + 30;
% Print them out
fprintf(' x1 x2 x3 y y_estimated\n');
for row = 1 : length(x1)
fprintf('%8.4f, %8.4f, %8.4f, %8.4f, %8.4f\n', ...
x1(row), x2(row), x3(row), y(row), y_estimated(row));
end

Community Treasure Hunt

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

Start Hunting!

Translated by