What is the regress function doing?

I don't understand what the regress function is returning. My understanding that it should be the gradient of the line of best fit. For example:
x = [1:5]'
y = [2 4 6 8 10]'
b = regress(y, x)
returns b = 2 as expected, whereas:
x = [1:5]'
y = [5 4 3 2 1]'
b = regress(y, x)
returns b = 0.6364 as opposed to -1.
What is the regress function calculating in this case? Where does this value for b come from?

 Akzeptierte Antwort

Star Strider
Star Strider am 24 Dez. 2015

2 Stimmen

The reason the first data set returned the slope you expected is that the intercept was zero, and your design forced a zero intercept. The reason the second data set is not returning -1 for the slope is because you are forcing it to have an intercept at zero.
If you include an intercept term, you get the expected -1 slope with a y-intercept of +6:
x = [1:5]'
y = [5 4 3 2 1]'
b = regress(y, [x ones(size(x))])
b =
-1
6

Weitere Antworten (1)

Matt J
Matt J am 24 Dez. 2015
Bearbeitet: Matt J am 24 Dez. 2015

1 Stimme

It is returning x\y
>> x = [1:5]'; y = [5 4 3 2 1]'; b=x\y
b =
0.6364
In other words, the best fit to the equation y=b*x. It is just a coincidence that, in the first case, this happens to also be the slope of the line of best fit.

Kategorien

Mehr zu Linear and Nonlinear Regression 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!

Translated by