裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Julia で五数要約値(R の fivenum 関数)

2021年06月30日 | ブログラミング

R の fivenum 関数を Julia に移植する。

function fivenum!(x)
  sort!(x)
  n = length(x)
  n4 = floor(Int, (n + 3) / 2) / 2
  d = [1, n4, (n + 1) / 2, n + 1 - n4, n]
  @. 0.5 * (x[floor(Int, d)] + x[ceil(Int, d)])
end

fivenum! は,最小値,下ヒンジ,中央値,上ヒンジ,最大値の 5 つの要約値を求める。

下ヒンジは,データ全体の中央値以下のデータの中央値,

上ヒンジは,データ全体の中央値以上のデータの中央値である。

データの個数 n = length(x) として,n % 4 つまり n を 4 で割った余りが 0, 1, 2, 3 の 4 パターンで,昇順に並べ替えたデータを配置するとわかりやすい。地色が黄色の数字が五数要約値。赤で示した数値は,中央値直近の二数の平均値である。

これを

  n4 = floor(Int, (n + 3) / 2) / 2
  d = [1, n4, (n + 1) / 2, n + 1 - n4, n]
  @. 0.5 * (x[floor(Int, d)] + x[ceil(Int, d)])

で記述するとは素晴らしい。

なお,quantile!() で求められる 25パーセンタイル値 Q1 と 75 パーセンタイル値 Q3 は

n が奇数の場合は下ヒンジ,上ヒンジと同じになるが,

n が偶数の場合は,同じにはならない。

また,高校の数学では,「データを小さい方から大きい方まで並べてメジアンをとる。そのメジアンを落として,メジアンより小さいデータのまたメジアンをとってそれを第一四分位数とする。メジアンより大きいデータのまたメジアンをとってそれを第三四分位数とする。」というような定義なので,n が奇数の場合にはヒンジとは異なる。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村