微信直播

认真谈谈倾向性分析的统计学处理方法

Published at: 2015年第1卷第S1期

王晓燕等
关键词:

本文选自《疯狂统计学》


第三部分·临床研究案例统计分析过程“局部解剖”

作者 | 王晓燕 胡志德 李潇

上周,我们介绍了PSM倾向性分析,欲复习前文请点下面蓝色字:

认真谈谈PSM倾向性分析

这周,我们继续来谈谈倾向性分析的统计学处理方法,本文为进阶内容,信息量大,朴素实在,建议读后收藏,磕论文的时候随时掏出来对照学习

本研究的主要统计学框架分为如下四部分:


第一部分:列表展示贫血组与非贫血组患者基线资料。

第二部分:进行倾向性匹配,并对匹配之后的贫血组与非贫血组患者进行基线资料比较。

三部分:采用COX风险比例模型分析贫血是否是患者长期不良事件的独立预测因素。

第四部分:采用Kaplan-Meier曲线法,计算贫血组与非贫血组患者之间长期不良事件发生率。

注意:本文所提及的统计学过程均在Mac中操作完成,Windows中的操作过程与之大体类似。所用统计学软件是Stata,该软件操作既可以使用菜单,也可以使用命令进行操作。图1为Stata全景图,command图框内输入运算命令。

图1 Stata全景图

【本文采用数据并非解读文献的原始数据,仅以模拟数据向大家展示利用Stata进行倾向性分析的全过程,论文原文请见文末阅读原文处。】

在进行统计分析之前,首先在EXCEL表单中,将所有变量名称进行规范化,如图2。

图2  在EXCEL表单中将所有变量名称规范化

1、导入数据

首先将EXCEL表单中的数据导入到StataStata软件中,其步骤为:

(1)先打开Stata程序,然后依次点击菜单栏中的File→Import→Excel Spreadsheet。

(2)找到EXCEL文件所在的位置,选中需要导入Stata的EXCEL表格,点击Open,如图3。

图3  将EXCEL文件导入到Stata软件中

(3)此时要在Import first row as variable names这一栏勾选,表示第一行是数据参数的位置,如图4。

图4  选择EXCEL第一行作为变量名称

(4)数据已经被导入Stata软件,如图5所示。

图5  EXCEL数据导入Stata的界面

(5)数据导入完成后,建议先保存文件,以免出现意外情况导致数据丢失。在本文中,笔者保存的文件名为“shili”。

2、检查数据类型和属性

由于EXCEL和Stata之间并不是无缝对接,因此建议读者导入数据后检查数据的类型属性。具体操作为: 

(1)点击数据栏右侧的Variable view,可以查看变量的属性,如图6 所示。

图6  变量属性视图

(2)Variable栏中出现了Name,Lable,Type等变量,作者可以根据自己的要求选择,各个属性解读如下:

Name:变量的名字,可以双击进行更改。

Lable:变量的标签,即对变量的说明。 

Type:变量类型。数据类型包括字符型数据和数值型数据,其中字符型数据的存储格式是str#,数值型数据的存储格式包括字节型(byte),整数 (int),长整数(long),浮点( oat),双浮点(double)。

Format:变量的显示格式。Stata中数值变量的基本格式有3种,e格式(科学计数法格式)、f格式(固定格式)、和g格式(一般格式)。这3种格式的表达式均包含用黑点隔开的两个数字w.d。其中的w表示整个显示所占的字符数,即宽度;d表示显示的数字中小数点后的位数。普通格式g中的d要灵活一些。它自动调整显示的格式。

显示格式是%w.d加上3种基本格式的显示符。例如,%9.2f表示变量的整个显示宽度为9个字符,其中小数点后有两个数位的固定显示格式。另外,在f后面加上字母c则是要求Stata给出带逗号“,”的数字显示格式,如表16-5所示。

字符变量的显示格式只有一种。其表达式为%#s。其中%是一个提示符; #表示显示的字符数,即宽度;s表示字符变量的显示格式。例如,%22s表示22个字符的字符变量显示格式。

以上信息,在数据编辑页面,双击可修改。

3、数据分析

3.1 倾向性匹配前两组基线资料比较

3.1.1连续性变量比较

两组之间连续性变量的比较,如果为正态分布,可采用独立样本t检验 (两组),偏态分布可采用Mann-WhitneyU检验(两组);两组之间分类变量之间的比较,可采用卡方检验,如果是等级变量,则采用秩和检验。

因此,对于连续性变量,我们首先确定该变量是否为正态分布,本篇文章中正态性检验选用的是偏度−峰度检验(sktest),Stata中的命令为sktest。基线资料中的连续型变量包括BMI、LVEF、TNT、Creatinineclearance(由eGFR 转化)。

