CDF的置信区间

机器算法验证 t检验 经验累积分布
2022-03-09 17:10:34

我正在尝试确定下图中显示的累积概率密度曲线之间是否存在统计学意义的区别。

累积概率分布

做一个很简单t-测试这些分布的均值。但我也想看看这种处理是否对密度分布的更极端值有影响。例如,如果均值相同但第 85 个百分位数不同,那我会感兴趣。

均值的 95% 置信区间大致为x¯±1.95σx. 但是在 CDF 的每个级别上使用相同的方差感觉并不正确,尤其是当经验分布在很大程度上是非正态的时。

3个回答

假设您的曲线代表从数据中获得的经验 CDF,则测试两个以上组之间差异的常用方法是类似于 Kolmogorov-Smirnov 检验的某种多样本非参数检验,或基于秩的检验ANOVA 检验类似于多样本 Kruskal-Wallis 检验。统计文献中有许多论文着眼于此类多样本非参数检验(参见例如,Kiefer 1959Birnbaum 和 Hall 1960Conover 1965Sen 1973的早期文献)。如果您减少到感兴趣的成对比较,您当然可以使用传统的两样本测试。

有一个R称为ksamples实现多样本 Kruskal-Wallis 检验和其他一些多样本非参数检验的包。我不知道进行多样本 KS 测试的软件包,但其他人可能会向您指出其他资源。

您可以使用与 4 个组相对应的一组假人的同时分位数回归来执行类似的操作。这允许您测试和构建置信区间,比较描述您关心的不同分位数的系数。

这是一个玩具示例,我们不能拒绝在所有 4 个 MPG 组中第 25、第 50 和第 75 个四分位数的汽车价格都相等的联合零值(p 值为 0.374):

. sysuse auto, clear
(1978 Automobile Data)

. xtile mpg_quartile = mpg, nq(4)

. distplot price, over(mpg_quartile) legend(rows(1)) ylab(.25 .5 .75, angle(0) grid) xlab(#10, grid) ///
> plotregion(fcolor(white) lcolor(white)) graphregion(fcolor(white) lcolor(white))

. 
. sqreg price i.mpg_quart, quantile(.25 .5 .75) reps(500)
(fitting base model)

Bootstrap replications (500)
----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 
..................................................    50
..................................................   100
..................................................   150
..................................................   200
..................................................   250
..................................................   300
..................................................   350
..................................................   400
..................................................   450
..................................................   500

Simultaneous quantile regression                    Number of obs =         74
  bootstrap(500) SEs                                .25 Pseudo R2 =     0.0909
                                                    .50 Pseudo R2 =     0.1228
                                                    .75 Pseudo R2 =     0.2639

------------------------------------------------------------------------------
             |              Bootstrap
       price |      Coef.   Std. Err.      t    P>|t|     [95% Conf. Interval]
-------------+----------------------------------------------------------------
q25          |
mpg_quartile |
          2  |      -1297   528.3106    -2.45   0.017    -2350.682   -243.3178
          3  |      -1192   447.9346    -2.66   0.010    -2085.377   -298.6225
          4  |      -1484   458.6527    -3.24   0.002    -2398.754   -569.2459
             |
       _cons |       5379   414.9198    12.96   0.000     4551.468    6206.532
-------------+----------------------------------------------------------------
q50          |
mpg_quartile |
          2  |      -1442   1253.755    -1.15   0.254    -3942.535    1058.535
          3  |      -1086   1414.436    -0.77   0.445    -3907.004    1735.004
          4  |      -1776   1232.862    -1.44   0.154    -4234.867    682.8667
             |
       _cons |       6165   1221.461     5.05   0.000     3728.873    8601.127
-------------+----------------------------------------------------------------
q75          |
mpg_quartile |
          2  |      -6213   1591.987    -3.90   0.000    -9388.118   -3037.882
          3  |      -4535   1847.591    -2.45   0.017    -8219.904   -850.0963
          4  |      -6796   1592.095    -4.27   0.000    -9971.334   -3620.666
             |
       _cons |      11385   1556.486     7.31   0.000     8280.686    14489.31
------------------------------------------------------------------------------

. test ///
> ([q25]2.mpg_quart=[q25]3.mpg_quart=[q25]4.mpg_quart) ///
> ([q50]2.mpg_quart=[q50]3.mpg_quart=[q50]4.mpg_quart) ///
> ([q75]2.mpg_quart=[q75]3.mpg_quart=[q75]4.mpg_quart)

 ( 1)  [q25]2.mpg_quartile - [q25]3.mpg_quartile = 0
 ( 2)  [q25]2.mpg_quartile - [q25]4.mpg_quartile = 0
 ( 3)  [q50]2.mpg_quartile - [q50]3.mpg_quartile = 0
 ( 4)  [q50]2.mpg_quartile - [q50]4.mpg_quartile = 0
 ( 5)  [q75]2.mpg_quartile - [q75]3.mpg_quartile = 0
 ( 6)  [q75]2.mpg_quartile - [q75]4.mpg_quartile = 0

       F(  6,    70) =    1.10
            Prob > F =    0.3740

ECDF 如下所示:

在此处输入图像描述

尽管对于图中的 3 个分位数,第 1 组和第 2-4 组之间似乎存在很大差异。但是,这并不是很多数据,因此由于“微数”,无法通过正式测试拒绝可能并不令人惊讶。

有趣的是,Kruskal-Wallis 检验拒绝了 4 个组来自同一群体的假设:

. kwallis price , by(mpg_quartile)

Kruskal-Wallis equality-of-populations rank test

  +---------------------------+
  | mpg_qu~e | Obs | Rank Sum |
  |----------+-----+----------|
  |        1 |  27 |  1397.00 |
  |        2 |  11 |   286.00 |
  |        3 |  22 |   798.00 |
  |        4 |  14 |   294.00 |
  +---------------------------+

chi-squared =    23.297 with 3 d.f.
probability =     0.0001

chi-squared with ties =    23.297 with 3 d.f.
probability =     0.0001

为了一次比较 2 个分布(“成对”),可以找到 CDF 在统计上显着不同的所有值范围,同时将全族错误率 (FWER) 控制在所需的水平。这种(新)方法在这篇 2018 年计量经济学期刊论文以及这篇 2019 年 Stata 期刊文章中有详细描述。R 和 Stata 代码(以及开放的文章草稿和复制文件)位于https://faculty.missouri.edu/~kaplandm两篇文章都包含带有真实数据的示例。一切都是完全非参数的,即使在小样本中,FWER 的“强控制”也是精确的。