正泊松回归:对移位与截断模型的影响是什么?

机器算法验证 r 泊松分布 回归系数 负二项分布
2022-03-23 16:30:33

假设您想要模拟某人在通过之前必须参加某项考试的次数(取决于一系列预测因素,例如练习、模拟考试、参加的课程等)。还假设大多数人在第一次尝试后通过,但其他人必须多次参加测试,并且分布看起来像 Poisson-ish。

如果要将因变量建模为所进行的测试次数,则最小计数将为 1。另一方面,如果要将因变量建模为所需的重考次数,则最小计数将为 0。两者在我看来,这些都是合理的做法,而后者只是前者的负1,即被转移。

概念上讲,似乎这种差异(tests~x1+x2+x3... vs. resits~x1+x2+x3... or tests-1~x1+x2+x3...)不应该真正影响你的最终结论:如果练习减少了测试的数量,它也应该减少重考的数量,而且似乎应该以类似的程度这样做。

我的问题是:

  1. 使用(a)移位的因变量(resits)而不是(b)未移位的变量(测试)对模型参数有什么实际影响?例如,如果使用 resits,您通常会期望参数被高估还是被低估?如果有的话,您通常会认为差异会很大还是很小?还是这一切都非常依赖于无法判断的特定数据集?也就是说,测试和重新测试之间的概念相似性是否具有误导性,因为它让我认为我应该为两者获得相似的结果。

  2. 使用以下模型参数对模型参数有什么实际影响:
    (a)零截断模型 - 例如,在 R 中,我会指定:
    vglm(tests~x, data, family=pospoisson())
    (b)左移模型 - 例如在 R 中,glm(resits~x, family=poisson)

此处讨论了移位与截断,但此讨论并未专门解决模型参数和重要性之类的问题。它还侧重于右移而不是左移。

我已经在我的数据上尝试了上述各种选项,结果发现基本 Poisson(y~x, fam=poisson)对预测变量的估计值低于 zero-truncated (y~x, fam=pospoisson),而 zero-truncated 的估计值又低于左移模型(y-1~x, fam=poisson). 不过,自举置信区间表明这些差异并不显着。然而,这样做并没有告诉我我是否可以期望它普遍成立,即测试和重考之间的概念相似性是否通常应该转化为相似的模型。就我而言,左移导致比零截断模型更高的参数,但通常情况是这样吗?在我的情况下,参数并没有显着不同,但一般情况下是这样吗?我意识到有人可能能够从数学上从第一原理中得出所有这些的答案,但我没有这样做的数学背景。

我问这个是另一个问题的前奏,在这里由于我将在那篇文章中解释的原因,我必须左移我的响应变量,我想知道这在原则上是否有问题(在这种情况下,我很幸运,模型参数非常相似)。

*编辑:我的数据不是测试计数与重考计数的形式。我只是将这些用作说明,因为测试和重考之间的概念相似性相当明显。所以我的问题不是关于人们应该对这些变量使用什么回归,而是关于移位与截断对模型参数的影响 - 你会期望一个微不足道的差异,一个显着的差异,或者没有数据就无法判断? 但是,由于人们在下面提出了负二项式,我很高兴接受有关泊松或负二项式模型的这个问题的答案。

2个回答

尽管您正在建模计数,但您的数据不能是泊松。看到这一点的简单方法是因为它不能是,这是泊松分布的一个可能值。但这也不是真正的移位或截断泊松。重测次数也不可能是泊松。您所说的“重试次数”同样可以称为“成功之前的失败次数这就是负二项式的定义。在您的情况下,0rr=1

简而言之,我将使用具有负二项分布的回归模型对“复查次数”进行建模。通常使用回归模型,预测值应该是协变量空间中每个点的预期值。请注意,负二项式的期望值为: 其中是成功的概率。由于,因此预测值是通过测试的几率。通过测试的概率

E[Y]=(1p)rp
pr=11(y^/(1+y^))

不幸的是,它实际上比实际操作要复杂一些。首先,您可能知道,对响应使用非正态分布的模型(例如,负二项式)需要使用链接函数。所以要得到我所说的,你需要对从模型方程计算的值取幂。 y^

接下来,“使用负二项式分布”听起来您需要负二项式回归实际上,这与我们这里的动物略有不同。负二项式回归不仅估计回归系数,而且估计离散参数。我们先验地知道您的案例的适当参数值。你需要的是几何模型

另请注意,有不同的方法可以指定和参数化这些内容,因此您需要非常仔细地阅读文档。我可以使用R. 让我们比较那些没有参加预备班的x = 0人 , 和那些参加的人 , x = 1我们可以想象,那些没有参加预备班的人只有 30% 的机会通过,而那些有 70% 的机会。

library(MASS)   # you need this library for the negative.binomial() function below
set.seed(1082)  # this makes the example exactly reproducible
y = c(rnbinom(1000, size=1, prob=.3),   # number of resits for those who didn't 
      rnbinom(1000, size=1, prob=.7) )  #   or did take prep class
x = rep(c(0,1), each=1000)              # prep class indicator
m = glm(y~x, family=negative.binomial(theta=1))
summary(m)
# Call:
# glm(formula = y ~ x, family = negative.binomial(theta = 1))
# 
# Deviance Residuals: 
#     Min       1Q   Median       3Q      Max  
# -1.5805  -0.8358  -0.6336   0.4447   3.3044  
# 
# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)    
# (Intercept)  0.91108    0.03883   23.46   <2e-16 ***
# x           -1.78335    0.07180  -24.84   <2e-16 ***
# ---
# Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# (Dispersion parameter for Negative Binomial(1) family taken to be 1.075368)
# 
#     Null deviance: 2646  on 1999  degrees of freedom
# Residual deviance: 1913  on 1998  degrees of freedom
# AIC: 5902.8
# 
# Number of Fisher Scoring iterations: 4
cm = c(coef(m)[1], sum(coef(m)) )
1 - ( exp(cm)/(1 + exp(cm)) )  # the model's estimated probabilities of passing the test
# (Intercept)             
#   0.2867795   0.7052186 

您必须使用解释该现象的分布。有时,一个简单的改写可以做到跳出框框思考。例如,不要将问题定义为“通过多少次尝试?” 您将其框定为“重拍多少次?”。

您会看到,在您的情况下,不可能观察到小于 1 的“尝试次数”变量。因此,泊松根本不适合。但是,如果您按照我的方式提出问题,您对“重拍次数”变量的观察结果包括 0,并且泊松可能是需要考虑的合理分布。

您没有截断任何内容或转移,您正在回答关于不同变量的不同问题,即“重拍次数”而不是像原始问题中那样的尝试。