★ R -- 同値のある場合の中央値 ★

 254 R -- 同値のある場合の中央値  青木繁伸  2002/01/15 (火) 12:44


254. R -- 同値のある場合の中央値  青木繁伸  2002/01/15 (火) 12:44
my.median <- function (x, accuracy=0) 
{
    median <- median.sub(x)
    if ((ntie <- length(x[x == median])) != 1 && accuracy > 0) {
        x <- c(x[x != median], (median-(ntie+1)*accuracy/2/ntie)+1:ntie/ntie)
        median <- median.sub(x)
    }
    return(median)
}

median.sub <- function(x)
{
    n <- length(x)
    half <- (n + 1)/2
    if (n%%2 == 1) {
        sort(x, partial = half)[half]
    }
    else {
        sum(sort(x, partial = c(half, half + 1))[c(half, half + 1)])/2
    }
}

# 使用例

> x <- c(1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,5,5)
> median(x)
# [1] 3
> my.median(x, accuracy=1)
# [1] 3.125

http://aoki2.si.gunma-u.ac.jp/lecture/Univariate/median.html 参照


● 「統計学関連なんでもあり」の過去ログ--- 017 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る