科研星球

广义估计方程(GEE):如何用Stata、SAS和R实现?

广义估计方程的概念

1986年,Zeger 和Liang在《Biometrics》上发表了题为《Longitudinal Data Analysis for Discrete and Continuous Outcomes》的文章,提出了一种新的参数回归分析方法,即广义估计方程(generalized estimating equations,GEEs)
GEEs是在广义线性模型(generalized linear models,GLM)的基础上发展而来,通过作业相关矩阵(working correlation matrix)和拟似然函数(Quasi likelihood function)解决了数据间非独立性问题,实现了纵向数据回归参数的稳健估计
除了连接函数和分布函数(与GLM相同),作业相关矩阵也是GEEs的一个重要特征,需要在分析过程中进行选择。作业相关矩阵是指因变量的各重复测量值两两之间的相关性大小,包括等相关(exchangeable correlation)、独立(independent)、自相关(autocorrelation)和不确定性(unstructured correlation)等(具体可参考相关帮助文档)。

广义估计方程的应用

目前,GEEs的应用越来越多,也越来越广(多的是量,广的是领域)。就医学领域来讲,GEEs与纵向数据(重复测量数据)的配合使用可谓是相得益彰。除了纵向数据(重复测量数据),GEEs还可以用于因变量观测值间存在相关性的其他类型数据。
2.1 纵向数据(重复测量数据)
GEEs多用于纵向数据的回归分析,如研究某强化方案治疗某疾病的疗效(结局为治愈)。两组患者分别实施强化和常规方案后,每隔2周进行一次随访,对某项疗效指标进行检查,查看是否恢复正常。
说到这里,应该会有朋友想到重复测量方差分析。没错,如果测量指标是连续性变量,也是可以采用重复测量方差分析的。但是,这里的结果是二分类(是否治愈),重复测量方差分析便不再适用。此外,上面说到的是平衡数据,对于不平衡的纵向数据,GEEs同样适用(例如,有一些患者第一次随访间隔了2周,第二次间隔3周,第三次间隔1周)。
举个实例:Berry SA, Fleishman JA, Yehia BR, et al. Thirty-day hospital readmission rate among adults living with HIV [J]. AIDS. 2013,27(13):2059-2068.
该研究纳入了9个HIV诊所(隶属于美国HIV研究网络)收治的艾滋病患者,在每位患者的每次出院后都随访30天以确定每次出院后是否有30天再入院(因变量,出院后30天内再入院)发生。
在这个数据集里,一位患者可有多条记录(每条记录包含当次入院时的人口学特征、CD4细胞计数、抗病毒治疗情况等),记录的间隔时间不统一,所以可以看作一个不平衡的纵向数据(重复测量数据)。另外,因变量间可能存在相关性,即30天再入院史可能影响后续30天再入院的发生。因此,本研究采用了GEEs拟合logistic回归分析。
注:严格来说,纵向数据和重复测量数据是两种类型的数据,具体可参考第8版《卫生统计学》(人民卫生出版社)第二十章第一节:非独立数据问题。
2.2 因变量间存在相关性的其他数据
除了常见的纵向数据外,GEEs还可以用于因变量观测值之间存在相关性的数据,这里举2个例子。
例1:王琦,王晓萌,陈文明, 等.以广义估计方程研究浙江省肺结核耐药预测方程[J].中华流行病学杂志,2018,39(3):368-373.
该研究指出,耐药肺结核患者可能耐一种或多种药物,耐药数目相同者可能耐药种类不同,不同药物的耐药性间可能存在相关性。因此,建议将每位患者的每一种药物的耐药情况都清晰列出,作为因变量,采用GEEs进行影响因素探究。
例2:吴彬,曹建平,邹煌秀, 等.广义估计方程在糖尿病并发症影响因素分析中的应用[J].中国卫生统计,2016,33(3):385-388.
与例1类似,该文章指出,一个糖尿病患者可能不伴有并发症,也可能伴有一种或多种并发症,不同人并发症的数目相同但种类可能不同,且不同并发症间可能存在相关性,如果单纯的使用二分类结局,会损失掉很多信息。因此,同样建议将并发症情况分别列出,作为因变量,采用GEEs进行影响因素探究。
对于上述两类数据,墨点并未实际操作过,大胆猜测了一下数据的录入形式,与各位共同探讨。以糖尿病并发症为例,假如有ABCDE五个并发症(分别用1-5赋值),发生为1,不发生为0,加上年龄和患病年数两个自变量,则数据录入形式如下:
0.png

广义估计方程的实现

可以实现GEEs的数据分析软件有很多,常用的有SPSS、Stata、SAS和R等。这里以实例演示GEEs在Stata、SAS和R中的实现,仅供大家参考。
研究目标:探究某医院艾滋病患者30天再入院的影响因素
数据情况:重复测量的纵向数据,且因变量间可能存在相关性
数据整理形式:
0 (1).png
变量及赋值情况:
0 (2).png
3.1 应用Stata实现GEEs
** 设置数据形式 **
xtset ID Number
0 (3).png
** 拟合稳健的单因素logsitic回归(示例) **
xtgee readmission ib3.CD4, family(binomial) link(logit) corr(ind) eform robust
/* family:分布函数,link:连接函数,corr:作业相关矩阵,eform:输出OR */
0 (4).png
** 拟合稳健的多因素logsitic回归 **
xtgee readmission i.ART ib3.CD4, family(binomial) link(logit) corr(ind) eform robust
0 (5).png
3.2 应用SAS实现GEEs
此处赋值稍作改变,抗逆转录病毒治疗:是 = 1,否 = 2
/*加载数据 */
proc import out= work.Readmission
        DATAFILE"C:\Users\Administrator\Desktop\广义估计方程(GEEs)\30-day readmissions_1.csv"
         DBMS=CSV REPLACE;
  GETNAMES=YES;
run;
/*拟合单因素logsitic回归 (示例)*/
proc gee data=Readmission descending;
class ID Time_since_HIV ART CD4;
model Readmission=CD4/dist=bin link=logit;
repeated subject=ID/corr=independence covb corrw;
run;
0 (6).png
/*拟合单因素logsitic回归 (示例)*/
proc gee data=Readmission descending;
class ID Time_since_HIV ART CD4;
model Readmission=CD4/dist=bin link=logit;
repeated subject=ID/corr=independence covb corrw;
run;
0 (7).png
3.3 应用R实现GEEs
##加载 R packages
library(geepack)
##载入数据
Readmission <- read.csv("30-day readmissions.csv",sep = ",")
##拟合单因素logistic回归(示例)
gee.CD4 <- geeglm(readmission ~ CD4, id = ID, data = Readmission, corstr="independence", family = binomial(logit))
0 (8).png
##拟合多因素logistic回归
gee <- geeglm (readmission ~ ART+ CD4, id = ID, data = Readmission, corstr = "independence", family = binomial(logit))
0 (9).png


没有账号?