四分位数范围在ggplot2中

时间:2015-02-10 16:16:45

标签: r ggplot2

set.seed(42)
DF <- data.frame(bias=rnorm(2700),cnd=1:27)
DF$cnd <- factor(DF$cnd)

试图了解在ggplot中使用median_hilow。我希望找到一种方法来绘制上下四分位数范围。但我无法在任何地方找到'fun.data = median_hilow'的完整解释。即使我认为它正在做正确的事情。是否有关于此功能的完整文档来检查它是如何绘制IQR的?

library(ggplot2)
ggplot(DF,aes(x=cnd,y=bias,colour=cnd)) + 
  stat_summary(fun.data=median_hilow)

3 个答案:

答案 0 :(得分:4)

median_hilow只是来自smedian_hilow包的Hmisc的包装。

来自smean / smedian的{​​{1}}功能组的文档。

根据以下@BondedDust的评论,您需要先安装好的软件包Hmisc

(键入Hmisc?smedian_hilow):

  

提供了许多统计汇总函数,用于summary.formula和summary(以及tapply和它们自己)。 smean.cl.normal计算3个汇总变量:基于t分布的样本均值和低和高阶高斯置信限。 smean.sd计算平均值和标准差。 smean.sdl计算平均值加上或减去标准差的常数乘以。 smean.cl.boot是基本非参数引导的非常快速的实现,用于获得总体均值的置信限,而不假设正态性。这些功能都会自动删除NA。 smedian.hilow计算样本中位数和一对选定的外部分位数,它们具有相等的尾部区域。

?median_hilow根据置信区间计算中位数和下四分位数和上四分位数。举个例子:

smedian.hilow

您可以查看@BondedDust关于如何使用x <- rnorm(100) > smedian.hilow(x, conf.int=.5) # 25th and 75th percentiles Median Lower Upper 0.02036472 -0.76198947 0.71190404 函数实现此问题的答案。

答案 1 :(得分:4)

如果你想要IQR,那么你不需要median_hilow,至少有它的默认值,因为它提供低值作为第2.5百分位数,高值作为第97.5百分位数。 (IQR将是第25和第75。)

> smedian.hilow(1:100)
Median  Lower  Upper 
50.500  3.475 97.525 

您可以使用0.5的conf.int以这种方式将conf.int - 参数传递给Hmisc::smedian.hilow - 函数,这将为您提供四分位数范围,因为(如Hmisc帮助页面所示):{ {1}}:

" smedian.hilow computes the sample median and a selected pair of outer quantiles having equal tail areas."

答案 2 :(得分:2)

通过这样做,我可以匹配证明其按照我们的想法行事的结果:

library(plyr)
 iqr <- function(x, ...) {
     qs <- quantile(as.numeric(x), probs = c(0.25, 0.75), na.rm = TRUE)
     names(qs) <- c("ymin","ymax")
     qs
 }
 ddply(DF, .(cnd), summarise, new = iqr(bias))

但是此示例突出显示conf.int参数至关重要的