y的多维线性回归= A * x + B

时间:2018-12-14 12:15:25

标签: matlab matrix multidimensional-array regression

给定y和x的一组值,是否存在用于解决此问题的标准方法/函数?

对于一维变量y和x,似乎存在,但对于N-D变量y和x,我们将有一个A NxN矩阵和B一个Nx1向量。

我所看到的唯一解决方案假定y是一维的,这显然没有帮助。

目前,我唯一的解决方案是进行N ^ 2线性多项式拟合,以得到以下形式的系数集

y(j)= a_jk x(k)+ b_jk

,然后通过取b_jk的平均值获得向量B。我不认为这是解决问题的最佳方法。

2 个答案:

答案 0 :(得分:1)

一种方法是使用最小二乘找到A和B以最小化

Q = Sum{ (A*x[i]+B - y[i])'*(A*x[i] + B - y[i])}

(这里'表示转置,我假设您有向量x [0] .. x [N-1]和y [0] .. y [N-1])

虽然您可以使用标准的线性最小二乘法求解器进行此操作,但这是另一种方法:

计算x的均值xbar和y的均值ybar,即

xbar = Sum{ x[i]}/N
ybar = Sum{ y[i]}/N

计算以下矩阵

C = Sum{ (x[i]-xbar)*(x[i]-xbar)'}
D = Sum{ (y[i]-ybar)*(x[i]-xbar)'}

计算A和B

A = D*inv(C)
B = A*xbar-ybar

请注意,只有C是可逆的,我们才能计算A。这意味着x []向量必须跨越它们所在的空间。如果没有,则A并不是唯一确定的。

上述配方解决了问题的证据不是那么有启发性;让我知道是否想看。

答案 1 :(得分:1)

克里斯·伦戈(Cris Luengo),的评论确实正确。函数mldivide兼用作最小二乘解算器

  

如果A是m〜= n的矩形m×n矩阵,而B是m行的矩阵,则A \ B将最小二乘解返回到方程A * x = B < / p>

因此,如果您有方程式

y == A * x + B

然后,您首先必须从两边减去B,然后应用mldivide,所以类似

xhat = A\(y-B);