Pergunta

Eu tenho uma matriz no MATLAB e preciso encontrar o valor de 99% para cada coluna. Em outras palavras, o valor tal que 99% da população tem um valor maior que ele. Existe uma função no Matlab para isso?

Foi útil?

Solução

Use a função quantil.

Y = quantile(X,P);

onde x é uma matriz e p é escalar ou vetor de probabilidades. Por exemplo, se p = 0,01, o y será vetorial de valores para cada coluna, para que 99% dos valores da coluna sejam maiores.

Outras dicas

A solução mais simples é usar a função Quantil Como Yuk sugeriu.

Y = quantile(X,0.01);

No entanto, você precisará do Estatística caixa de ferramentas Para usar a função Quantil. Uma solução que não depende das caixas de ferramentas pode ser encontrada observando que Quantil chama a função Prctile, que em si chama a função interna Interp1q Para fazer o cálculo primário. Para o caso geral de uma matriz 2-D que não contém Nan Valores Você pode calcular os quantis de cada coluna usando o seguinte 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

Isso deve lhe dar os mesmos resultados que a chamada Quantil, sem precisar de caixas de ferramentas.

Se você não tem a caixa de ferramentas estatísticas, sempre há

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

ou

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

dependendo do que você quis dizer.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top