17. 过度分散

泊松回归模型是处理计数数据最基本的模型,应用最为广泛。 然而泊松模型也不是万能的,它有一个局限性。 泊松模型没有分散参数,并且它的方差和期望相同, 这导致泊松模型无法处理方差和期望不相同的数据。 本章我们讨论离散数据中一个常见的问题, 即离散数据的方差大于它的期望, 此时泊松模型无法很好的处理, 需要借助其他的手段或者模型才行。

在GLM中,响应变量 \(Y\) 的方差 \(V(Y)\) 等于分散函数 \(a(\phi)\) 和方差函数 \(\nu(\mu)\) 的乘积。

(17.1)\[V(Y) = a(\phi)\nu(\mu)\]

其中方差函数 \(\nu(\mu)\) 是一个关于期望 \(\mu\) 的函数,其代表着方差 \(V(Y)\) 和期望 \(\mu\) 的关系。 比如高斯模型,其方差函数为常量 \(\nu(\mu)=1\) , 说明高斯变量的方差与其期望是独立不相关的。 反之,对于泊松模型,其方差函数为 \(\nu(\mu)=\mu\) ,这意味着泊松模型的方差和期望存在关系。

分散函数(参数) \(a(\phi)\) 相当于一个缩放(scale)因子, 对 \(\nu(\mu)\) 起到一个缩放的作用, 通过这个缩放因子使得分布可以灵活适应(拟合)任何方差的数据。 下表给出了 GLM 中常见分布的方差函数和分散函数, 从中可以发现一些特点。

表 17.1 GLM中的方差

分布

类型

分散函数 \(a(\phi)\)

方差函数 \(\nu(\mu)\)

Normal(Gaussian) \(N(\mu,\sigma^2)\)

连续分布

\(\sigma^2\)

1

Inverse Gaussian

连续分布

\(-\sigma^2\)

\(-\mu^3\)

Gamma

连续分布

\(-\phi\)

\(\mu^2\)

Power

连续分布

xxx

\(\mu^k\)

Bernoulli \(B(\mu)\)

离散分布

1

\(\mu(1-\mu)\)

Binomial \(B(n,\mu)\)

离散分布

1

\(\mu(1-\mu/n)\)

Poisson \(Poisson(\mu)\)

离散分布

1

\(\mu\)

Categorical \(Cat(K,\mu)\)

离散分布

1

\(\mu_k(1-\mu_k)\)

Negative binomial \(\mathop{NB}(\mu,\alpha)\)

离散分布

1

\(\mu+\alpha\mu^2\)

从上表中可以发现离散分布的分散函数都是常数,而其方差函数都是期望的函数, 这表明离散分布的方差都是由它的期望决定的。由于没有分散参数, 这就使得离散分布存在一个特有的现象,过度分散(overdispersion)。

17.1. 什么是过度分散

当训练好一个模型后,利用模型的预测值 \(\hat{\mu}\) 和分散参数 \(\phi\) 就能计算出模型预测值的方差

(17.1.1)\[V_e = a(\phi)\nu(\hat{\mu}_i)\]

模型预测值的方差称之为名义方差(nominal variance),用符号 \(V_{e}\) 表示。 名义方差 \(V_e\) 就是模型(概率分布)的理论方差,由方差函数计算得到的。 与之相对应的,是观测数据的真实方差, 用符号 \(V_{o}\) 表示,代表观测(observed)方差。

(17.1.2)\[V_{o} = V(Y_i)\]

名义方差 \(V_e\) 和观测方差 \(V_{o}\) 通常并不相同, 这和模型对数据的拟合程度相关,模型对数据拟合的越好,名义方差 \(V_e\) 和观测方差 \(V_{o}\) 就越接近。

模型的预测值是模型的期望值, \(\hat{y}_i=\hat{\mu}_i\) , 方差函数 \(\nu(\hat{\mu}_i)\) 是期望值 \(\hat{\mu}_i\) 的函数,反映的是期望值, 分散函数 \(a(\phi)\) 起到缩放和调节的作用, 显然,对于名义方差 \(V_e\) 来说,分散函数 \(a(\phi)\) 的作用至关重要, 分散函数 \(a(\phi)\) 使得名义方差 \(V_e\) 尽量接近和观测方差 \(V_{o}\) ,分散参数是用来控制模型方差的。 然而,对于离散模型,没有分散参数 \(\phi\) ,这就是使得名义方差 \(V_e\) 不能自由的适配任何数据的观测方差 \(V_{o}\)

当模型不存在分散参数时,就无法拟合数据的真实方差,就会发生 \(V_e\)\(V_o\) 相差较大的现象。 根据两者的关系,有两种异常情况。

过度分散(overdispersion):

\(V_{o}\) 大于 \(V_e\) 时,称之为过度分散,这种情况在离散数据中经常发生。

分散不足(underdispersion):

