📄 quantile.m
字号:
function q = quantile(x,p,method)
% PURPOSE: compute empirical quantile (percentile).
% ----------------------------------------------------
% USAGE: q = quantile(x,p,method)
% where: x = matrix or vector
% p = percent
% method = 1,2,3
% 1. Interpolation so that F(X_(k)) == (k-0.5)/n (default)
% 2. Interpolation so that F(X_(k)) == k/(n+1).
% 3. The least number q such that at least a part p of x
% is less than or equal to q.
% -----------------------------------------------------
% RETURNS: q = empirical quantile
% -----------------------------------------------------
% NOTES: If input x is a matrix then the quantile is computed for
% every column. Input p may be vector also.
% Written by: Anders Holtsberg, 21-11-94
% Copyright (c) Anders Holtsberg
if nargin<3, method=1; end
if min(size(x)) == 1
x = x(:);
q = zeros(size(p));
else
q = zeros(length(p),size(x,2));
end
if min(size(p)) > 1
error('Not matrix p input')
end
if any(p>1|p<0)
error('Input p is not probability')
end
x = sort(x);
p = p(:);
n = size(x,1);
if method == 3
qq = x(ceil(min(max(1,p*n),n)),:);
else % Method 1 is from Hjort's "Computer
x = [x(1,:); x; x(n,:)]; % intensive statistical methods" page 102
if method == 2
i = p*(n+1)+1;
else
i = p*n+1.5;
end
iu = ceil(i);
il = floor(i);
d = (i-il)*ones(1,size(x,2));
qq = x(il,:).*(1-d)+x(iu,:).*d;
end
q(:) = qq;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -