您的教科书很困惑。 很少有人或软件通过这种方式定义四分位数。(这会使第一个四分位数太小,而第三个四分位数又太大。)
该quantile
函数R
实现了九种不同的计算分位数的方法!要查看其中的哪个(如果有的话)对应于此方法,让我们从实现它开始。从描述中,我们可以先编写数学算法,然后编写R
:
X1个≤ X2≤ ⋯ ≤ Xñ
对于任何数据集,中位数是中间数量的数值(当数值为奇数时)。否则,当数值为偶数时,它是两个中间值的平均值。 R
的median
函数对此进行计算。
米= (Ñ + 1 )/ 2(x升+ xü)/ 2升ü米米X米l = m − 1u = m + 1升ü
X一世我≤ 升(x一世)我≥ ü
这是一个实现。它可以帮助您在本教科书中进行练习。
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
让我们使用所有十种方法来计算一些小型数据集的四分位数:九种方法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)
}
当你运行这个检查,你会发现,教科书价值不认同任何的的R
输出对所有三个样本量。 (意见分歧的模式在第三阶段的周期中持续存在,这表明无论样本数量多大,问题仍然存在。)
9.528
quantile
类型1、2和6会针对此特定大小的数据集重现它们。 没有一种R
方法与您的教科书相对应。(人们对这篇文章的质量