我有一个简单数字的向量,如:
a=[1 2 3 4 5 6 7 8]
Run Code Online (Sandbox Code Playgroud)
我希望矢量的所有数字都在[25%75%]四分位数之间.但是,当我使用以下命令时:
quantile(a,[0.25 0.75])
Run Code Online (Sandbox Code Playgroud)
它只给我2个数字2和6(而不是3,4,5,6).你有什么解决方案我能做到吗?
感谢您的提前评论
基于一个数学定义位数,该quantile
功能应该不会是返回{3,4,5,6}给出{3,4,5,6}
.
分位数[0.25 0.75]
可以被认为是累积分布函数(CDF)的倒数a
.由于CDF F_a(x)= P(a <= x)是右连续增加函数.其反向F_a ^ { - 1}(q)也将是一对一的函数.因此a
只能返回单个值,最小值quantile(0.25)
使得P(a <= x)= 0.25.
但是,逻辑索引可以解决问题.见下面的代码.
% MATLAB R2017a
a = [1 2 3 4 5 6 7 8];
Q = quantile(a,[0.25 0.75]) % returns 25th & 75th quantiles of a
aQ = a(a>=Q(1) & a<=Q(2)) % returns elements of a between 25th & 75th quantiles (inclusive)
Run Code Online (Sandbox Code Playgroud)