向量 MATLAB 中四分位数在 0.25 和 0.75 之间的数字
Numbers between 0.25 and 0.75 of quartiles in a vector MATLAB
我有一个简单数字向量,例如:
a=[1 2 3 4 5 6 7 8]
我希望矢量的所有数字都落在 [25% 75%] 四分位数之间。但是,当我使用以下命令时:
quantile(a,[0.25 0.75])
它只给了我 2 和 6 的 2 个数字(而不是 3,4,5,6)。
你有什么解决办法吗?
根据 quantile, the quantile()
函数的数学定义,给定 [0.25 0.75]
应该 不 returning {3,4,5,6}
。
a
的分位数可以被认为是 a
的 cumulative distribution function (CDF) 的倒数。由于 CDF Fa(x) = P(a ≤ x) 是右连续递增函数,其反函数 Fa-1(q) 也是一对一的函数。
因此quantile(0.25)
只能return单个值(标量),最小值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)
我有一个简单数字向量,例如:
a=[1 2 3 4 5 6 7 8]
我希望矢量的所有数字都落在 [25% 75%] 四分位数之间。但是,当我使用以下命令时:
quantile(a,[0.25 0.75])
它只给了我 2 和 6 的 2 个数字(而不是 3,4,5,6)。 你有什么解决办法吗?
根据 quantile, the quantile()
函数的数学定义,给定 [0.25 0.75]
应该 不 returning {3,4,5,6}
。
a
的分位数可以被认为是 a
的 cumulative distribution function (CDF) 的倒数。由于 CDF Fa(x) = P(a ≤ x) 是右连续递增函数,其反函数 Fa-1(q) 也是一对一的函数。
因此quantile(0.25)
只能return单个值(标量),最小值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)