Pregunta

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

¿Fue útil?

Solución

Función Uso QUANTILE.

Y = quantile(X,P);

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

Otros consejos

La solución más simple es utilizar la función de QUANTILE como < a href = "https://stackoverflow.com/questions/2384977/finding-99-coverage-in-matlab/2385024#2385024"> puaj sugirió .

Y = quantile(X,0.01);

Sin embargo, se necesita el Statistics Toolbox para utilizar la función QUANTILE . Una solución que no depende de las cajas de herramientas se puede encontrar observando que QUANTILE llama a la función PRCTILE , que a su vez llama a la función integrada de INTERP1Q hacer el cálculo primario. Para el caso general de una matriz 2-D que no contiene NaN valores que se pueden 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 dar los mismos resultados que llamar QUANTILE , sin necesidad de ningún cajas de herramientas.

Si usted no tiene la caja de herramientas estadísticas, no es siempre

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

o

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

dependiendo de lo que quería decir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top