Взвешенные квартили с descr() из SummaryTools

avatar
esteban
8 августа 2021 в 21:15
70
1
0

Я выполняю базовую описательную статистику фрейма данных обследования домохозяйств. У меня есть столбец, в котором сообщается, сколько раз произошло событие за определенный период времени. Опрос содержит столбец factor, эквивалентный весу наблюдения.

Итак, когда я использую этот код

times_theater<- descr(data17$s08a_02, report.nas = F, stats = "all")
times_theather

Я понял

Descriptive Statistics  
data17$s08a_02  
N: 38201  

                    s08a_02
----------------- ---------
             Mean      2.58
          Std.Dev      2.41
              Min      1.00
               Q1      1.00
           Median      2.00
               Q3      3.00
              Max     40.00
              MAD      1.48
              IQR      2.00
               CV      0.93
         Skewness      5.80
      SE.Skewness      0.08
         Kurtosis     64.28
          N.Valid   1027.00
        Pct.Valid      2.69

Это "грубые" значения, поэтому мне нужно применить веса:

times_theater<- descr(data17$s08a_02, report.nas = F, weights = data17$factor, stats = "all")
times_theather

И вывод такой:

Weighted Descriptive Statistics  
data17$s08a_02  
Weights: factor  
N: 38201  

                    s08a_02
--------------- -----------
           Mean        2.55
        Std.Dev        2.31
            Min        1.00
         Median        2.00
            Max       40.00
        N.Valid   288118.00
      Pct.Valid        2.57

Как видите, я потерял информацию о квартилях (Q1, Q3, IQR), и мне бы очень хотелось, чтобы они отображались в одном и том же выводе.

Есть идеи, как решить эту проблему?

pd: Я знаю, что в этом случае различий почти нет, но есть некоторые переменные расходов и доходов, которые мне действительно понадобятся, чтобы получить квартили позже.

Edit2: я знаю, что в документации говорится, что квартили descr() не будут работать с весами, мне нужен способ их вычисления и вставки в предыдущий вывод.

Источник

Ответы (1)

avatar
Zoltan Fabian
8 августа 2021 в 22:27
0
Пакет

Hmisc содержит набор взвешенных функций, включая wtd.quantile. Рассмотрим следующий фрагмент:

.
set.seed(1)
x <- runif(500)
wts <- sample(1:6, 500, TRUE)
quantile(x)
Hmisc::wtd.quantile(x, wts)

В результате получится:

> wtd.quantile(x, wts)
         0%         25%         50%         75%        100% 
0.001836858 0.260238785 0.461551841 0.739641746 0.996077372 
> quantile(x)
         0%         25%         50%         75%        100% 
0.001836858 0.258128640 0.476269632 0.734145740 0.996077372

По умолчанию используются значения квартилей. Конечно, можно указать любые значения квантилей. См. ?wtd.quantile, а также survey::svyquantile, если у вас сложная схема выборки.