多维线性回归,用于计算 y = A *x + B。

3
有没有标准的方法或函数来解决给定y和x值集的问题?对于一维变量y和x,似乎有,但对于N维变量y和x,我们将有一个NxN矩阵A和一个Nx1向量B。我看到的唯一解决方案是假设y是一维的,这显然没有帮助。目前,我的唯一解决方案是进行N^2个线性多项式拟合,以获取形式为y(j) = a_jk x(k) + b_jk的系数集,然后通过取b_jk的平均值来得到向量B。我不确定这是问题的最佳解决方案。

你是指多元线性回归吗? - Ander Biguri
我不确定,那似乎只适用于标量y。https://en.wikipedia.org/wiki/General_linear_model 似乎是我所询问的内容。 - David Holdaway
一个ND变量是一个多维系统。在坐标系中,[x y z]是N-D变量,在三维世界中。它们是3个独立于彼此的1D变量,因此每个维度都有一个。 - Ander Biguri
1
我不确定我理解这个问题。您是否在寻找此内容?https://www.mathworks.com/help/matlab/ref/mldivide.html - Cris Luengo
从你的问题来看,多元回归是你所需要的(正如Ander所提到的)。你描述的一维情况只是普通的回归,但你的结果Y也可以采用矩阵形式,因此是多维的。有很多方法可以解决这个问题。如果你提供一个具体的例子,那会更有帮助,因为在这种情况下,多维并不是完全清楚的含义。 - Simon
2个回答

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不能唯一确定。
上述配方解决问题的证明并不具有启示性;如果您想看到它,请告诉我。

这是正确的答案,抱歉我回复晚了。 - David Holdaway

1

Cris Luengo在评论中说得没错。函数mldivide同时也是最小二乘求解器。

如果A是一个矩形的m×n矩阵,其中m≈n,并且B是一个有m行的矩阵,则A\B返回方程组A*x=B的最小二乘解。

因此,如果您有以下方程:

y == A * x + B

那么你首先需要从两边减去B,然后应用mldivide,大致如下:

xhat = A\(y-B);

我认为你没有理解这个问题,x和y是我拥有的东西,我想将A和B适配到这个方程式中。 - David Holdaway

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接