Как вычислить 99%-е покрытие в MATLAB?

У меня есть матрица в MATLAB, и я должен найти 99%-е значение для каждого столбца. Другими словами, значение, таким образом, что у 99% населения есть большее значение, чем он. Существует ли функция в MATLAB для этого?

10
задан gnovice 7 May 2017 в 04:14
поделиться

3 ответа

Используйте функцию QUANTILE.

Y = quantile(X,P);

где X - матрица, а P - скаляр или вектор вероятностей. Например, если P=0.01, то Y будет вектором значений для каждого столбца, так что 99% значений столбцов больше.

11
ответ дан 3 December 2019 в 17:20
поделиться

Самым простым решением является использование функции КВАНТИЛЬ , как Юк .

Y = quantile(X,0.01);

Однако вам потребуется Панель инструментов статистики , чтобы использовать функцию КВАНТИЛЬ . Решение, которое не зависит от наборов инструментов, можно найти, отметив, что 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 , без необходимости в каких-либо ящиках для инструментов.

10
ответ дан 3 December 2019 в 17:20
поделиться

Если у вас нет Statistics Toolbox, всегда есть

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

или

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

в зависимости от того, что вы имели в виду.

2
ответ дан 3 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: