Matlab 多元线性方程组的线性回归系数

Matlab 多元线性方程组的线性回归系数,matlab,linear-regression,Matlab,Linear Regression,对于I=1..30,我有多个线性方程,形式为Zi=ai*Xi+bi*Yi。 如何使用MATLAB计算每一对回归系数值,或每一个(Z,X,Y)组合的a和b的30个值 我尝试了以下代码: A=Z; B=[Xs Ys]; C = B \ A; A是我的Z点,B是我的X和Y点的矩阵。然而,我似乎只得到所有点的一对回归系数。 提前谢谢 不幸的是,如果我理解你的问题公式,你在那里设置的不是解决问题的正确方法。该假设假设您正试图在一条直线上拟合所有点。因此,B的每一行将作为一个点,仅位于一条线上,您试图找到

对于
I=1..30
,我有多个线性方程,形式为
Zi=ai*Xi+bi*Yi
。 如何使用MATLAB计算每一对回归系数值,或每一个
(Z,X,Y)
组合的
a
b
的30个值

我尝试了以下代码:

A=Z; B=[Xs Ys];
C = B \ A;
A
是我的
Z
点,
B
是我的
X
Y
点的矩阵。然而,我似乎只得到所有点的一对回归系数。
提前谢谢

不幸的是,如果我理解你的问题公式,你在那里设置的不是解决问题的正确方法。该假设假设您正试图在一条直线上拟合所有点。因此,
B
的每一行将作为一个点,仅位于一条线上,您试图找到其线性回归。如果要同时求解多条直线,则需要更改公式

这其实很简单。我假设有30个
(x,y)
点,其中每个点表示一条直线的一个方程。您将它们分别设置为
Xs
Ys
。每个方程式的输出也在
Zs
中。我还要假设这些是向量,因此,系统设置如下:

a_i
b_i
是每行的系数。您知道每一行的
(x,y)
,您的目标是为每个对应的
a
b
求解。因此,您需要重新制定系统,以便为
a
b
求解

以矩阵形式重写该问题,可以这样做:

a_1,b_1,a_2,b_2,…
的右侧向量是您最终要解决的问题。你可以看到,我们有一个矩阵方程
Y=M*X
,其中
M
Y
是已知的,而
X
是我们需要通过
X=M\Y
求解的。因此,您只需将
x
y
值重新排列为如上所述的块矩阵即可。首先,我们需要找到正确的线性指数,以便将
x
y
值放入该矩阵中,然后使用
ldivide
运算符通过最小二乘法求解系统。该矩阵是一个
nx2n
矩阵,其中
N
是我们拥有的方程或约束的总数(在您的情况下为30):

允许您使用一行代码将多个值放入矩阵中。具体而言,
sub2ind
从一组行和列坐标中确定线性索引以访问矩阵。如果您还不知道,可以使用单个数字而不是一对行和列来访问矩阵中的值(和设置值)
sub2ind
将允许您通过在矩阵中指定一组线性索引来访问相应的向量,从而一次在矩阵中设置多个值

在我们的例子中,我们需要两组线性指数-一组用于
x
值,另一组用于
y
值。请注意,
x
值从第一列开始,每隔一列跳过。对于
y
值也可以说是相同的行为,但我们从第二列开始。一旦我们有了这些指数,我们在这个矩阵中设置
x
y
值,现在我们只需求解系数:

coeff = M \ Z;
coeff
现在将是
2N x 1
向量,因此如果需要,可以将其重塑为矩阵:

coeff = reshape(coeff, 2, []);

现在,
coeff
的形状将使得每个将为您得到的每个等式提供一对
a,b
。因此,第一列表示
a_1,b_1
,第二列表示
a_2,b_2
,依此类推。
coeff
的第一行是每个约束的所有
a
系数,而第二行是每个约束的所有
b
系数。

您使用的代码是什么?以及输入和预期输出…?嗨,我有两个矩阵a=Zs,b=[Xs-Ys];我尝试了B\A,它只为整个矩阵提供一个A和B值。我想得到a和b的每个组合。
coeff = reshape(coeff, 2, []);