为什么第三个四分位数小于我数据中的平均值?

时间:2012-12-06 07:14:27

标签: r

我将一个名为gob的数据集加载到R中并尝试了方便的summary函数。值得注意的是,第三个四分位数小于平均值。怎么会这样?它是我的数据大小还是其他类似的东西?

我已经尝试为数字参数传递一个较大的值(例如10),但这并不能解决问题。

> summary(gob, digits=10)

   customer_id         100101.D            100199.D            100201.D        
 Min.   :   1083   Min.   :0.0000000   Min.   :0.0000000   Min.   :0.0000000  
 1st Qu.: 965928   1st Qu.:0.0000000   1st Qu.:0.0000000   1st Qu.:0.0000000  
 Median :2448738   Median :0.0000000   Median :0.0000000   Median :0.0000000  
 Mean   :2660101   Mean   :0.0010027   Mean   :0.0013348   Mean   :0.0000878  
 3rd Qu.:4133368   3rd Qu.:0.0000000   3rd Qu.:0.0000000   3rd Qu.:0.0000000  
 Max.   :6538193   Max.   :1.0000000   Max.   :1.0000000   Max.   :0.7520278  

请注意,对于gob $ 100201.D,平均值为0.0000878,但是第3曲。 = 0.

2 个答案:

答案 0 :(得分:12)

这不是一个错误,只是你的数据包含很多0值。例如,如果我使用12 0和1 1来制作x,我会得到第3个四分位数小于平均值

的结果
 x<-c(0,0,0,0,0,0,0,0,0,0,0,0,1)
summary(x)

  Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
0.00000 0.00000 0.00000 0.07692 0.00000 1.00000 

尝试在列上使用table()来查看值的分布

table(x)
 x
 0  1 
 12  1 

答案 1 :(得分:3)

第3个分位数可以低于平均值。它不是最高值的75%,而是从最低到最高排序时矢量计数的75%。换句话说:

Vector <- c(0,0,0,0,0,0,0,1)
mean(Vector)
[1] 0.125
quantile(Vector, 0.75)
[1] 0

为了找到第3个分位数,R命令从最低到最高的所有数据,然后选择最接近该向量长度的75%的值。所以基本上:

3rdQuar = Vector[round(length(Vector)*0.75)]

(注意,如果它落在两个整数之间,R实际上将平均两个。但这是基本的想法)