二项式 GLM 和不同的样本量

机器算法验证 r 回归 物流 二项分布 过度分散
2022-03-12 14:40:57

我有一个由二项式比例组成的数据集,假设转换客户的成功率取决于广告、客户年龄和各种其他因素。

对于一些常见的协变量组合,我有很多数据,因此成功的二项式比例具有较低的方差。然而,对于罕见的协变量组合,我的数据很少,因此比例的方差很高。

差异的幅度非常大,例如,对于某些协变量组合,我可能有 100 万次试验,而其他协变量组合只有 50 次。但是,我想在我的模型中包含所有数据并对其进行适当加权以获得最佳模型拟合。

我尝试使用 R 使用广义线性模型进行二项式(逻辑)回归:

lrfit <- glm ( cbind(converted,not_converted) ~ advertisement + age, family = binomial)

这是一个好的开始,因为它会自动根据试验次数对观察结果进行加权。

但是,这还不够好。原因如下:假设您有 100,000 次试验的一些观察结果和 1,000,000 次试验的其他观察结果。如果您按试验次数加权,后一组将获得 10 倍的重量。然而,这似乎是荒谬的,因为这两个观察结果都很容易精确到足以在模型中得到同等对待。显然你想惩罚只有 10 或 100 次试验的组,但随着试验次数的增加,权重应该停止增加。

由于在加权最小二乘法中,误差方差的倒数被用作权重,我的想法是使用计算比例的后验方差(使用杰弗里的先验),然后添加一些常数项(这将确保方差在一定次数的试验中停止增加),然后使用总和的倒数作为权重。

这种方法合理吗?我错过了什么吗?有人可以给我有关此方法的更多信息吗?

3个回答

你能从广义线性混合模型中得到正确的推理水平吗?将广告视为实际的随机效应应该仅在较小的采样级别上引入正确的惩罚级别。具有任何合理幅度的那些水平将获得适当的固定效应估计。

假设lme4在 R 中使用,我不确定您是否需要复制行。(我倾向于是的)。然后你会有类似的东西:

glmm.fit <- glmer(success~ns(age,df=6)+(1|advertisement),family=binomial(),data=rep.df)

ns()(请注意,我使用from package对年龄进行了样条,splines因为我无法想象它实际上是线性的。)

有了这么多的观察,我会担心额外的二项式方差,即过度分散。你试过一个准二项式家庭吗?

也就是说,将您的 R 代码更改为

lrfit.quasi <- glm ( cbind(converted,not_converted) ~ advertisement + age, family = quasibinomial)

你能告诉我们当你这样做时会发生什么吗?估计的过度分散因子是多少?我猜它可能比二项式情况大得多。此外,对于 100 万次观察,我想采样可能会有一些额外的结构,比如不同的采样点、子组、随时间变化的不同结构、自相关......这将引入必须建模的依赖关系。您需要告诉我们更多关于您如何获得这些数据的信息。

二项式模型还假设计数是准确的,有 100 万个计数很可能是错误的……这是二项式外方差的另一个来源!使用准二项式模型的替代方法是使用一些混合模型(或负二项式模型)。

假设且二项式约为 0.5,则的(二项式)标准误差约为的计数误差会以大约相同的数量(一个标准误差)改变估计的这是大约的计数错误,千分之一。即使是非常准确的计数也会产生如此大的错误!你真的确定你的计数没有错误吗?n=1000000pp^0.0005500p10/00

如果您想研究如果您尝试对计数中的错误进行建模,拟合会发生什么,Venables & Ripley MASS(第四版)中的最后一章(关于优化)为这种情况提供了一些理论和方法。

您可能需要考虑arcsine转换您的响应。

如果

X Bin( )n,p

然后

E(sin1(X+cn+2c))=sin1p+p1/2O(c1/2)+O(p3/2)

nVar(sin1(X+cn+2c)=1/4+p1O(c3/8)+O(p2)

设置,你就有了方差稳定变换。然后,您可以使用加权最小二乘模型,其中是您的权重,假设您的方差协方差矩阵是异方差的,但对角线。c=3/8n