人口稳定指数背后的直觉是什么?

机器算法验证 分布 直觉 kullback-leibler 可能性
2022-03-24 07:00:28

的“人口稳定性指数”定义为 对称 Kullback-Leibler 散度PQ

PSI(P,Q)=DKL(P||Q)+DKL(Q||P)=i(PiQi)logPiQi

这个数字背后直觉是什么?

人们总是可以使用的直觉并说 PSI 是DKL

使用针对优化的代码而不是针对的样本进行编码所需的预期额外比特数PQP

加上 使用针对优化的代码而不是针对的样本进行编码所需的额外比特数QPQ

但这很拗口。

QuoraUCAnalytics提供了这种“解释”:

  • PSI < 0.1:变化不大(无需采取行动
  • 0.1 < PSI < 0.25:一些小的变化(开始担心
  • 0.25 < PSI:人口的重大转变(需要深入研究

这样做的依据是什么?

1个回答

直觉

Kullback-Leibler Divergence可以解释为

我们期望丢失多少位信息是我们使用而不是QP

因此,人口稳定指数是“往返损失”:

我们预计会丢失多少信息?Q代替P然后再次使用它返回Q.

价值观

看来人口稳定指数与G 检验密切相关:

PSI(P,Q)=G(P,Q)+G(Q,P)2N

(因此可以使用scipy.stats.power_divergence, 以及直接计算)。

因此,对应于 PSI 的 p 值可以使用χ2分配:

import scipy.stats as st
print("            ","     ".join("DF=%d" % (df) for df in [1,2,3]))
for psi in [0.1, 0.25]:
    print "PSI=%.2f  %s" % (psi, "".join(
        " %5f" % (st.distributions.chi2.sf(psi,df)) for df in [1,2,3]))

               DF=1       DF=2       DF=3
PSI=0.10     0.751830   0.951229   0.991837
PSI=0.25     0.617075   0.882497   0.969140

这里PSI是人口稳定指数,DF是自由度数 (DF=n1在哪里n是变量采用的不同值的数量)。

有趣的是,官方对PSIvalue 的“解释”完全忽略了DF.