Странные различия между базовыми результатами функции R summary() и summarytools descr()

У меня есть вектор числовых данных (пример ниже). Сохраним вектор как x. Когда я запускаю summary(x) и descr(x), где descr() из пакета summarytools, у меня есть согласие по значениям Min, Median, Mean и Max. Однако мои значения 1-го и 3-го квартилей различаются. Я впервые вижу такое несоответствие между результатами двух функций. Есть мысли, почему и как это происходит?

Я начал изучать исходный код 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 С итоговым значением() Q1= 313,6 и Q3= 834,5

Когда я запускаю freq(x) и смотрю на совокупный процент, 298,2 составляет 25,53%, 821,4 — 74,47%, а 847,7 — 76,6%. Таким образом, похоже, что descr() может перечислять значения вектора x, которые ближе всего, но не ниже 1-го и 3-го квартилей.

(821,4+847,7)/2 = 834,5
Это соответствует итоговому 3-му квартилю, который не является векторным значением, но ближе к расчетному совокупному значению 75%. Все еще не уверен, как summary() получает 313,6 для 1-го квартиля.


person Shawn Janzen    schedule 13.06.2019    source источник


Ответы (1)


Посмотрите страницу справки для ?quantile. Существует несколько различных способов расчета квантилей, descr() использует type = 2, а summary использует значение по умолчанию 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  
person Marius    schedule 13.06.2019
comment
Спасибо @Мариус! Кажется, я совсем забыл о разных методах расчета квантилей. Имеет смысл, что summary() использует тип 7, так как он указан как метод по умолчанию. Интересно, что документация указывает на то, что создатели 9 типов предлагают тип 8, и что тип 7 ​​был принят по умолчанию. - person Shawn Janzen; 14.06.2019