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() 四分位数不适用于权重,我想要一种方法来计算它们并将它们插入到先前的输出中。

4

1 回答 1

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,如果你有一个复杂的抽样设计。

于 2021-08-08T22:27:04.503 回答