具有趋势线的两个矩阵的散点图

时间:2015-01-10 09:33:58

标签: matlab scatter

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

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果将所有值视为一个长向量,该怎么办?您基本上会跳过国家/地区元素,并将其全部视为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);

enter image description here