分享

R语言利用基线协变量提高随机对照试验的效率

 拓端数据 2020-03-23

原文链接:http:///?p=6391

在这篇文章中,我将介绍基于半参数理论的最近开发的改进边际治疗效果估计的方法之一。

边际处理与条件处理效应

未经调整和调整后的治疗效果不同的一个重要例子是使用逻辑回归来模拟二元结果。也就是说,治疗效果的边际或未调整比值比不同于以一个或多个基线协变量为条件的治疗效果。这意味着如果调整基线测量,真实治疗效果估计实际上与边际未调整治疗效果不同。事实证明,治疗的条件(调整后)比值比绝对值大于边际(未调整)效应。

以提高的精度估计边际处理效果

基本思想是我们可以通过添加增强函数来修改由边际(未调整)处理效果估计器求解的估计方程,该函数利用基线协变量。

这是一个二进制变量,指示受试者被随机分配到哪个治疗组。我们将表示基线协变量的向量。

由于我们假设这里是二元,我们将使用这两个模型的逻辑回归模型。

R中的实现


我们将使用单个基线协变量模拟一些简单试验的数据:

< - 1000\nz < - 1 *(runif(n)<0.5)\nx < - rnorm(n)\nxb < - -2 + x + z\nprob < - exp(xb)/(1 + exp(xb))\ny < - 1 *(runif(n)< - data.frame(y,x,z)"}"> set.seed(65456461) n < - 1000 z < - 1 *(runif(n)<0.5) x < - rnorm(n) xb < - -2 + x + z prob < - exp(xb)/(1 + exp(xb)) y < - 1 *(runif(n)< - data.frame(y,x,z)

首先,让我们拟合简单的未调整模型来估计边际治疗效果,但不使用基线协变量:

未调整< - glm(y~z,data,family = binomial)\nCall:\nglm(formula = y ~ z, family = binomial)\n\nDeviance Residuals: \n Min 1Q Median 3Q Max \n-0.8753 -0.8753 -0.6324 1.5132 1.8482 \n\nCoefficients:\n Estimate Std. Error z value Pr(>|z|) \n(Intercept) -1.5080 0.1199 -12.580 < 2e-16 ***\nz 0.7462 0.1518 4.915 8.86e-07 ***\n---\nSignif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1\n\n(Dispersion parameter for binomial family taken to be 1)\n\n Null deviance: 1133.4 on 999 degrees of freedom\nResidual deviance: 1108.3 on 998 degrees of freedom\nAIC: 1112.3\n\nNumber of Fisher Scoring iterations: 4"}"> >未调整< - glm(y~z,data,family = binomial) Call: glm(formula = y ~ z, family = binomial) Deviance Residuals: Min 1Q Median 3Q Max -0.8753 -0.8753 -0.6324 1.5132 1.8482 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -1.5080 0.1199 -12.580 < 2e-16 *** z 0.7462 0.1518 4.915 8.86e-07 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 1133.4 on 999 degrees of freedom Residual deviance: 1108.3 on 998 degrees of freedom AIC: 1112.3 Number of Fisher Scoring iterations: 4

干预对照对照的估计对数比值比为0.746,标准误差为0.152,z统计值为4.915。现在让我们执行标准调整分析,包括逻辑回归的线性预测器:

adjusted <- glm(y~z+x, data, family=binomial)\n> summary(adjusted)\n\nCall:\nglm(formula = y ~ z + x, family = binomial)\n\nDeviance Residuals: \n Min 1Q Median 3Q Max \n-2.3303 -0.7392 -0.4792 0.6146 2.5612 \n\nCoefficients:\n Estimate Std. Error z value Pr(>|z|) \n(Intercept) -1.88117 0.14173 -13.273 < 2e-16 ***\nz 0.94074 0.16850 5.583 2.36e-08 ***\nx 1.07543 0.09532 11.282 < 2e-16 ***\n---\nSignif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1\n\n(Dispersion parameter for binomial family taken to be 1)\n\n Null deviance: 1133.37 on 999 degrees of freedom\nResidual deviance: 941.29 on 997 degrees of freedom\nAIC: 947.29\n\nNumber of Fisher Scoring iterations: 5\n"}"> > adjusted <- glm(y~z+x, data, family=binomial) > summary(adjusted) Call: glm(formula = y ~ z + x, family = binomial) Deviance Residuals: Min 1Q Median 3Q Max -2.3303 -0.7392 -0.4792 0.6146 2.5612 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -1.88117 0.14173 -13.273 < 2e-16 *** z 0.94074 0.16850 5.583 2.36e-08 *** x 1.07543 0.09532 11.282 < 2e-16 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 1133.37 on 999 degrees of freedom Residual deviance: 941.29 on 997 degrees of freedom AIC: 947.29 Number of Fisher Scoring iterations: 5

调整后的条件处理效果估计值为0.941,标准误差为0.169,z统计量为5.583。正如我们预期的那样(平均而言),条件处理效应的幅度大于边际效应。 

现在我们将估计边际治疗效果,但利用基线协变量来获得更精确的估计。 

接下来,我们必须适应两个工作模型和。为此,我们在两个治疗组中拟合了单独的逻辑回归模型:
< - glm(y [z == 0] ~x [z == 0],data,family = binomial)\nq1mod < - glm(y [z == 1] ~x [z == 1],data,family = binomial)"}"> q0mod < - glm(y [z == 0] ~x [z == 0],data,family = binomial) q1mod < - glm(y [z == 1] ~x [z == 1],data,family = binomial)

现在我们需要计算并针对每个受试者 。为此,我们可以使用以下代码:

< - function(linpred){\n\tEXP(linpred)/(1 + EXP(linpred))\n}\nq0hat < - expit(cbind(rep(1,n),x)%*%q0mod $ coef)\nq1hat < - expit(cbind(rep(1,n),x)%*%q1mod $ coef)"}"> expit < - function(linpred){ EXP(linpred)/(1 + EXP(linpred)) } q0hat < - expit(cbind(rep(1,n),x)%*%q0mod $ coef) q1hat < - expit(cbind(rep(1,n),x)%*%q1mod $ coef)

 最后,我们称之为speff函数:

< - (y~1,endpoint =“dichotomous”,data,trt.id =“z”,\n endCtrlPre = q0hat,endTreatPre = q1hat)"}"> semiPara < - (y~1,endpoint =“dichotomous”,data,trt.id =“z”, endCtrlPre = q0hat,endTreatPre = q1hat)

我们首先指定结果变量y,并且不要在等式的右边放置任何变量(尽管稍后会看到变量选择)。 为了获得治疗效果估计,我们只是总结拟合对象:

Treatment effect Log OR SE LB UB p Naive 0.74625 0.15182 0.44869 1.0438 8.8591e-07 Speff 0.78412 0.13967 0.51036 1.0579 1.9771e-08

接下来,我们得到了利用基线协变量的估计边际对数比值比。正如我们希望从理论上看,标准误差更小,p值更显着,置信区间更窄 - 我们通过使用基线协变量获得了精确度/统计效率。

模型选择
 

最后一点。这种方法依赖于渐近无偏性的渐近参数,也依赖于使用夹心方法的标准误差估计。因此,我会谨慎地在“小型”研究中使用它。小有多小?在张等人的论文中,使用n = 600进行了模拟,估计是无偏的,置信区间的标称覆盖率为95%。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多