医学中最常设计的试验就是病例对照研究,以探究某一干预措施是否有改善性。需要根据基线的情况,选择相应的方法。

试验数据如下:

(声明:该数据是随机自动生成的,虚拟的,该计算结果不代表任何真实的事情,该数据不适用于现实世界。)
数据由试验组长病程10名,试验组短病程10名,对照组10名组成,干预手段为减肥。

一、两组病例对照研究常用的三种方法
(1)T检验法,将结果进行T检验。
因为基线齐,说明两组干预前组间差异不明显,直接用T检验对比干预后的结果。
long_after <- filter(data, 病程=='长病程' & 干预=='减肥后') short_after <- filter(data,
病程=='短病程' & 干预=='减肥后') t.test(short_after$血清蛋白含量, long_after$血清蛋白含量, var=
T,paired=F)
独立样本T检验得出P=0.5106
(2)倍差法,将干预前后差值进行T检验。
先用 干预后 减去 干预前, 得出差值d,然后用差值进行T检验。
倍差值法独立样本T检验得出P=0.3641
(3)协方差法,线性回归分析的一种。

协方差分析法,是把方差分析和回归分析结合起来的一种方法。一般的T检验只考虑了干预方式的影响,但是没有把其他的影响变量纳入进去。而协方差法可以把多个影响变量的效应给处理掉。
这里运用协方差法计算两组差异的思路,就是将干预前的血清蛋白含量作为影响变量X之一。
****协方差分析法是参数统计的一种,所以其运用条件同方差分析。要求是连续型数值,且影响变量之间无交互效应。
****协方差分析中,变量必须是连续型数值,所以性别这种分类变量不能用于协方差分析。可以尝试下多因素Logic回归。
fit <- aov(data$干预后含量 ~ data$干预前含量 + data$病程 ) summary(fit)
算出如下:

说明长病程和短病程在干预后的差异P值=0.9132 (貌似这个值最大)
#把年龄因素的影响去掉 fit <- aov(data$干预后含量 ~ data$干预前含量 + data$年龄 + data$病程 ) summary(
fit)

可以看出,年龄对Y无显著影响,校正了年龄、初始血清蛋白含量以后,得出P值=0.7097
有意思的来了,将年龄和干预前含量交换位置:

干预前的含量对血清含量有显著影响(p=0.0425),校正干预前含量、年龄等因素后,该干预手段对长短病程的患者无显著影响(p=0.7097)。
(4)Welch Ttest
Welch Ttest算出P=0.5115

小彩蛋:其实一开始没有把干预前的基线给算出来,因为主要是想对比这三种常用的方法(可能有的同学常用的只有第一种)。现在来揭晓答案:干预前的长病程组p=0.1162,短病程组p=0.3109,两组无显著差异(shapiro),符合正太分布。两组方差检验(Ftest)P=0.8348,默认方差齐。因此,在这个实验数据中,答案其实就是基线齐。

二:总结
可以看出,三种方法对比,独立样本T检验(P=0.5106),倍差值法(P=0.3041),协方差法(P=0.9132)。
因此,在基线齐的时候,选择倍差法要比独立T检验会好点,因为值更小,容易出结果。student T test 和Welch T test
的值均比倍差值法要大。
但是协方差法适用范围更大点,因为它排除了年龄等干扰因素,相对而言应用更广泛,其结果更加可信。

因此,我推荐:
在基线齐的时候,运用倍差值法进行两组差异检验;在基线不齐的时候,运用协方差法进行两组差异检验(把基线的差异给校正掉)。
如果想校正年龄、血压等其他可能存在的影响因素,直接用协方差法。

如果基线不齐,可以用倍差法吗?如果用倍差法,就会引出一个问题,即该干预手段对基线不同的两组的影响作用是一样的吗?

举例:中风偏瘫患者,在急性期用神经保护剂,效果更高,而在恢复期,效果就一般般。那么对于基线不齐的两组(一组是急性期,一组是恢复期),那么神经保护剂的治疗效果是不同的,因此这个时候用倍差法去计算两组的干预效应,是不对的。

因此,如果你能根据现有文献,证明该干预手段对两组影响作用一样,那么可以在基线不齐的时候使用倍差法,但是基线不齐最好的还是协方差分析法。但是协方差分析法又有个问题,就是两组数据要符合正态分布,因为协方差分析法是参数检验。

技术
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:766591547
关注微信