我正在尝试为具有因变量(Y)的数据集构建预测模型,该因变量由非负整数值组成,最大值为100.下面是Y的直方图,显示其非常偏向于对。此外,我有大约100个可能的解释变量(X)和每个个体的不同数量的观察值,更好地说是一个不平衡的面板数据集,总共有大约N = 50.000个观测值。此外,对于某些人来说,可能只存在一次观察。不幸的是,我无法分享原始数据,但我已尽可能包含情节。
我希望得到一些关于我已经采取的步骤的反馈。
我检查了因变量的对数变换是否在某种程度上是正态分布的,但事实证明并非如下所示的对数变换直方图所示。
由于我的数据中有大量的零以及我的因变量是非负和整数的事实,我想到首先构建零膨胀泊松模型和汇集泊松模型(使用pglm R-包)。由于泊松模型假设因变量的方差等于均值,我通过简单计算样本均值和样本方差来检查这个假设,结果方差分别为14和349左右,在我看来它们相距足够远我可以得出结论,这些并不相同。另外,我读了here我可以使用F测试来测试它。从这里开始,我考虑使用负二项分布来构造零膨胀和汇集模型,因为它可以处理过度离散。
然后我检查了我的数据在多大程度上适合使用QQ图的负二项分布。使用以下代码
fit_distr_nb <- fitdistr(x = Y, densfun = 'Negative Binomial')
plot(qnbinom(ppoints(Y), size=0.767006784, mu=14.289099815),
sort(Y),
xlab = 'Theoretical Values',
ylab = 'Sample values') +
abline(0,1)
导致以下情节
除了我猜的情节的右上角部分外,这看起来并不太糟糕。
在此之后,我想使用以下包lme4和glmmADMB测试随机效果,其中第二个包可用于具有随机和固定效果的零膨胀模型。从this post我读到可以通过运行lme4包的以下代码来检查它,其中我使用了size参数,通过将负二项分布拟合到数据中找到,作为我的θ。
theta <- 0.767
pool.test <- glm(Y ~ X, data = dataset, family = 'negbin'(theta))
re.test <- glmer(Y ~ X + (1|ID), data = dataset, family = 'negbin'(theta), REML = F)
检查包括随机效应在内的模型(如AIC)是否较低。这是一种正确的方法吗?
此外,我可以将此结果扩展到零膨胀模型吗?
此外,我想知道在不平衡面板数据集中每个人的观察数量分布是否存在任何问题。从下面的直方图可以看出,我有很多人只有一两个观察结果。