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, []);