此时输入命令:sktest bmi lvef tnt egfr

或输入sktest,在变量栏内将相关变量一一选中至命令框(图7)。

图7  正态分布检验操作示意图

本篇文章中,偏度−峰度检验拒绝了正态假设,不论是峰度还是偏度或者两者结合在一起,P值都<0.001,即以上4个变量均呈现出显著的非正态性 (图8)。

图8  正态分布检验结果

因此,对以上4个偏态连续型变量,应采用Mann-Whitney U检验。在Stata中进行Mann-Whitney U检验的命令是ranksum。

输入Stata命令:

ranksum,bmi,by(anemia) 

结果如下所示,H0代表建立的假设

H0:bmi(anemia==0)=bmi(anemia==1),

即假设贫血组患者BMI与非贫血组患者BMI相等。

Prob>|z|=0.0027,表明取得更大z值绝对值的概率。本里中Prob等于0.0027,因此贫血组与非贫血组BMI之间存在显著统计学差异(图9)。

图9  Mann-Whitney U检验结果

计算到这里,我们发现贫血组与非贫血组之间的BMI的描述性数据还没有,所以还应计算BMI的均值和标准差,以在表格中呈现具体数据。

输入命令:

tabstatbmi,by(anemia)stat(meansd)

命令中,stat(选择项),是指在结果中呈现的数据,mean是指平均数, sd是指标准差。

通过以上命令可以得出,贫血组患者BMI均值和标准差为:24.06±3.03; 非贫血组患者BMI均值和标准差为24.79±3.15。

其实以上结果,除Mann-Whitney U检验外,均可通过一条命令得出: 

tabstat bmi lveftnt egfr,by(anemia)stat(mean,sdskewkurt)col(stat)long

3.1.2分类变量比较

对分类变量进行卡方分析,输入命令为:

tab2 anemia gender,row chi2

命令中,anemia为分组数据,gender为检验变量。

通过上述命令,即可进行贫血组和非贫血组患者分类变量的卡方检验。

3.2 倾向性匹配

命令窗口输入如下命令:

set seed 10101

gen x=uniform()

sort x

psmatch2 anemia gender age bmi tnt egfr hr noofvessel history arrhythmia

hypertension dm pvd family emergentpci access contrast completely hyperlipoimia lvef smoker,outcome(ischemia3y)common ties ate n(1)logit

pstest gender age bmi tnt egfr hr noofvessel history arrhythmia hypertension dm pvd family emergentpci access contrast completely hyperlipoimia lvef smoker,both graph

注:倾向性分析也可在SPSS中安装psmatch2软件包进行。

命令解读:

以下是帮助菜单中psmatch2语法格式,

psmatch2分组变量匹配变量,outcome(varlist)common ties aten(1)logit

pstest分组变量匹配变量,both graph

简单说就是:psmatch2分组变量匹配变量,[选择项]。重点解读命令语句中选择项的含义。out(varlist)指明结局变量。common强制排除试验组中倾向值大于对照组最大倾向值或低于对照组最小倾向值。ties强制当试验组观测有不止一个最优匹配时同时记录。ate是倾向值匹配的重要指标,代表总体的平均干预效应。n(1)即neighbor(1)指定按照1:1进行匹配,如果要按照1:3进行匹配,则设定为neighbor(3),本例中因对照组样本量有限,仅适合1:1进行匹配。logit指定使用logit模型进行拟合,默认的是probit模型。

pstest,both做匹配后均衡性检验,理论上说此处只能对连续变量做均衡性检验,对分类变量的均衡性检验应该重新整理数据后运用χ2检验或者秩和检验。但此处对于分类变量也有一定的参考价值。

打开数据编辑窗口,会发现软件自动生成了几个新变量:其中_pscore是每个观测值对应的倾向值;_id是自动生成的每一个观测对象唯一的ID(事实上这列变量即是对_pscore排序);_treated表示某个对象是否试验组;_n1表示的是他被匹配到的对照对象的_id(如果是1:3匹配,还会生成_n2,_n3);_pdif 表示一组匹配了的观察对象他们概率值的差(图10)。

图10  倾向性匹配结果

匹配后数据,导出至EXCEL表单(图11)。

图11  Stata倾向性匹配结果导出至EXCEL表单

在Excel filename中填写文件名称,同时注意勾选”将变量名称复制到Excel 表单首行”(图12)。

图12  填写导出文件名称并勾选“将变量名称复制到Excel表单首行”

