10

MATLAB に行列があり、各列の 99% の値を見つける必要があります。つまり、母集団の 99% がそれよりも大きな値を持つような値です。このためのMATLABの関数はありますか?

4

3 に答える 3

11

最も簡単な解決策は、yuk が提案したように関数 QUANTILE を使用することです

Y = quantile(X,0.01);

ただし、関数QUANTILEを使用するにはStatistics Toolboxが必要です。ツールボックスに依存しない解決策は、QUANTILE が関数 PRCTILE を呼び出し、それ自体が組み込み関数 INTERP1Q を呼び出して主要な計算を行うことに注意することで見つけることできますNaN値を含まない 2 次元行列の一般的なケースでは、次のコードを使用して各列の変位値を計算できます。

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を呼び出した場合と同じ結果が得られます。

于 2010-03-05T16:29:31.003 に答える
2

Statistics Toolbox がない場合は、常に

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

また

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

あなたが何を意味したかによります。

于 2010-03-05T16:08:01.850 に答える