2010-03-05 3 views

답변

11

QUANTILE 기능을 사용하십시오.

Y = quantile(X,P); 

여기서 X는 행렬이고 P는 확률의 스칼라 또는 벡터입니다. 예를 들어, P = 0.01 인 경우 Y는 각 열의 값 벡터이므로 열 값의 99 %가 더 큽니다. 당신은 통계 도구 상자가없는 경우

2

항상

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

또는 당신이 무엇을 의미하는지에 따라

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

있다.

+0

일반적으로 QUANTILE과 (과) 동일한 결과를 얻지는 않습니다. – gnovice

+0

@gnovice : 오 예, QUANTILE이 보간되어 일반적으로 더 정확합니다. 당신의 대답에 그것을 모방 한 좋은 직장 :-) – AVB

10

가장 간단한 해결책은 QUANTILE이라는 문자를 yuk suggested으로 사용하는 것입니다.

Y = quantile(X,0.01); 

그러나 기능 QUANTILE를 사용하도록 Statistics Toolbox가 필요합니다. 도구 상자에 의존하지 않는 솔루션은 QUANTILEPRCTILE 함수를 호출 함을 알면 알 수 있습니다.이 함수는 기본 함수 인 INTERP1Q을 호출하여 기본 계산을 수행합니다. 어떤 툴박스 없이도

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 전화로하면 동일한 결과를 제공한다 : 다음 코드를 사용하여 각 열의 분위수를 계산할 수있는 NaN 값을 포함하지 않는 2-D 행렬의 일반적인 경우에 대해 .

관련 문제