Числа от 0,25 до 0,75 квартилей в векторе MATLAB - PullRequest
0 голосов
/ 25 октября 2018

У меня есть вектор простых чисел, таких как:

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 голосов
/ 25 октября 2018

На основании математического определения квантиля функция quantile должна не возвращать {3,4,5,6} заданного [0.25 0.75].

Квантиль a можно рассматривать как обратную кумулятивной функции распределения (CDF) для a.Поскольку CDF F_a (x) = P (a <= x) является непрерывной справа непрерывной функцией.Его обратное F_a ^ {- 1} (q) будет также функцией «один к одному».Таким образом, <code>quantile(0.25) может возвращать только одно значение, наименьшее значение x такое, что P (a <= x) = 0,25.</p>

Однако, логическое индексирование поможет.Смотрите код ниже.

% 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)
...