R语言调整随机对照试验中的基线协变量
原文链接:http://tecdat.cn/?p=6386
随机对照试验构成通常被认为是用于评估某些干预或感兴趣治疗效果的金标准设计。参与者被随机分配到两个(有时更多)的群体这一事实确保了,至少在期望中,两个治疗组在测量的,重要的是可能影响结果的未测量因素方面是平衡的。因此,两组之间结果的差异可归因于随机化治疗而不是对照(通常是另一种治疗)的效果。
如果随机化没有受到影响,即使不调整任何基线协变量,试验的治疗效果估计也是无偏的。即使在各组之间的某些基线变量出现不平衡的情况下也是如此。这是因为偏差被定义为估计量(由我们的统计程序给出,如线性回归)是否在重复样本中具有等于目标参数的期望。有时估计值会高于真实值,有时低于真实值,但只要平均值等于目标值,我们就会说估算值是无偏见的。
协变量调整
现在让我们考虑调整一个或多个基线协变量,在我们的分析中随机化时。这通常通过拟合结果的回归模型来完成,随机组和基线变量作为协变量。
我们可以使用R来说明这一点。我们将模拟n = 50个受试者的小型研究的数据,随机化50%治疗= 0和50%治疗= 1。然后,我们将根据基线协变量X和治疗指标生成结果Y:
n < - 50
set.seed(31255)
x < - rnorm(n)
treat< - 1 *(runif(n)<0.5)
y < - x +treat+ rnorm(n)
在这里,第1组与第0组的真正治疗效果是1.如果我们执行未经调整的分析 ,我们获得:
> summary(lm(y~treat))
Call:
lm(formula = y ~ treat)
Residuals:
Min 1Q Median 3Q Max
-4.8977 -0.9312 0.0990 1.3050 2.7046
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.5556 0.3268 -1.700 0.095571 .
treat 1.8113 0.4447 4.073 0.000173 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.567 on 48 degrees of freedom
Multiple R-squared: 0.2568, Adjusted R-squared: 0.2413
F-statistic: 16.59 on 1 and 48 DF, p-value: 0.0001731
估计治疗效果为1.81,标准误差为0.44。现在我们进行分析,我们另外调整基线:
> summary(lm(y~treat+x))
Call:
lm(formula = y ~ treat + x)
Residuals:
Min 1Q Median 3Q Max
-3.4975 -0.6407 0.1508 0.7619 1.6868
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.1874 0.2440 0.768 0.44635
treat 0.9741 0.3234 3.013 0.00416 **
x 1.1391 0.1521 7.491 1.48e-09 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.069 on 47 degrees of freedom
Multiple R-squared: 0.6613, Adjusted R-squared: 0.6468
F-statistic: 45.87 on 2 and 47 DF, p-value: 8.955e-1
现在治疗效果估计值为0.97,标准误差为0.32。通过调整X获得的估计值更接近真实值1,并且标准误差更小,表明更精确的估计。通过调整协变量获得的精确度取决于协变量和结果之间的相关性的强度。
调整协变量时的假设
我们已经看到,调整基线协变量可以提高我们的治疗效果估计的精确度。但要做到这一点,我们已经拟合了一个更复杂的回归模型。该回归模型假设Y的平均值线性地取决于X,并且该关系的斜率在两组中是相同的。无法保证这些假设在任何特定研究中都能成立。因此,如果这些假设不成立,我们可能会担心使用协变量调整分析。
协变量调整与二元结果
前面的讨论是在连续结果的背景下进行的,我们通常会使用线性回归结果模型。如果结果是不同类型怎么办?也许最常见的是二元结果。在这种情况下,事情有点复杂。事实证明,在逻辑回归中调整基线协变量会降低治疗效果估计的精确度,但(会增加相应假设检验的能力)。
- 【黑客解析】黑客是如何实现数据库勒索的 ?
- 直播回看:高可用架构入门 —— 腾讯云架构演变及经验
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构之一 :从上云开始
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构之二:更好的网络
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构之三:更大的存储
- Socket学习总结系列(一) -- IM & Socket
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构 之四:替你分心的负载均衡
- 【腾讯云的1001种玩法】十分钟搞定云架构 · 什么是Bucket、什么是Object
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构 · 负载均衡的最佳实践
- 【黑客浅析】像黑客一样思考
- 【腾讯云的1001种玩法】 十分钟轻松搞定云架构 · 负载均衡的几种均衡模式
- ASP.NET Web API的Controller是如何被创建的?
- 【腾讯云的1001种玩法】十分钟轻松搞定云架构:COS的两种上传模式
- 物流行业迎变革,云计算是基础,大数据是关键
- 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 数组属性和方法
- 浏览器同域名请求的最大并发数限制
- HTTP Strict Transport Security实战详解
- 深夜学算法之SkipList:让链表飞
- 自研安全工具之网页全链接爬取
- 实战远程文件同步(Remote File Sync)
- nginx cache的玩法
- PHP共享内存详解 前言
- 为了--force-pivoting参数,我问候了sqlmap开发者
- flexible array柔性数组、不定长的数据结构Struct详解
- 如何优雅打印nginx header和body
- Go的CSP并发模型实现:M, P, G
- Golang依赖管理工具:glide从入门到精通使用
- Redis的Multi的内幕真相
- shell expect权威指南和实战
- 3种方式限制ip访问Oracle数据库