\(V_{o}\) 小于 \(V_e\) 时,称之为分散不足,这种情况虽然理论上存在,但实际中并不常见。 因此本书我们重点讨论过度分散的问题,分散不足的问题暂不讨论。

在实际应用中,分散不足的情况很少见,过度分散却是非常常见的,尤其是对于计数数据。 计数数据最基础的模型就是泊松模型,而泊松模型的方差等于期望,实际应用很少有数据满足这个假设。 在实际的计数数据中通常都是方差大于期望的,因此用传统的泊松模型处理计数数据必然会面临过度分散的问题, 而一旦发生过度分散,就意味着模型无法拟合数据的实际方差。

通常在实际应用中遇到的真实数据,并不是某个单一的、标准的概率分布产生的,生成数据的真实分布是无从得知的。 我们做的工作就是寻找一个尽可能接近数据真实分布的模型(分布)去拟合数据, 比如,遇到连续值数据就用高斯分布;遇到二值离散数据就用二项分布; 遇到计数数据就用泊松分布。 过度分散(overdispersion)或者分散不足(underdispersion)现象的本质就是: 我们选取的模型的理论方差和数据的真实方差是不相符的,并且相差比较大。

提示

为什么只有离散数据会有过度分散的问题,而连续值分布就没有呢?

这是因为连续值分布通常都有一个额外的分散参数 \(\phi\) ,这个参数的作用就是缩放(scale)方差函数 \(\nu(\mu)\) , 使得模型的名义方差 \(V_e\) 可以更好的拟合观测样本的方差 \(V_{o}\) , 模型的分散参数 \(\phi\) 就是专门用来拟合数据方差的参数,然而离散分布模型缺少这样一个参数, 导致模型不能拟合数据的实际方差。

然而,虽然连续值分布有分散参数 \(\phi\) ,但这并不意味着连续值模型就不会发生过度分散现象, 如果使用不当,同样也会导致过度分散。比如,在应用传统的高斯模型(线性回归)时, 通常都是假设分散参数 \(\phi\) 是常数 \(1\),这就相当于分散参数 \(\phi\) 失去了作用, 如果响应数据的方差和这个假设并不相符,同样会导致过度分散现象。

此外,前面章节中我们介绍过,可以通过皮尔逊卡方统计量 \(\chi^2\) 除以其自由度的方式估计出分散参数 \(\phi\)。 这种方式建立在分散参数与样本无关的假设之上, 即假设所有样本拥有相同的 \(\phi\) 。 如果样本方差和这个假设严重不符,同样也会存在过度分散的可能, 只是这种严重不相符的情况很少见,多数情况下,这个方式足够用了。

17.2. 过度分散的检测

离散分布之所以存在过度分散问题,是因为离散分布的模型缺少一个分散参数 \(\phi\) 去拟合数据的方差。 那么我们可以先假设模型存在分散参数 \(\phi\) , 此时观测方差 \(V_o\) 就等于 \(\phi\) 乘上名义方差 \(V_e\)

(17.2.1)\[V_o = \phi V_e\]

然后估计出 \(\phi\) 的值, 如果 \(\phi \approx 1\) ,意味着名义方差 \(V_e\) 和观测方差 \(V_o\) 是近似相等的,不存在过度分散,或者说问题不严重;反之, 如果 \(\phi \gg 1\) , 则意味着存在过度分散现象。 在 节 8.7节 9.1.5 讨论过, 可以通过皮尔逊卡方统计量估计分散参数 \(\phi\)

(17.2.2)\[\hat{\phi}=\frac{\chi^2}{N-p}\]

皮尔逊卡方统计量 \(\chi^2\) 与其自由度(\(N-p\)) 的商称为皮尔逊分散统计量。 皮尔逊分散统计量也是一个估计量,并不是十分准确的, 因此一般情况下,当皮尔逊分散统计量的值大于 \(2\) 时才认为发生了明显的过度分散。 在早期的一些资料中,检测过度分散也可以用偏差统计量, 然而后续的一些研究中发现,皮尔逊卡方统计量更准确一些。

皮尔逊卡方统计量 \(\chi^2\) 是模型拟合优度统计量, 本身可以用来评估模型拟合程度的。 理论上模型对数据拟合的足够好时, \(\chi^2\) 渐近服从自由度为 \(N-p\) 的卡方分布,它的期望值是 \(N-p\) 。 分散统计量的估计是建立在 \(\chi^2\) 服从卡方分布并且期望为 \(N-p\) 的假设基础上。 如果模型对数据拟合的不够好,那么计算出的 \(\hat{\phi}\) 的也会远大于 \(1\) ,因此利用分散统计量判断是否存在过度分散并不是十分可靠的。 通常我们把由于模型欠拟合导致的过度分散称为表象过度分散(apparent overdispersion), 真正的数据过度分散称为真实过度分散(real overdispersion)。

