Имам матрица в MATLAB и трябва да намеря 99% стойност за всяка колона. С други думи, такава стойност, че 99% от населението има по-голяма стойност от нея. Има ли функция в MATLAB за това?
Как да изчисля 99% покритие в MATLAB?
Отговори (3)
Използвайте функцията QUANTILE.
Y = quantile(X,P);
където X е матрица и P е скаларен или вектор на вероятностите. Например, ако P=0,01, Y ще бъде вектор от стойности за всяка колона, така че 99% от стойностите на колоните са по-големи.
Най-простото решение е да използвате функцията QUANTILE като yuk предложи.
Y = quantile(X,0.01);
Ще ви е необходима обаче кутия с инструменти за статистика, за да използвате функцията КВАНТИЛ. Решение, което не зависи от кутиите с инструменти, може да се намери, като се отбележи, че QUANTILE извиква функцията PRCTILE, която сама извиква вградената функция INTERP1Q, за да направите основното изчисление. За общия случай на 2-D матрица, която не съдържа 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, без да се нуждаете от кутии с инструменти.
Ако нямате кутията със статистически инструменти, винаги има
y=sort(x);
y(floor(length(y)*0.99))
or
y(floor(length(y)*0.01))
зависи какво имаш предвид.