【问题标题】:MATLAB correlation between 2 variables of different sizes2个不同大小的变量之间的MATLAB相关性
【发布时间】:2014-11-29 10:11:47
【问题描述】:

我有两个变量都是双精度类 X = 11x3 矩阵(每行显示 Negative、Neutral、Positive 元素的数量)

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

但不确定这是否正确

非常感谢

【问题讨论】:

标签: matlab correlation


【解决方案1】:

您的代码的具体问题是,在您的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

【讨论】:

  • 太好了,非常感谢您的帮助。但是我如何评估每个模型的优劣?
  • 相关值是衡量线性拟合模型好坏的指标。更明确地说,您可以执行[p,S] = polyfit(x_foo,Y,N); 并从S 输出中获得拟合优度...请参阅我提供给Matlab polyfit 帮助页面的链接,了解S 输出中的术语解释.
  • 我所做的是为每一天的推文创建一个独特的直方图,它要么显示 3 种情绪类别之一,要么试图找出这种分布与商品价格变化的关系。对于每一天,我都发现了正面负面和中性推文的数量,现在我必须拟合一个回归模型,并使用拟合优度作为衡量相关性的指标。
  • 您是否尝试过代码并查看了输出? “拟合优度”不是一个普遍的说法...通过查看模型如何拟合和不拟合您的数据,您可以决定哪种误差量化最适合您的问题。
  • 是的,我试了一下。我想要做的是使用 3 个描述性变量和 1 个主题建立一个模型,并确定它与数据的匹配程度
猜你喜欢
  • 1970-01-01
  • 2014-05-13
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 2022-09-29
  • 2019-02-27
  • 2012-04-15
相关资源
最近更新 更多