あなたの教科書は混乱しています。 このように四分位数を定義する人やソフトウェアはほとんどありません。(最初の四分位が小さすぎ、3番目の四分位が大きすぎる傾向があります。)
のquantile
関数は、変位値を計算する9つの異なる方法をR
実装します!それらのうちどれがこのメソッドに対応するかを確認するには、実装から始めましょう。説明から、アルゴリズムを最初に数学的に記述し、次に記述することができます。R
x1≤x2≤⋯≤xn
データのセットでは、奇数の値がある場合、中央値はその中間値です。それ以外の場合は、偶数の値がある場合の2つの中間値の平均です。 R
のmedian
関数はこれを計算します。
中央の値のインデックスはです。整数でない場合、(xm = (n + 1)/2(xl+xあなたは)/ 2lあなたはmmバツml = m − 1u = m + 1lあなたは
バツ私I ≤ L(x私)私≥ U
これが実装です。この教科書で演習を行うのに役立ちます。
quart <- function(x) {
x <- sort(x)
n <- length(x)
m <- (n+1)/2
if (floor(m) != m) {
l <- m-1/2; u <- m+1/2
} else {
l <- m-1; u <- m+1
}
c(Q1=median(x[1:l]), Q3=median(x[u:n]))
}
たとえば、の出力は次quart(c(6,7,8,9,10,15,16,16,20,20,23,33,50,58,104))
のテキストと一致します。
Q1 Q3
9 33
10個すべてのメソッドを使用して、いくつかの小さなデータセットの四分位数を計算しましょう:9種類の方法R
と教科書の方法:
y <- matrix(NA, 2, 10)
rownames(y) <- c("Q1", "Q3")
colnames(y) <- c(1:9, "Quart")
for (n in 3:5) {
j <- 1
for (i in 1:9) {
y[, i] <- quantile(1:n, probs=c(1/4, 3/4), type=i)
}
y[, 10] <- quart(1:n)
cat("\n", n, ":\n")
print(y, digits=2)
}
これを実行して確認すると、教科書の値が3つのサンプルサイズすべての出力のいずれとも一致していないR
ことがわかります。 (不一致のパターンは期間3のサイクルで継続し、サンプルがどれほど大きくても問題が持続することを示しています。)
9.528
quantile
タイプ1、2、および6は、この特定のサイズのデータセットに対してそれらを再現します。 いずれのR
方法は、あなたの教科書に対応していません。(このテキストの品質について疑問に思う人は...)