如何从混合模型计算估计比例及其置信区间?

机器算法验证 混合模式 标准错误 lme4-nlme 部分 咕噜咕噜
2022-03-30 05:15:47

我有两个治疗的实验。这是一个裂区实验,结构为 Block/Treatment1/Treatment2。每个处理有2个级别。因变量是功能种类组的存在/不存在数据。我正在通过 lme4 和 afex 使用混合模型分析数据。

模型结构如下:

m <- lmer (DV ~ Treatment 1 * Treatment 2 + (1|Block/Treatment1),
           family = binomial) 

但是,出于图形目的,我想绘制 4 种治疗组合(治疗 1 A 级和治疗 2 A 级;治疗 1 水平 B 治疗 2 水平 A;治疗 1 水平 B 和治疗 2 水平 A;治疗1 级 B 和治疗 2 级 B)。对于具有二项式误差分布的数据,我找不到一种直观的方法来提取 R 中的这些均值和标准误差值,因此我手动计算这些值。我很欣赏我计算的标准误差不会考虑我的数据集中的随机效应结构,但我无法找到一种方法来计算它们以包含这种随机效应结构(使用 R 语言中的 mcmc 模拟仅创建 HPD 置信区间适用于高斯数据)。

因此,我想计算特定治疗组合中特定官能团的比例的治疗手段,然后计算这 4 种治疗手段的标准误差。

考虑到我对特定治疗的比例是:

Plot 1: 24/65
Plot 2 26/64
Plot 3: 25/65
Plot 4: 22/62
Plot 5: 30/66
Plot 6: 29/65

我知道要计算平均比例,我需要将命中总数(上述所有分子的总和)相加,然后除以命中和未命中的总和(上述所有分母的总和)。这给了我 0.40。

那么我的问题是,如何计算所得比例的标准误差?

调用命中 p 和未命中 q 的比例,我对比例的标准误差有以下公式:

sqrt((p*q)/n)

这个对吗?另外,什么是n?n 是构成平均比例的比例数(在这种情况下为 6)还是命中和未命中的总数(即上述所有分母的总和,这里是 387)?

对不起,这是一个简单的问题,我无法在任何地方找到答案!另外,如果这不是发布此内容的正确论坛,我也很抱歉...

非常感谢。

1个回答

首先要注意:您无法在概率上计算出体面的标准误差,您必须在 logit 标度上进行计算,并使用它们来构建您的置信区间。概率周围的区间几乎不是对称的,在使用混合模型时绝对不是。

您可以使用包轻松绘制效果effects

使用该功能Effect(),您可以指定要绘制的效果并立即绘制,或提取所需的信息。

一些随机的假数据:

ndata <- data.frame(
  DV = sample(0:1,200,TRUE),
  Treatment1 = rep(rep(c('A1','B1'),25),4),
  Treatment2 = rep(rep(c('A2','B2'),each=25),4),
  Block = rep(c("Block1","Block2"),each=100)
  )

m <- glmer (DV ~ Treatment1 * Treatment2 + (1|Block/Treatment1),
           data=ndata, family = binomial) 

要获得效果图,您可以简单地执行以下操作:

plot(allEffects(m))

要得到:

在此处输入图像描述

你得到的一样plot(Effect(c("Treatment1","Treatment2"),m)

如果要获取实际数据,可以将调用结果保存Effect()在对象中,并提取必要的数据:

est <- Effect(c("Treatment1","Treatment2"),m)
cbind(est$x,est$fit,est$se,est$lower,est$upper)

要得到:

  Treatment1 Treatment2       est$fit    est$se  est$lower est$upper
1         A1         A2 -7.696104e-02 0.2775554 -0.6209597 0.4670376
2         B1         A2 -1.670541e-01 0.2896820 -0.7348204 0.4007122
3         A1         B2 -3.364722e-01 0.2927591 -0.9102694 0.2373250
4         B1         B2  1.110223e-16 0.2773501 -0.5435962 0.5435962

请注意,这些是原始(logit)规模。计算置信区间将涉及将其转换为原始比例,例如使用。普洛吉斯():

> cbind(est$x,plogis(est$fit),plogis(est$lower),plogis(est$upper))
  Treatment1 Treatment2 plogis(est$fit) plogis(est$lower) plogis(est$upper)
1         A1         A2       0.4807692         0.3495632         0.6146824
2         B1         A2       0.4583333         0.3241378         0.5988588
3         A1         B2       0.4166667         0.2869447         0.5590543
4         B1         B2       0.5000000         0.3673514         0.6326486

PS:这不是最干净的代码,仅用于说明目的。