理解Matlab中的回归函数

时间:2013-11-28 01:30:24

标签: matlab linear-regression

我无法理解回归在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.

2 个答案:

答案 0 :(得分:2)

我认为你以某种方式混淆了列的行(Matlab使用column-major ordering)。如果您打印出两个输入yX,您会立即看到它们是不同长度的行向量。仔细阅读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用于多元线性回归。您只想查找XY之间的关系。因为polyfit命令应该足够了。我认为仅当你想要计算统计数据时才需要列的那一列。

从MATLAB文档:

  

回归是针对多元线性回归的。您只想找到 X Y 之间的关系。因为 polyfit 命令应该足够了。我认为仅当你想要计算统计数据时才需要列的那一列。

当您想了解regressZX的行为时,您会使用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矢量。