Matlab - 线性回归 - 通过添加一列的 y 截距

Matlab - linear regression - y-intercept by adding one column of ones

我试图理解以下 link linear regression 关系 y = beta0 + beta1 x 的系数 beta0 和 beta1 的计算。

我了解 beta1 的第一个计算,它实际上是一个简单的最小二乘回归,但只有一个参数需要查找(斜率系数)?

在 "accidents" 的示例中,为什么他们将一列附加到 x 数组以计算 2 个系数:

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

结果:

b =

   1.0e+02 *

   1.427120171726537
   0.000001256394274

这一列的基础计算是什么?

谁能给我解释一下。

常加个介绍"bias"。在你的情况下,尝试可视化这个等式:

y = w1 * x + c

相加表示另一个输入,但始终是一个。

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

因此,为了对其中包含常数(偏差)的方程进行建模,将常数添加到输入中。

这更像是评论。但是我不允许这样做,所以写下来作为答案。

他们正在添加一列以使其适用于矩阵乘法。你有 y = beta0 + beta1*x。在矩阵乘法形式中,可以写成:y = [1 x]* [beta0 beta1]'。请注意 beta 矩阵上的转置符号。

由于我不知道的原因,Matlab 和 R 鼓励变量矢量化。据我所知,矢量化有望减少资源消耗。

因为在等式 y = beta0 + beta1 * x 中,beta0 隐式乘以 1。 换句话说,考虑 ith (x,y) 对:

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

任何 i 乘以 beta0 的 1 就是 ones 向量的来源。