导致表象过度分散的直接原因是模型对数据拟合的不好,而导致模型拟合不好的原因常见的有如下几种情况:

  • 数据包含异常点。

  • 缺少有效的特征。

  • 缺少高阶的组合特征。

  • 特征数据没有进行归一化处理。

  • 连接函数不正确。

表象过度分散不同于真实过度分散,表象过度分散仅仅是由于模型对数据拟合的不好导致, 只要针对性的解决上述问题,并提高模型的拟合程度后就会消除过度分散现象。 而真实过度分散是无法通过提高模型拟合程度解决的, 真实过度分散是数据的真实方差和模型的方差假设相违背, 显然要想解决真实过度分散就要改变模型的方差假设, 也就是要更换另一种新的分布模型才行。 下一章要讨论的负二项式模型就是一种全新的计数数据分布模型 ,其方差函数是 \(\mu+\alpha \mu^2\) , 不再像泊松分布一样限定方差和期望相等,而是多了一个辅助参数 \(\alpha\) 来适配数据的方差变化。

17.3. 过度分散的影响

在讲 GLM 的最大似然估计时提到过,分散参数 \(\phi\) 并不影响协变量参数 \(\beta\) 的迭代, 这里从 IRLS 算法的过程再验证一下。 IRLS 算法参数的迭代公式为

(17.3.1)\[ \begin{align}\begin{aligned}\beta &= (X^T W X)^{-1} X^T W Z\\&= \frac{X^T W Z}{X^T W X}\end{aligned}\end{align} \]

其中权重矩阵 \(W\) 是一个对角矩阵,其值为

(17.3.2)\[W = [a(\phi)\nu(\mu) g'^2]^{-1} = [V_e(\mu) g'^2]^{-1}\]

其中 \(a(\phi)=\phi\) 是与样本无关的,因此可以单独提取出来,则有

(17.3.3)\[W = [a(\phi)\nu(\mu) g'^2]^{-1} = \phi^{-1} W_o\]

备注

\(a(\phi)=\phi/w_i\) 的情形下,同样可以单独提出分散参数 \(\phi\) , 而把样本权重 \(w_i\) 留在 \(W_o\) 中,结论是一样的。

代入到 公式(17.3.1) 可得

(17.3.4)\[ \begin{align}\begin{aligned}\beta &= \frac{X^T W Z}{X^T W X}\\ &= \frac{\phi^{-1} X^T W_o Z}{\phi^{-1} X^T W_o X}\\ &= \frac{X^T W_o Z}{X^T W_o X}\end{aligned}\end{align} \]

可以看到在 \(\beta\) 的迭代过程中,分散参数 \(\phi\) 并没有起到作用, 有没有分散参数 \(\phi\) 不影响参数 \(\beta\) 的更新。 因此过度分散问题并不影响协变量参数 \(\beta\) 的估计。

虽然过度分散不影响 \(\beta\) 的迭代,但是会影响它的标准误。 参数估计量 \(\beta\) 的标准误的计算

(17.3.5)\[ \begin{align}\begin{aligned}SE(\hat{\beta}) &= \sqrt{\mathcal{J}^{-1}}\\&= \sqrt{ {(X^T W X)}^{-1} }\\&= \sqrt{ {(X^T [a(\phi)\nu(\hat{\mu}) g'^2]^{-1} X)}^{-1} }\\&= \sqrt{ {(X^T [V_e(\hat{\mu}) g'^2]^{-1} X)}^{-1} }\end{aligned}\end{align} \]

可以看出协变量参数估计量 \(\hat{\beta}\) 的标准误差的计算是依赖模型方差的,如果模型的名义方差比观测方差小, 就会导致计算出的标准误 \(SE(\hat{\beta})\) 比真实值偏小, 这会使得模型的假设检验失效。

17.4. 标准误差的修正

既然清楚了过度分散的影响,就可以针对性的去解决它, 显然最直接到的方法就是人为给模型添加一个分散参数 \(\phi\) 。因为分散参数不影响 IRLS 算法的迭代结果, 所以可以不用修改 IRLS 算法过程, 只需要在 IRLS 算法结束后修正一下估计量的标准误差。 分散参数 \(\phi\) 的值就用皮尔逊卡分散统计量来表示, 修正后的标准误差为

(17.4.1)\[SE(\hat{\beta}) = \sqrt{ \hat{\phi}_{\chi^2} {(X^T W X)}^{-1} }\]

在对标准误差进行缩放后,该模型不再是似然模型, 因为标准误差既不是基于预期的信息矩阵,也不是基于观测的信息矩阵。 修正标准误差的方法还有另外几种的方法,比如,William 过程、稳健方差估计等, 这里不在详细介绍,有兴趣的读者可以参考其它资料。

事实上,仅仅修正标准误并没有从本质上解决过度分散问题,过度分散的本质原因是模型假设和观测数据不匹配, 因此最根本的解决方法是更换更适合数据的模型, 下两章介绍的负二项式模型、零截断模型、零膨胀模型就是从模型根本上解决过度分散的问题。