glmnet 如何处理过度分散?

机器算法验证 泊松分布 套索 网络 过度分散 正则化
2022-03-12 01:58:59

我有一个关于如何对计数数据建模文本的问题,特别是我如何使用该lasso技术来减少特征。

假设我有 N 篇在线文章和每篇文章的浏览量。我为每篇文章提取了 1-gram 和 2-gram,我想对 1,2-gram 进行回归。由于特征(1,2-grams)远远超过观察的数量,套索将是减少特征数量的好方法。此外,我发现glmnet运行套索分析非常方便。

但是,综合浏览量的计数过于分散(方差 > 均值),但glmnet不提供quasipoisson(明确地)或negative binomialpoisson提供计数数据。我想到的解决方案是log transform统计数据(社会科学家常用的方法),并使响应变量大致服从正态分布。因此,我可以使用高斯族对数据进行建模glmnet

所以我的问题是:这样做合适吗?或者,我应该只使用泊松glmnet以防万一glmnetquasipoisson或者,是否有其他 R 包处理这种情况?

非常感谢你!

1个回答

简短的回答

在估计准/泊松模型中条件均值的回归系数向量时,过度离散并不重要!如果你忘记了这里的过度离散,你会没事的,将 glmnet 与泊松族一起使用,只关注你的交叉验证预测误差是否低。

资格如下。


Poisson、Quasi-Poisson 和估计函数:

我之所以这么说是因为泊松或准泊松模型中的过度分散 (OD) 会影响与分散有关的任何事情(或方差或尺度或异质性或扩散或任何你想称之为的),因此会对标准产生影响误差和置信区间,但保留条件均值的估计值y(称为μ) 原封不动。这尤其适用于均值的线性分解,例如xβ.

这是因为条件均值系数的估计方程对于泊松和准泊松模型实际上是相同的。准泊松根据均值和附加参数(例如θ) 作为Var(y)=θμ(与泊松θ=1),但θ在优化估计方程时并不相关。就这样θ在估计中没有任何作用β当条件均值和方差成比例时。因此点估计β^准和泊松模型是相同的!

让我用一个例子来说明(注意需要滚动才能看到整个代码和输出):

> library(MASS)
> data(quine) 
> modp <- glm(Days~Age+Sex+Eth+Lrn, data=quine, family="poisson")
> modqp <- glm(Days~Age+Sex+Eth+Lrn, data=quine, family="quasipoisson")
> summary(modp)

Call:
glm(formula = Days ~ Age + Sex + Eth + Lrn, family = "poisson", 
    data = quine)

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-6.808  -3.065  -1.119   1.819   9.909  

Coefficients:
            Estimate Std. Error z value Pr(>|z|)    
(Intercept)  2.71538    0.06468  41.980  < 2e-16 ***
AgeF1       -0.33390    0.07009  -4.764 1.90e-06 ***
AgeF2        0.25783    0.06242   4.131 3.62e-05 ***
AgeF3        0.42769    0.06769   6.319 2.64e-10 ***
SexM         0.16160    0.04253   3.799 0.000145 ***
EthN        -0.53360    0.04188 -12.740  < 2e-16 ***
LrnSL        0.34894    0.05204   6.705 2.02e-11 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for poisson family taken to be 1)

    Null deviance: 2073.5  on 145  degrees of freedom
Residual deviance: 1696.7  on 139  degrees of freedom
AIC: 2299.2

Number of Fisher Scoring iterations: 5

> summary(modqp)

Call:
glm(formula = Days ~ Age + Sex + Eth + Lrn, family = "quasipoisson", 
    data = quine)

Deviance Residuals: 
   Min      1Q  Median      3Q     Max  
-6.808  -3.065  -1.119   1.819   9.909  

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)   2.7154     0.2347  11.569  < 2e-16 ***
AgeF1        -0.3339     0.2543  -1.313 0.191413    
AgeF2         0.2578     0.2265   1.138 0.256938    
AgeF3         0.4277     0.2456   1.741 0.083831 .  
SexM          0.1616     0.1543   1.047 0.296914    
EthN         -0.5336     0.1520  -3.511 0.000602 ***
LrnSL         0.3489     0.1888   1.848 0.066760 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for quasipoisson family taken to be 13.16691)

    Null deviance: 2073.5  on 145  degrees of freedom
Residual deviance: 1696.7  on 139  degrees of freedom
AIC: NA

Number of Fisher Scoring iterations: 5

正如你所看到的,即使我们在这个数据集中有 12.21 的强烈过度离散(由deviance(modp)/modp$df.residual),回归系数(点估计)根本没有变化。但请注意标准错误是如何变化的。

惩罚泊松模型中过度离散的影响问题

惩罚模型主要用于预测和变量选择,而不是(还)用于推理。所以使用这些模型的人对条件均值的回归参数感兴趣,只是缩小到零。如果惩罚相同,则从惩罚(准)可能性导出的条件均值的估计方程也不取决于θ因此过度分散对于β在以下类型的模型中:

g(μ)=xβ+f(β)

作为β对于形式的任何方差函数,以相同的方式估计θμ,对于条件均值和方差成比例的所有模型也是如此。这就像在不受惩罚的泊松/准泊松模型中一样。

如果您不想从表面上看这个并避免数学,您可以在以下事实中找到经验支持glmnet,如果您将正则化参数设置为 0(因此f(β)=0)你最终会在泊松和准泊松模型的位置(请参阅下面的最后一列,其中 lambda 为 0.005)。

> library(glmnet)
> y <- quine[,5]
> x <- model.matrix(~Age+Sex+Eth+Lrn,quine)
> modl <- glmnet(y=y,x=x, lambda=c(0.05,0.02,0.01,0.005), family="poisson")
> coefficients(modl)
8 x 4 sparse Matrix of class "dgCMatrix"
                    s0         s1         s2         s3
(Intercept)  2.7320435  2.7221245  2.7188884  2.7172098
(Intercept)  .          .          .          .        
AgeF1       -0.3325689 -0.3335226 -0.3339580 -0.3340520
AgeF2        0.2496120  0.2544253  0.2559408  0.2567880
AgeF3        0.4079635  0.4197509  0.4236024  0.4255759
SexM         0.1530040  0.1581563  0.1598595  0.1607162
EthN        -0.5275619 -0.5311830 -0.5323936 -0.5329969
LrnSL        0.3336885  0.3428815  0.3459650  0.3474745

那么 OD 对惩罚回归模型有什么作用呢?正如您可能知道的那样,关于计算惩罚模型的标准误差的正确方法仍然存在一些争论(参见例如,此处)并且glmnet无论如何都不会输出任何内容,可能是因为这个原因。OD 很可能会影响模型的推理部分,就像它在非惩罚案例中所做的那样,但除非在这种情况下就推理达成一些共识,否则我们不会知道。

顺便说一句,如果一个人愿意采用贝叶斯观点,其中惩罚模型只是具有特定先验的标准模型,那么人们可以将所有这些混乱抛在脑后。