【问题标题】:Scatter plot of two matrices with trend line具有趋势线的两个矩阵的散点图
【发布时间】:2015-01-10 09:33:57
【问题描述】:

我想制作两个矩阵的散点图,包括一条趋势线。 我的两个矩阵是:增长和贸易。 两者的大小都是 NxT,其中 N 是国家的数量,T 是观察的数量(每个国家)。 我想看看增长和贸易是否对整个样本(所有国家)都有关系。 到目前为止,我的代码如下所示:

figure
for j=1:N
    scatter(growth(:,j),trade(:,j))
    xlabel('growth')
    ylabel('trade')
    hold on
    lsline
end
hold off

散点图看起来不错,但是当我想包含一条拟合线以查看两个矩阵之间是否存在关系时,我会为每个国家/地区获得一条拟合线。如何在散点图中的两个完整矩阵之间获得拟合线?换句话说,我希望我的散点图包括所有国家的拟合线,而不是每个国家的拟合线。 提前致谢。

【问题讨论】:

  • 您必须拟合整个矩阵,而不仅仅是一系列 2d 拟合。这可以帮助你:polyfitn

标签: matlab scatter


【解决方案1】:

如果将所有值视为一个长向量会怎样?您基本上会跳过国家元素并将它们全部视为growthtrade,而不管国家/地区。

% //Make all data points one long vector as all points represent the same thing
trade = reshape (trade,[1 prod(size(trade))]);
growth = reshape (growth,[1 prod(size(growth))]);

% //Normalise the data between 0-1 so that we can compare them
trade_norm = (trade - min(trade))./ (max(trade)-min(trade));
growth_norm = (growth - min(growth)) ./ (max(growth)-min(growth));

% //then fit a line
pf = polyfit( trade_norm, growth_norm, 1);
x1 = trade_norm;
y1 = polyval(pf, x1);

【讨论】:

  • 感谢您的快速回复。我现在正在尝试您的建议,但我只获得 pf 的 NaN 值。你知道为什么会这样吗?
  • 不,因为我不知道你想做什么。请记住,问题是关于如何绘制变量。不合适。如果您想得到答案,请询问有关您的拟合问题的新问题。如果是这样,请记住包含mcve
  • 我已经解决了这个问题。我的增长/交易矩阵包括 NaN 值,这就是我的 polyfit 返回 NaN 值的原因。我已经删除了它们,现在已经设法将拟合线添加到我的散点图中!感谢您的帮助。
【解决方案2】:

然后您必须计算所有国家/地区的趋势线,而不是单独计算国家/地区。这意味着您不能在循环的每次迭代中使用 lsline,但必须计算适合矩阵的按列聚合的最小二乘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-31
    • 2021-07-04
    • 2021-06-26
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    相关资源
    最近更新 更多