向量MATLAB中四分位数的0.25至0.75之间的数字

时间:2018-10-25 15:05:08

标签: matlab quantile

我有一个简单数字的向量,例如:

a=[1 2 3 4 5 6 7 8]

我想让向量的所有数字都落在[25%75%]四分位数之间。但是,当我使用以下命令时:

quantile(a,[0.25 0.75])

它只给我2个数字,分别为2和6(而不是3、4、5、6)。 您有什么解决办法我可以做到吗?

1 个答案:

答案 0 :(得分:5)

根据quantile的数学定义,在给定[0.25 0.75]的情况下,quantile函数应该返回{3,4,5,6}。

a的分位数可被视为a的累积分布函数(CDF)的逆。由于CDF F_a(x)= P(a <= x)是右连续递增函数。它的逆F_a ^ {-1}(q)也将是一对一的函数。因此quantile(0.25)只能返回一个值,最小值x使得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)