Rによる中心値の計算 -関数定義の研究-

今回は、Rで中心値(算術平均、中央値)の計算を行う方法について検討したいと思います。Rには使い勝手の良い組み込み関数が存在しますが、アルゴリズムを知る意味で、ここは敢て関数を定義して使用します。

############関数の定義#############

##算術平均を計算する関数##
arithmetic.mean <- function(x) {
sum(x)/length(x)
}

##中央値を計算する関数##
mymedian <- function(x){
odd.even <- length(x)%%2    #要素数を2で割った時の余りを計算
    if(odd.even == 0)               #要素数が偶数のとき
        (sort(x)[length(x)/2] + sort(x)[length(x)/2 + 1])/2    #中央にある2値の算術平均を計算
    else                                    #要素数が奇数のとき
        sort(x)[ceiling(length(x)/2)] #ceiling(x)はx以上で最小の整数を返す
}

############関数のテスト#############

#データの作成
odd <- c(1,2,3,4,5,6,7) #奇数
even <- c (1,2,3,4,5,6) #偶数

##算術平均の計算##
arithmetic.mean(odd)

[1] 4
#Rの組み込み関数による計算
mean(odd)
[1] 4

##中央値の計算##
#要素数が偶数のデータ
mymedian(odd)
[1] 4
median(odd)  #組み込み関数medianで計算
[1] 4
#要素数がのデータ
mymedian(even)
[1] 3.5
median(even)  #組み込み関数medianで計算
[1] 3.5

【参考文献】
Michael JC 著 野間口謙太郎他訳『統計学:Rを用いた入門書』2008 共立出版  28 - 32pp