在计算最小二乘法时,为什么要加上一个矢量?

时间:2018-09-15 13:29:49

标签: python numpy scipy regression

阅读scipy最小二乘文档https://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.lstsq.html指出:

  

我们可以将线方程改写为y = Ap,其中A = [[x 1]]和p =   [[m],[c]]。现在使用lstsq求解p:

     

A = np.vstack([x,np.ones(len(x))])。T

     

一个数组([[0.,1.],          [1.,1.],          [2.,1.],          [3.,1。]])

为什么将行改写为y = Ap并将向量1添加到新变量A中。仅从x和y值估计的最小二乘,为什么还要加上一个矢量?

1 个答案:

答案 0 :(得分:2)

假设您要通过线性回归拟合5个x值和5个y值。然后可以写y1=m*x1 + cy2=m*x2 + c,... y5=m*x5 + c,其中m是线性拟合的斜率,c是y截距(y -x=0的值)。表示这是矩阵形式,因为您有5个x值,所以您的A矩阵将有5行,每行有两个条目:x值和常量1来自上述集合5个方程式。因此,在A = np.vstack([x, np.ones(len(x))]).T中,您可以使用np.ones(len(x))添加与x值一样多的值。一个向量的引入只是简单地用一组方程表示矩阵的结果。

要获得更多的直觉,只需写下我下面互相提及的5个方程,然后以矩阵形式重写它们,您将明白为什么在A中需要一个由向量​​组成的向量。