可视化混合模型结果

机器算法验证 r 数据可视化 混合模式
2022-02-16 06:11:02

我在使用混合模型时一直遇到的问题之一是弄清楚数据可视化——可能最终出现在论文或海报上的那种——一旦得到结果。

现在,我正在研究一个泊松混合效应模型,其公式如下所示:

a <- glmer(counts ~ X + Y + Time + (Y + Time | Site) + offset(log(people))

有了 glm() 中的一些东西,人们可以很容易地使用 predict() 来获得对新数据集的预测,并以此为基础构建一些东西。但是有了这样的输出——你将如何构建像随着时间的推移随着从 X 的变化(并且可能具有设定的 Y 值)的速率图之类的东西?我认为仅通过固定效应估计就可以很好地预测拟合,但是 95% CI 呢?

还有什么其他人可以想到的可以帮助可视化结果吗?模型结果如下:

Random effects:
 Groups     Name        Variance   Std.Dev.  Corr          
 Site       (Intercept) 5.3678e-01 0.7326513               
            time        2.4173e-05 0.0049167  0.250        
            Y           4.9378e-05 0.0070270 -0.911  0.172 

Fixed effects:
              Estimate Std. Error z value Pr(>|z|)    
(Intercept) -8.1679391  0.1479849  -55.19  < 2e-16
X            0.4130639  0.1013899    4.07 4.62e-05
time         0.0009053  0.0012980    0.70    0.486    
Y            0.0187977  0.0023531    7.99 1.37e-15

Correlation of Fixed Effects:
         (Intr) Y    time
X      -0.178              
time    0.387 -0.305       
Y      -0.589  0.009  0.085
1个回答

使用模型的固定效应部分进行预测counts意味着您将随机效应设置为零(即它们的平均值)。这意味着您可以“忘记”它们并使用标准机器来计算预测和预测的标准误差(您可以使用它们计算置信区间)。

这是一个使用 Stata 的示例,但我想它可以很容易地“翻译”成 R 语言:

webuse epilepsy, clear
xtmepoisson seizures treat visit || subject: visit
predict log_seiz, xb
gen pred_seiz = exp(log_seiz)
predict std_log_seiz, stdp
gen ub = exp(log_seiz+invnorm(.975)*std_log_seiz)
gen lb = exp(log_seiz-invnorm(.975)*std_log_seiz)

tw (line pred_seiz ub lb visit if treat == 0, sort lc(black black black) ///
 lp(l - -)), scheme(s1mono) legend(off) ytitle("Predicted Seizures") ///
 xtitle("Visit")

该图是指treat == 0并且它旨在作为一个示例(visit不是一个真正的连续变量,但它只是为了理解这个想法)。虚线是 95% 的置信区间。

在此处输入图像描述