フィルターのクリア

How to force the intercept of a regression line to zero?

215 ビュー (過去 30 日間)
Ali Y.
Ali Y. 2015 年 7 月 16 日
コメント済み: John D'Errico 2022 年 8 月 12 日
Hi; How to set the intercept of a regression line,, resulted from fitlm, to zero?
clc
X = 1:10
y = [1, 2, 2.9, 4, 5.1, 6, 7, 7.8, 8.6, 9.5]
dlm = fitlm(X,y)
Thank you, in advance, for your help.
  1 件のコメント
Brendan Hamm
Brendan Hamm 2015 年 7 月 16 日
I would highly suggest learning the Wilkinson notation, as this allows you to fit models and specify the form of the equation you would like to fit.

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

採用された回答

Brendan Hamm
Brendan Hamm 2015 年 7 月 16 日
There are 2 main ways you can do this:
dlm = fitlm(X,y,'Intercept',false);
or using Wilkinson notation:
dlm = fitlm(X,y,'y~x1-1');
I would highly suggest learning the Wilkinson notation, as this allows you to fit models and specify the form of the equation you would like to fit.
  2 件のコメント
DEWDROP
DEWDROP 2020 年 5 月 10 日
could you please tell me what is the difference between mdl=fitlm and dlm=fitlm while fitting the regression line?
John D'Errico
John D'Errico 2022 年 8 月 12 日
You can name an output variable to be anything you want. There is NO relevance.

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

その他の回答 (1 件)

George Tzintzarov
George Tzintzarov 2018 年 10 月 6 日
I would use the 'fittype' function:
ft1 = fittype({'x'}) %This creates a linear 'fittype' variable that is of the form f(a,x)=ax.
ft2 = fittype({'x','1'}) %This creates a linear 'fittype' variable that is of the form f(a,x)=ax+b.
Then fit and evaluate to values you want: (Note that in the fit function x and y must be column vectors)
x = [1 2 3 4]; y = [2 3 4 5];
p1 = fit(x',y',ft1); %This creates a 'cfit' variable p that is your fitted function
p2 = fit(x',y',ft2); %This creates a 'cfit' variable p that is your fitted function
x_fit = linspace(0,6,10); %x-values to evaluate
y1_fitted = feval(p1, x_fit); %y-values for the evaluated x-values
y2_fitted = feval(p2, x_fit); %y-values for the evaluated x-values
Here is what you should get:
plot(x,y,'ro'); hold on;
plot(x_fit,y1_fitted,'b-')
plot(x_fit,y2_fitted,'b--')
legend({'Raw Data','Fitted with y-int','Fitted through (0,0)'})
  1 件のコメント
Vladimir Jara
Vladimir Jara 2022 年 8 月 12 日
any solution withoug additional toolboxs?

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

カテゴリ

Help Center および File ExchangeLinear and Nonlinear Regression についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by