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 件のコメント

jean claude
jean claude 2017 年 10 月 14 日
would you clarify your question with an example that we can help ?
Khaled Ahmat
Khaled Ahmat 2017 年 10 月 14 日
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?

サインインしてコメントする。

 採用された回答

Image Analyst
Image Analyst 2017 年 10 月 14 日

1 投票

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

4 件のコメント

John D'Errico
John D'Errico 2017 年 10 月 14 日
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.
Image Analyst
Image Analyst 2017 年 10 月 14 日
Right (didn't read it carefully enough). Thanks for the correction.
Jan
Jan 2017 年 10 月 15 日
@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.
Khaled Ahmat
Khaled Ahmat 2017 年 10 月 16 日
so sorry about this mistake!

サインインしてコメントする。

その他の回答 (4 件)

Khaled Ahmat
Khaled Ahmat 2017 年 10 月 15 日

0 投票

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 件のコメント

Image Analyst
Image Analyst 2017 年 10 月 15 日
I thought a*x1 + b*x2 + c*x3 was a multiple linear regression. What formula are you thinking about?
Khaled Ahmat
Khaled Ahmat 2017 年 10 月 15 日
編集済み: Khaled Ahmat 2017 年 10 月 15 日
Yes it is a Multiple linear regression, but my question is how to make it with a zero constant in MATLAB
Image Analyst
Image Analyst 2017 年 10 月 15 日
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.

サインインしてコメントする。

Khaled Ahmat
Khaled Ahmat 2017 年 10 月 15 日

0 投票

The m.file along with the data file is attached. Thank you for your effort

2 件のコメント

Image Analyst
Image Analyst 2017 年 10 月 16 日
Not familiar with regress(). Why didn't you use the method of John D'Errico?
Khaled Ahmat
Khaled Ahmat 2017 年 10 月 16 日
編集済み: Khaled Ahmat 2017 年 10 月 16 日
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

サインインしてコメントする。

Image Analyst
Image Analyst 2017 年 10 月 17 日

0 投票

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
Khaled Ahmat
Khaled Ahmat 2017 年 10 月 17 日

0 投票

It worked, thank you very much! Really appreciate it.

質問済み:

2017 年 10 月 14 日

回答済み:

2017 年 10 月 17 日

Community Treasure Hunt

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

Start Hunting!

Translated by