1. ホーム
  2. matlab

[解決済み] ベクトルにおける四分位値の0.25から0.75までの数値 MATLAB

2022-02-07 13:23:35

質問

次のような単純な数のベクトルがあります。

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() 機能が必要です。 ではない を返している。 {3,4,5,6} 与えられた [0.25 0.75] .

の分位数 a の逆数と考えることができる。 累積分布関数(CDF) について a . CDF F <サブ a (x) = P(a ≤ x) は右連続増加関数であるため、その逆関数 F <サブ a -1 (q)も同様に1対1関数になる。

このように 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)