基本 R summary() 和 summarytools descr() 函数结果之间的奇怪差异

Odd differences between the base R summary() and summarytools descr() function results

我有一个数字数据向量(下面的示例)。让我们将向量存储为 x。当我 运行 summary(x) 和 descr(x) 时,其中 descr() 来自 summarytools 包,我对最小值、中值、平均值和最大值达成一致。但是,我的第一个和第三个四分位数值不同。这是我第一次看到两个函数结果之间存在这种差异。关于为什么会发生这种情况以及如何发生的任何想法?

我开始探索 descr() 源代码,但还没有深入,也无法访问 summary() 源代码以查看其中是否存在差异。但是,在查看某些累积百分比时,我认为它们的分位数计算方式可能有所不同。

x = c(1132.1, 731.1, 851.2, 704.0, 226.3, 1703.6, 853.6, 821.4, 1192.9, 814.2, 880.2, 1270.8, 784.2, 606.5, 702.8, 863.6, 419.2, 1486.9, 1325.8, 493.2, 847.7, 552.5, 709.3, 508.3, 400.0, 711.4, 1161.5, 778.4, 626.2, 365.0, 329.1, 457.7, 446.2, 564.1, 376.9, 463.3, 239.7, 250.9, 266.5, 298.2, 186.2, 79.0, 149.9, 178.7, 79.4, 91.8, 12.6)
install.packages("")
library(summarytools)
descr(x)
summary(x)

使用 descr() Q1= 298.20 和 Q3= 847.70 使用 summary() Q1= 313.6 和 Q3= 834.5

当我运行 freq(x) 并查看累积百分比时,298.2 为 25.53%,821.4 为 74.47%,847.7 为 76.6%。所以看起来 descr() 可能列出了最接近但不低于第一和第三四分位数的 x 向量值。

(821.4+847.7)/2 = 834.5
这与不是矢量值但更接近估计累积 75% 的汇总第三四分位数相匹配。仍然不确定 summary() 如何获得第一个四分位数的 313.6。

查看 ?quantile 的帮助页面。有多种计算分位数的方法,descr() 使用 type = 2summary 使用默认值 type = 7:

> quantile(x, type = 2)
    0%    25%    50%    75%   100% 
  12.6  298.2  564.1  847.7 1703.6 
> quantile(x, type = 7)
     0%     25%     50%     75%    100% 
  12.60  313.65  564.10  834.55 1703.60