努力了解Q1的计算

问题描述

假设我们有以下数据集(长度为24):

x <- c(30L,49L,105L,115L,118L,148L,178L,185L,196L,210L,236L,278L,287L,329L,362L,366L,399L,430L,434L,451L,477L,488L,508L,531L,533L,542L)

如果我们计算五位数摘要: 最小值是30,最大值:542,中位数:(287 + 329)/ 2 = 308 ...这很容易!

  • Q1是子集[30,49,105,.... 287]的中位数,长度为14-> Q1 = [178 + 185] / 2 = 181.5
  • Q3“”“” [329,362,...,542] = [451 + 451] / 2 = 451

现在,如果我们使用功能summary(dataset)进行检查...,我们将得到:

Min.   1st Qu.  Median    Mean    3rd Qu.    Max. 
30.0   183.2    308.0     309.7   451.0      542.0

为什么我们得到不同的Q1?函数summary如何计算Q1?

解决方法

(至少)有九种方法来计算分位数:请参阅?quantile。对于此数据集,使用9种方法得出6个独特的结果:9个方法中有2个给出的答案为181.5 ...

res <- sapply(1:9,function(t) quantile(x,0.25,type=t))
names(res) <- 1:9
sort(res)

##       1        3        4        6        8        9        2        5 
## 178.0000 178.0000 178.0000 179.7500 180.9167 181.0625 181.5000 181.5000 
##        7 
## 183.2500 

R中的默认方法是“类型7”,该类型为183.25(summary中的值以较低的精度打印,因此显示为183.2)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...