How to compute 99% coverage in MATLAB?

流过昼夜 提交于 2019-12-01 14:38:05

问题


I have a matrix in MATLAB and I need to find the 99% value for each column. In other words, the value such that 99% of the population has a larger value than it. Is there a function in MATLAB for this?


回答1:


Use QUANTILE function.

Y = quantile(X,P);

where X is a matrix and P is scalar or vector of probabilities. For example, if P=0.01, the Y will be vector of values for each columns, so that 99% of column values are larger.




回答2:


The simplest solution is to use the function QUANTILE as yuk suggested.

Y = quantile(X,0.01);

However, you will need the Statistics Toolbox to use the function QUANTILE. A solution that is not dependent on toolboxes can be found by noting that QUANTILE calls the function PRCTILE, which itself calls the built-in function INTERP1Q to do the primary computation. For the general case of a 2-D matrix that contains no NaN values you can compute the quantiles of each column using the following code:

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

This should give you the same results as calling QUANTILE, without needing any toolboxes.




回答3:


If you do not have the Statistics Toolbox, there is always

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

or

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

depending on what you meant.



来源:https://stackoverflow.com/questions/2384977/how-to-compute-99-coverage-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!