讨论一个问题:

当进行卡方检验,检验组间的差异,若各组样本量相差悬殊,这样情况做卡方检验的意义有多大?

这种情况下若相差一点点,都会得出很大的卡方值。p当然很小。



然而得出的OR值不大。只有1点多一点。



这样的情况应该怎么分析呢??
5 天 后
这样的情况应该怎么处理呢?
17 年 后

万万没想到,17年后,我也遇到了这个问题,请教坛友们,经过17年的发展,统计学在这个问题上有更好的答案了没?

如果另一组真的就只有一点点,那么根据感兴趣的问题,case by case 的分析是不是可以呢?

    Cloud2016

    其实我遇到的问题完整说来是这样的:要建立一个三分类的客户风险等级划分模型,历史的划分结果中,低、中、高客户的数量分别是12080102、1938768、1631,现在要做的步骤是筛选特征,然后我查到了卡方检验,选择这个方法主要是因为卡方检验只需要构建列联表就可以计算(其实也可以把全量数据都导入 Rstudio server 中用一些机器学习的算法对特征重要性排序,不过服务器性能真的不太行,所以先没考虑),具体到计算步骤的时候,有些特征某一类别在高风险客户的计数会是0,再加上如主楼所说量级差异过于悬殊,导致最后算出来各个特征的卡方检验 P 值不是0就是 NaN。

      绕过零概率问题的最简单办法:Laplace 平滑,列联表每个单元格加 1 即可。

      如果只是列联表的某个单元格为0的话一般不会有多大的问题(从计算统计量的角度来说)。如果统计量得到是NaN的话,那么应该是整行/列都是0了,也就是说某一类客户在你检验的特征上完全没数据,或者就是待检验特征的某一个水平下,所有客户都没数据?

      回到一开始的问题,从卡方检验的检验统计量和拒绝规则可以看到:随着样本量增加,最小可检验差异会不断缩小,也就是说统计检验可以检测到越来越小的差异。(当然,这件事情对大部分统计检验都是成立的。)所以,你得到的统计显著的差异,可能并没有多少实际的意义。

      从最小可检验差异的角度来说,可以考虑限制最大样本量,不要把所有的数据都无脑纳入,把达到检验显著的最小可检验差异的值控制到一个有实际意义的值,以此来确定一个最大样本量。

      另外多说一句的话,我感觉这里核心除了各组间数量差异很大以外,其实最小的组的样本量也已经比较大了,这样即使最小的组也能在待检测特征的各类别的分布上提供一个相对准确的分布估计了,所以这个检验才会看起来如此的敏锐。如果双样本检验的时候,最小组的总样本量也很小的话,那即使另一组的样本量非常大,也有可能这个检验并不是如此敏锐的。

      https://www.jstor.org/stable/2683047

      https://www.jstor.org/stable/2283192

      yuanfan 不用检验,直接考虑响应变量是有序的多分类 logit 回归模型,比如调用 mgcv 包来做,具体看帮助文档 mgcv::gam(family = "ocat") ,用模型的办法,那些不太显著的特征,看系数的显著性检验?
      还有这个函数bam() 可以拟合大型数据集,也许可以缓解服务器不给力的问题。

      P.S. 没做过,查了下脑子里东西。

      楼上三位提到的方法,我会都去试一遍。我的理解如下

      1. nao.xiao 提到遇到某个特征某个类别有0的情况,可以考虑全部加1(PS或者合并类别),然后继续用卡方检验。
      2. 风过耳边写的我没大看懂,两篇文章上 scihub 搜了搜,奈何水平有限,总而言之大概就是缩小样本量,不然的话卡方检验的功效其实会是虚假的(ps文章的时间很早,我悄悄怀疑假设检验诞生的时代很多样本数据都是人工记录的,当时的大样本和现在生产环境产生的数据量相比都不算大了,该不会所有的假设检验的方法到了现在的时代都会遇到不适应实际场景的问题吧)。
      3. 湘云提出直接把历史数据丢到有序多分类逻辑回归模型里,用特别的函数拟合,也许可以跑出来数据。

      等过几天我试完了,然后再来汇报一下。