获取矩阵的百分位数95,然后将其绘制

时间:2019-03-08 22:39:57

标签: r matlab statistics quantile

编辑: 我被要求补充更多细节。最初我有一个360x180的矩阵,里面有EP值的数据,这些值分别代表蒸发量(E)和降水量(P),它们基本上表示水分的来源(EP> 0)和下沉的(EP <0) 。为了获得最重要的水分源,我只需要取正值,并且我想获得这些值的百分位数95,然后绘制高于此阈值的值,因为我想做一个可重现的示例I使用了peaks数据:

我已经在MATLAB中完成了此操作,但是如果可以在R中完成,那么它对我也适用。

我有一个示例49x49矩阵,如下所示:

a = peaks; 
pcolor(a);
caxis([-10 10]); 
cbh=colorbar('v');
set(cbh,'YTick',(-10:1:10))

它显示了类似enter image description here

的内容

我要做的是获取仅正值的百分位数95,然后绘制它们。

我该怎么做?而且还有什么更好的方法:用0或Nan替换所有小于零的值?

1 个答案:

答案 0 :(得分:0)

如果具有统计信息工具箱,则可以使用函数prctile获得百分位数。我没有这个工具箱,所以我写了my own version (a long time ago) based on the code for the function median。使用prctilepercentile,您可以执行以下操作:

a = peaks;
t = percentile(a(a>0),95);
b = a > t;

subplot(1,2,1)
pcolor(a);
subplot(1,2,2)
pcolor(b);

a(a>0)是在a中具有所有正值的向量。 t是此向量的第95个百分点。

output of code above