我有两个变量都是double类 X = 11x3矩阵(显示每行中的负数,中性,正元素数)
Y = 11x1(显示价格)
如何显示这两个变量之间的相关性,并将其与线性回归模型相匹配。
我试过了:
corrcoef([X,Y])
ans =
1.0000 0.3119 0.6753 0.0996
0.3119 1.0000 0.4582 -0.0565
0.6753 0.4582 1.0000 -0.0627
0.0996 -0.0565 -0.0627 1.0000
但不确定这是否正确
非常感谢
答案 0 :(得分:0)
您的代码的具体问题是,在您的行corrcoef([X,Y])
中,您只是将X
和Y
归为一个变量。你绝对可以从这个矩阵中得到你想要的答案(非对角线的术语是X和Y的列之间的相关性),但这可能不是你所期望的那样。
如果您不确定,我总是建议将问题分解为最小的步骤。在这种情况下,事情可能会让您感到困惑,因为X
有三列,而Y
只有一列。 corrcoef
在这种情况下做了什么?如果你不确定,我建议把它分解成更小的步骤......
对于您感兴趣的操作(与Y
的关联和线性回归),X
的三列之间没有相互依赖关系。因此,一个很好的简化步骤是独立处理3列。您可以在for
循环中执行此操作(是的,您可以立即执行所有向量化操作,但在for
循环中执行此操作可以更容易理解何时不确定)...
%see the correation between the two variables
for I=1:3
x_foo = X(:,I)
%http://www.mathworks.com/help/matlab/ref/corrcoef.html
c = corrcoeff(x_foo,Y)
end
然后,您可以执行下一步...线性回归。使用polyfit函数拟合一条线。
figure;
for I=1:3
x_foo = X(:,I);
%http://www.mathworks.com/help/matlab/ref/polyfit.html
N = 1; % order of the desired polynominal. N=1 means a line
p = polyfit(x_foo,Y,N); %N=1 will fit a line
%plot
subplot(3,1,I)
plot(x_foo,Y,'o',x_foo,polyval(p,x_foo),'s');
legend('Data','Linear Fit');
end