我有
X=c(20 ,18, 34, 45, 30, 51, 63, 52, 29, 36, 27, 24)
使用boxplot
,我试图绘制quantile(X,0.25)
和quantile(X,0.75)
但这并不是R
boxplot(X)
abline(h=quantile(X,0.25),col="red",lty=2)
abline(h=quantile(X,0.75),col="red",lty=2)
答案 0 :(得分:11)
框的值称为铰链,可能与四分位数一致(由quantile(x, c(0.25, .075))
计算),但计算方式不同。
来自?boxplot.stats
:
两个“铰链”是第一和第三四分位数的版本,即接近分位数(x,c(1,3)/ 4)。铰链等于奇数n的四分位数(其中n < - 长度(x))并且对于偶数n而言是不同的。尽管四分位数仅对n %% 4 == 1(n = 1 mod 4)的观测值相等,但对于n %% 4 == 2(n = 2 mod 4),铰链也是如此,并且在两个中间否则就是观察。
要查看值与奇数个观察值一致,请尝试以下代码:
set.seed(1234)
x <- rnorm(9)
boxplot(x)
abline(h=quantile(x, c(0.25, 0.75)), col="red")
答案 1 :(得分:7)
差异源于分位数定义的模糊性。没有一种方法是严格正确的或不正确的 - 当它们与特定数据点不完全一致并且必须被内插时,在情况(例如偶数个数据点)中有简单的不同方法来估计分位数。有点令人不安的是,boxplot
和quantile
(以及提供汇总统计信息的其他函数)使用不同的默认方法来计算分位数,尽管可以使用{type =
参数覆盖这些默认值。 1}}
通过研究在R中生成分位数统计的各种方法,我们可以更清楚地看到这些差异。
quantile
和boxplot
都给出相同的值:
fivenum
在boxplot.stats(X)$stats
# [1] 18.0 25.5 32.0 48.0 63.0
fivenum(X)
# [1] 18.0 25.5 32.0 48.0 63.0
和boxplot
中,下(上)四分位数相当于数据下半部分(上半部分)的中位数(包括完整数据的中位数):
fivenum
但是,c(median(X[ X <= median(X) ]), median(X[ X >= median(X) ]))
# [1] 25.5 48.0
和quartile
做的事情不同:
summary
这与summary(X)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 18.00 26.25 32.00 35.75 46.50 63.00
quantile(X, c(0.25,0.5,0.75))
# 25% 50% 75%
# 26.25 32.00 46.50
和boxplot
的结果之间的差异取决于函数如何在数据之间进行插值。 fivenum
尝试通过估计累积分布函数的形状进行插值。根据{{1}}:
分位数返回基础分布分位数的估计值 来自x at中提供的元素的一个或两个订单统计信息 probs中的概率。所讨论的九种分位数算法之一 在Hyndman和Fan(1996)中,选择了类型,
可以在quartile
中找到用于估计数据分布函数的九种不同方法?quantile
的完整详细信息,并且这些方法过于冗长而无法完全重现。需要注意的重要一点是9种方法取自Hyndman和Fan(1996),他们推荐使用类型8. quantile
使用的默认方法是类型7,因为与S兼容的历史原因。
我们可以看到使用分位数的不同方法提供的四分位数的估计:
?quantile
其中quantile
提供与quantile_methods = data.frame(q25 = sapply(1:9, function(method) quantile(X, 0.25, type = method)),
q50 = sapply(1:9, function(method) quantile(X, 0.50, type = method)),
q75 = sapply(1:9, function(method) quantile(X, 0.75, type = method)))
# q25 q50 q75
# 1 24.0000 30 45.000
# 2 25.5000 32 48.000
# 3 24.0000 30 45.000
# 4 24.0000 30 45.000
# 5 25.5000 32 48.000
# 6 24.7500 32 49.500
# 7 26.2500 32 46.500
# 8 25.2500 32 48.500
# 9 25.3125 32 48.375
相同的四分位数估计值。但是,当存在奇数个数据时,type = 5
将与boxplot统计数据一致。
我们可以通过自动选择类型为5或7来显示此工作,具体取决于是否存在奇数或偶数数据。下图中的Boxplot显示具有1到30个值的数据集的分位数,boxplot
和type=7
给出奇数和偶数N的相同值:
boxplot
Hyndman,R。J. and Fan,Y。(1996)统计包中的样本分位数,美国统计学家50,361-365
答案 2 :(得分:0)
可以使用type =
中的quantile
自变量,而不是boxplot
中的qboxplot
参数来指定计算样本分位数的方法。但是,在CRAN qboxplot
上有一个R包,其中包含一个也称为qboxplot::qboxplot
(因此qtype =
)的函数,该函数允许使用{{1}指定分位数计算方法。 }参数。