You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言第三四分位数计算结果与手动值不符的原因及正确值咨询

第三四分位数计算差异解析

问题场景

给定以下数据:

tj<-c(0 ,      0    ,      0    ,      0    ,      0    ,      0    ,      0    ,      0    ,
      0 ,      0    ,      0    ,      0    ,      0    ,      0    ,      0    ,      1    ,
      1 ,      1    ,      1    ,      1    ,      1    ,      1    ,      2    ,      2    ,
      2 ,      2    ,      2    ,      2    ,      2    ,      2    ,      2    ,      2    ,
      2 ,      2    ,      3    ,      3    ,      3    ,      3    ,      3    ,      4    ,
      4 ,      4    ,      5    ,      5    ,      5    ,      5    ,      6    ,      6    ,
      6 ,      6    ,      7    ,      8    ,      8    ,      9    ,      16   ,      20   )

手动计算第三四分位数得到4.5(取第42和43个元素的平均值),但用R的summary()和默认quantile()函数计算得到4.25:

summary(tj)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.000   0.000   2.000   3.036   4.250  20.000  

res<-quantile(tj, probs = c(0,0.25,0.5,0.75,1))
res
   0%   25%   50%   75%  100% 
 0.00  0.00  2.00  4.25 20.00 

差异原因:分位数计算规则不同

R语言的quantile()函数默认使用type=7的计算规则(Tukey提出的分位数方法),具体逻辑为:

  1. 对于分位数概率p=0.75,数据总长度n=56,计算位置索引:(n-1)*p = 55*0.75 = 41.25
  2. 取该位置的整数部分41,对应第41+1=42个元素(值为4),小数部分0.25
  3. 最终结果为:第42个元素 + 小数部分*(第43个元素-第42个元素),即4 + 0.25*(5-4) = 4.25

而你手动计算采用的是另一种常见规则(对应R中的type=2):

  1. 计算位置:n*p = 56*0.75 = 42,刚好是整数
  2. 取第42和第43个元素的平均值:(4+5)/2 = 4.5

关于“正确”取值的说明

四分位数并没有统一的标准定义,不同统计场景会采用不同的计算规则。R的quantile()函数支持9种不同的计算类型(type=1到type=9),你可以通过指定type参数切换:

# 得到和手动计算一致的结果
quantile(tj, 0.75, type=2)
75% 
4.5 

选择哪种规则取决于你的分析需求:

  • 若适配Tukey箱线图逻辑,默认type=7更合适
  • 若需要取相邻元素的平均,type=2或type=5更符合手动计算习惯

内容的提问来源于stack exchange,提问作者ArTu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:35:29