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

为何R中qnorm()计算结果与summary()分位数不一致?

为什么qnorm()结果和summary()输出的分位数存在差异?

你用R生成了一组正态分布的随机样本,发现qnorm()计算的分位数和summary()给出的样本分位数不一样,代码和运行结果如下:

set.seed(123)
X<-rnorm(100,10,1)
summary(X)
qnorm(0.5,10,1)
qnorm(0.25,10,1)
qnorm(0.75,10,1)

运行输出:

> summary(X)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  7.691   9.506  10.062  10.090  10.692  12.187 
> qnorm(0.5,10,1)
[1] 10
> qnorm(0.25,10,1)
[1] 9.32551
> qnorm(0.75,10,1)
[1] 10.67449

差异的核心原因有两个:

  • 计算对象完全不同:
    qnorm(p, mean, sd)计算的是理论正态分布的分位数,是基于你指定的均值、标准差的理想正态分布,通过CDF反函数得到的精确理论值,和样本无关。比如qnorm(0.25,10,1)就是均值10、标准差1的正态分布中,有25%的数据小于这个值,这是固定的理论结果。
  • summary()的分位数是样本统计量:
    summary()给出的是你生成的100个随机样本的分位数,它是基于样本数据排序后,用R默认的type=7分位数算法插值得到的。样本本身是随机生成的,哪怕固定了随机种子,这也只是这一组样本的统计结果,必然会和理论值有偏差——毕竟样本只是理论分布的“近似”,不是完美复刻。

另外,样本量也会影响偏差大小:如果把样本量从100改成10000,再运行代码,你会发现summary()的分位数会非常接近qnorm()的结果,样本量越大,样本统计量就越接近理论参数。

内容的提问来源于stack exchange,提问作者Roshan Ahmad Shaheen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:13:11