percentiles matlab matrix statistics percentile

percentiles - ¿Cómo calcular el 99% de cobertura en MATLAB?



matrix statistics (3)

Tengo una matriz en MATLAB y necesito encontrar el valor del 99% para cada columna. En otras palabras, el valor es tal que el 99% de la población tiene un valor mayor que él. ¿Hay una función en MATLAB para esto?


Si no tiene Statistics Toolbox, siempre hay

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

o

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

dependiendo de lo que quisieras decir


Use la función QUANTILE.

Y = quantile(X,P);

donde X es una matriz y P es escalar o vector de probabilidades. Por ejemplo, si P = 0.01, Y será un vector de valores para cada columna, de modo que el 99% de los valores de columna son más grandes.


La solución más simple es usar la función QUANTILE tal como lo sugiere yuk .

Y = quantile(X,0.01);

Sin embargo, necesitará la Caja de herramientas de estadísticas para usar la función QUANTILE . Una solución que no depende de las cajas de herramientas se puede encontrar al señalar que QUANTILE llama a la función PRCTILE , que a su vez llama a la función integrada INTERP1Q para realizar el cálculo primario. Para el caso general de una matriz 2-D que no contiene valores NaN , puede calcular los cuantiles de cada columna usando el siguiente código:

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

Esto debería darle los mismos resultados que llamar a QUANTILE , sin necesidad de ninguna caja de herramientas.