R语言利用基线协变量提高随机对照试验的效率
原文链接:http://tecdat.cn/?p=6391
在这篇文章中,我将介绍基于半参数理论的最近开发的改进边际治疗效果估计的方法之一。
边际处理与条件处理效应
未经调整和调整后的治疗效果不同的一个重要例子是使用逻辑回归来模拟二元结果。也就是说,治疗效果的边际或未调整比值比不同于以一个或多个基线协变量为条件的治疗效果。这意味着如果调整基线测量,真实治疗效果估计实际上与边际未调整治疗效果不同。事实证明,治疗的条件(调整后)比值比绝对值大于边际(未调整)效应。
以提高的精度估计边际处理效果
基本思想是我们可以通过添加增强函数来修改由边际(未调整)处理效果估计器求解的估计方程,该函数利用基线协变量。
这是一个二进制变量,指示受试者被随机分配到哪个治疗组。我们将表示基线协变量的向量。
由于我们假设这里是二元,我们将使用这两个模型的逻辑回归模型。
R中的实现
我们将使用单个基线协变量模拟一些简单试验的数据:
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)<prob)
首先,让我们拟合简单的未调整模型来估计边际治疗效果,但不使用基线协变量:
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)
> 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。正如我们预期的那样(平均而言),条件处理效应的幅度大于边际效应。
现在我们将估计边际治疗效果,但利用基线协变量来获得更精确的估计。
接下来,我们必须适应两个工作模型和。为此,我们在两个治疗组中拟合了单独的逻辑回归模型:
q0mod < - glm(y [z == 0] ~x [z == 0],data,family = binomial)
q1mod < - glm(y [z == 1] ~x [z == 1],data,family = binomial)
现在我们需要计算并针对每个受试者 。为此,我们可以使用以下代码: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函数:
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%。
- biztalk rosettanet 自定义 pip code
- Python之线程
- 3555: [Ctsc2014]企鹅QQ
- 【实战】RFID Hacking(1):看我如何突破门禁潜入FreeBuf大本营
- P2885 [USACO07NOV]电话线Telephone Wire
- 实战-Fluxion与wifi热点伪造、钓鱼、中间人攻击、wifi破解
- 【下载】PyTorch实现的神经网络翻译框架——机器翻译工具包 nmtpytorch
- P2605 [ZJOI2010]基站选址
- MYSQL之索引原理与慢查询优化
- MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份
- P1452 Beauty Contes
- Python基础(一)
- P1452 Beauty Contes(旋转卡壳版)
- python常见模块之os模块
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 监控、链路追踪、日志这三者有何区别?
- Dubbo 是如何实现 SPI 机制?
- 签到功能,用 MySQL 还是 Redis ?
- 轻松两步,在 SpringBoot 服务上实现接口限流
- 教程 | 在华为鸿蒙OS上尝鲜,第一个“hello world”
- spring-boot-route(二十二)实现邮件发送功能
- 踩坑!JDK8中HashMap依然会死循环!
- 解决 idea 使用过程中让你觉得不爽的一些问题
- R语言SIR模型(Susceptible Infected Recovered Model)代码sir模型实例
- Java循环
- 手把手教你用Python网络爬虫获取壁纸图片
- List<E>集合接口特征、ArrayList与LinkedList使用注意及特征
- Object类与它的一些方法
- IO流简要介绍
- R语言用线性回归模型预测空气质量臭氧数据