2015-10-06 176 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任何是哪些矢量来自。