我无法理解回归在Matlab中是如何工作的。
假设我有2个阵列(X和Y),每个阵列都有相同的大小(假设它们每个都是1x10)。根据我的理解,回归函数应该帮助我找到X和Y之间的关系(我想通过绘制的数据绘制最佳拟合线),然后给我斜率。当我在Matlab中尝试这个时,我得到一个错误,说2个变量有不同的行数....但是他们没有,是吗?
如果有人能帮助我理解函数及其参数是如何工作的,我会非常感激,只是为了让我进入基本水平。
以下是一些代码示例:
x = [1,2,3,4,5,6,7,8,9,10];
y = [1,2,3,4,5,6,7,8,9,10]; %defining the arrays, they are linearly related
X=[x ones(size(x,1),1)]; %adding the (necessary?) column of ones
regress(y,X) % using the regress function for a relationship
我收到此错误:
??? Error using ==> regress at 64
The number of rows in Y must equal the number of rows in X.
答案 0 :(得分:2)
我认为你以某种方式混淆了列的行(Matlab使用column-major ordering)。如果您打印出两个输入y
和X
,您会立即看到它们是不同长度的行向量。仔细阅读regress
的帮助/文档 - 第一个输入必须是N-by-1列向量。第二个是N-by-p矩阵。因此,这样的事情可以起作用:
x = 1:10;
y = 1:10;
X = [x; ones(1,length(x))];
b = regress(y.',X.')
答案 1 :(得分:1)
regress
用于多元线性回归。您只想查找X
和Y
之间的关系。因为polyfit
命令应该足够了。我认为仅当你想要计算统计数据时才需要列的那一列。
从MATLAB文档:
回归是针对多元线性回归的。您只想找到 X 和 Y 之间的关系。因为 polyfit 命令应该足够了。我认为仅当你想要计算统计数据时才需要列的那一列。
当您想了解regress
与Z
和X
的行为时,您会使用Y
。简而言之,Z=f(X,Y)
。在这种情况下,您将Z
作为nx1
向量(regress
命令中的第一个参数)插入。然后你形成另一个矩阵,比如D=[X Y]
。这是nx2
向量。这将是regress
命令的第二个参数。
现在再次从MATLAB文档中阅读,看看是否有意义:
b =回归(y,X)返回系数估计的p-by-1向量b,用于y中对X的预测变量的响应的多线性回归.X是n-在n个观测值的每一个上的p个预测值的by-p矩阵。 y是观察到的响应的n×1矢量。