如何在 MATLAB 中计算 99% 的覆盖率?

Posted

技术标签:

【中文标题】如何在 MATLAB 中计算 99% 的覆盖率?【英文标题】:How to compute 99% coverage in MATLAB? 【发布时间】:2011-01-24 00:09:51 【问题描述】:

我在 MATLAB 中有一个矩阵,我需要找到每列的 99% 值。换句话说,99% 的人口具有比它更大的值。 MATLAB 中有这个函数吗?

【问题讨论】:

【参考方案1】:

使用 QUANTILE 函数。

Y = quantile(X,P);

其中 X 是一个矩阵,P 是概率的标量或向量。例如,如果 P=0.01,Y 将是每列值的向量,因此 99% 的列值更大。

【讨论】:

【参考方案2】:

最简单的解决方案是将函数QUANTILE 用作yuk suggested。

Y = quantile(X,0.01);

但是,您需要Statistics Toolbox 才能使用函数QUANTILE。通过注意QUANTILE 调用函数PRCTILE 可以找到不依赖于工具箱的解决方案,该函数本身调用内置函数INTERP1Q 来进行主要计算。对于不包含 NaN 值的二维矩阵的一般情况,您可以使用以下代码计算每列的分位数:

P = 0.01;       %# Your probability
S = sort(X);    %# Sort the columns of your data X
N = size(X,1);  %# The number of rows of X
Y = interp1q([0 (0.5:(N-0.5))./N 1]',S([1 1:N N],:),P);  %'# Get the quantiles

这应该会给您与调用 QUANTILE 相同的结果,而不需要任何工具箱。

【讨论】:

你能解释一下这里1%概率的含义吗?我正在尝试实现您的脚本以查找向量的分位数范围,但数小时后尚未管理。非常感谢【参考方案3】:

如果您没有统计工具箱,总有

y=sort(x);
y(floor(length(y)*0.99))

y(floor(length(y)*0.01))

取决于你的意思。

【讨论】:

很遗憾,这通常不会给出与 QUANTILE 相同的结果。 @gnovice:哦,是的,QUANTILE 插值并且通常更精确。在你的回答中模仿它做得很好:-)

以上是关于如何在 MATLAB 中计算 99% 的覆盖率?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 pdist 忽略一个值(Matlab)

敲代码指向光标会覆盖下一个字符,无法用空格换行,无法打字或打字会把后面的文字覆盖解决方法

SonarQube 覆盖多模块项目

子div在父div下层,父div图片覆盖子div图片

关于一个DIV覆盖于另一个DIV下

如何使matlab中的控件和界面一起大小变化