首先,剔除所有未匹配到对应组别的数据,即_support一栏内出现off_ support或空白的数据。然后EXCEL中使用vlookup函数整理进行统计分析。

(1)选择匹配之后的贫血组患者(即匹配结果的treated组)(图13)。

图13  选择匹配之后的贫血组患者

(2)选择贫血组患者对应的非贫血组患者的编号_n1,然后复制到新的表单(图14)。

图14  选择贫血组患者对应的非贫血组患者编号,复制到新表单

(3)对新表单中的n1进行升序排列(图15)。

图15  对新表单中的序号升序排列

(4)将原来表单中病历的id号进行升序排列,并将id号拷贝至原表单第一列(图16)。

图16  原表单中ID升序排列+拷贝至表单第一列

(5)输入VLOOKUP函数公式: 

以第一列gender为例:

=VLOOKUP(A2,Sheet1!A2:E1750,2,0) 

这一函数的意义是帮助我们在sheet1表单中A2:E1750区域,调出与新建表单A2对应患者的所有数据。

函数解读: 

VLOOKUP函数=VLOOKUP(查找的值,查找区域,返回列的位置,查找的方式)。

此处的查找值,即新表单中的A2,也就是n1,查找区域为sheet1! A2:E1750,返回列的位置也就是调取的gender列在sheet1中位于引用数据源 (Sheet1!A2:E1750)的第几列,很显然,gender列位于引用数据源的第二列,应为2。查找方式分为精确查找和模糊查找,如果为false或0,则返回精确匹配,如果找不到,则返回错误值#N/A。如果为TRUE或1,函数VLOOKUP将查找近似匹配值,也就是说,如果找不到精确匹配值,则返回小于lookup_value 的最大数值。如果range_lookup省略,则默认为近似匹配。

(6)输入公式后下拉即可,对于其他列的数据,只需将“返回列的位置”依次改为3、4、5等等,然后依次下拉即可(图17)。

图17  将“返回列的位置依次改为3、4、5等”

(7)将匹配之后的数据再次导入Stata软件,进行下一步分析。

3.3 COX回归分析

键入命令:

stset ischemia3yday,failure(ischemia3y)

stcox anemia age gender dm pvd hr family history noofvessel completely,hr

命令解读: 

(1)在对随访资料进行生存分析之前,需现将数据库定义为生存资料数据库。

◆stset时间变量,failure(截尾变量==#)

其中,选择项failure(截尾变量==#)规定截尾变量取值为“#”时研究对象出现预期结果,没有该选择项时,Stata以所有不等于0的非缺失值为出现预期结果。

(2)在应用stset对数据进行规定后,可直接用stcox命令进行Cox回归分析

◆stcox分组变量比较变量,hr

hr即表示在结果中计算HR值。

如图18,我们可以看到贫血等变量对应的HR、标准误、P值以及95%可信区间。

图18  Cox回归分析结果

COX分析也可在SPSS软件中实现,这部分内容已经在第一章节中介绍,本章不再赘述。需要指出的是,Stata和SPSS由于算法上存在一定区别,因此所得数据会存在略微差别,但并不影响最终结果。

3.4 Log-rank检验

输入Stata命令: 

sts list,by(anemia)sts test anemia,logran

命令解读: 

(1)用于输出生存率、生存率的标准误等统计量的命令是:

◆stslist,by(分组变量)strata(分层变量)adjustfor(校正变量)选择项选择项有:

failure/*输出死亡函数(1-S(t)) 

na/*输出累积风险函数

level/*规定所输出可信区间的可信度

结果如下:

(2)检验两组生存率比较,多用log-rank检验 sts test anemia,logrank

从结果中看到,P值<0.001,即贫血与非贫血组3年缺血事件发生率存在显著差异。

3.5 绘制Kaplan-Meier曲线

键入命令

sts graph,by(anemia)failure nolog

事实上,对于Kaplan-Meier曲线(图19),SPSS绘制更为便捷,本书其他章节已有详细描述,本章节不再赘述。

Follow-uptime(day)

图19  Kaplan-Meier曲线

综上,本文通过一篇回顾性分析详细阐述了倾向性分析的应用场景,研究设计思路和统计分析思路,并详细讲解了使用Stata进行倾向性分析的操作步骤,希望该章节对读者能有所帮助。


下周,我们将聊聊论文中的统计学方法应该如何表达,敬请点击下方关注按钮,第一时间收看!

喜欢本文的话

就请赞赏作者


排版编辑:张    晗 AME Publishing Company

责任编辑:江苇妍 严斯瀛  AME Publishing Company

comments powered by Disqus

附件