2015-10-06 104 views
3

我嘗試瞭解以下鏈接linear regression計算關係y = beta0 + beta1 x的係數beta0和beta1。Matlab - 線性迴歸 - 通過添加一列的y截距

我瞭解第一次計算beta1,它實際上是一個簡單的最小二乘迴歸,但只有一個參數(斜率係數)?

在「意外」,爲什麼他們的人的科拉姆追加到X數組計算2度係數的例子:

X = [ones(length(x),1) x]; 
b = X\y 

結果:

b = 

    1.0e+02 * 

    1.427120171726537 
    0.000001256394274 

什麼是底層的計算這一列的?

如果有人能向我解釋。

回答

2

這更像是評論。但我不能這樣做,所以寫作答案。

他們正在添加一列以使其適合矩陣乘法。您有y = beta0 + beta1*x。在矩陣乘法形式中,它可以寫爲:y = [1 x]* [beta0 beta1]'。請注意轉置符號在beta矩陣上。

由於我不知道的原因,在Matlab和R中鼓勵變量的矢量化。據我所知,向量化預計會減少資源消耗。

+0

我還會補充一點,如果您計算與偏差分開的斜率(即離開一列以找到斜率),它可能會實質性地改變您找到的斜率的值。這就是他們一次完成所有工作的原因。 – Dan

0

爲了引入「偏見」,經常增加一些。在你的情況下,嘗試可視化這個公式:

y = w1 * x + c 

這些被添加來表示另一個輸入,但它總是一個。

y = w1 * x1 + c * x2(which is 1) 

因此,爲了給它們中帶有常數(偏差)的方程建模,將一些方程式添加到輸入中。

0

因爲在等式y = beta0 +β1的* X,beta0被隱含由1 換句話說考慮第i(X,Y)乘以對:

y[i] = beta0  + beta1 * x[i] 
    = beta0 * 1 + beta1 * x[i] 

即1即乘以beta0任何是哪些矢量來自。