我遇到了一个非常烦人且对我来说难以理解的问题,我希望你们中的一些人能帮助我。我正在尝试估计 4 个组的自回归(变量 X 的先前测量值对 X 的当前测量值的影响),这些组在不同程度上具有正偏态分布。该理论是,更正偏态分布的方差更小,并且由于 2 个变量之间的关系取决于共享方差的数量,因此正态偏态分布的自回归比更正态分布的变量更小。
我使用模拟来研究这一点,并生成如下数据:我模拟具有 tp 个时间点的 n 个人的数据。我使用一个固定的自回归参数 phi(在 0.3 处,所以我们有一个平稳的过程)。为了生成正偏态分布,我使用卡方分布误差。用于 chi2 分布误差的自由度因人而异。换句话说,自由度是一个 2 级变量(并且本身是 chi2(1) 分布的)。具有非常低 df 的个体得到非常偏斜的分布,而具有更高 df 的个体得到更正态分布。
for(i in 1:n) { # Loop over persons.
chi[i, 1] <- rchisq(1, df[i]) # Set initial value.
for(t in 2:(tp + burn)) { # Loop over time points.
chi[i, t] <- phi[i] * chi[i, t - 1] + # Autoregressive effect.
rchisq(1, df[i]) # Chi-square distributed error.
} # End loop over time points.
} # End loop over persons.
现在我已经生成了结果变量,我把它放在长格式中,我创建了一个滞后预测器,我的意思是预测器的中心(或组平均中心,或集群平均中心,都一样)。我称之为滞后和居中的预测器chi.pred
。我根据个人的自由度制作子组。具有最低 df 的 25% 进入子组 1,26% - 50% 进入子组 2,等等。
问题是这样的:使用family = inverse.gaussian和link = 'identity'拟合多级(即混合或随机效应模型)自回归(1)模型,使用glmer()
lme4 包给了我很多警告。例如“退化 Hessian”、“大特征值/比率”、“无法与 max|grad 收敛”等。我只是不明白为什么。
我适合的模型是
# Random intercept, but fixed slope with subgroups as level 2 predictor of slope.
lmer(chi ~ chi.pred + chi.pred:factor(sub.df.noise) + (1|id), data = sim.data, control = lmerControl(optimizer = 'bobyqa'))
# Random intercept and slope.
lmer(chi ~ chi.pred + (1 + chi.pred|id), data = sim.data, control = lmerControl(optimizer = 'bobyqa'))
我使用逆高斯的原因是因为据说它在倾斜数据上效果更好。
有人知道为什么我不能拟合模型吗?我尝试增加样本量和时间点,不同的优化器,我已经双重检查滞后和居中数据是否正确,增加迭代次数,向子组添加一些噪音(因为否则它们是 1 对 1与自由度有关)等。