接着上一期的logit_one的宏,logit_one仅能提取下表中的OR值,无法实现每一组相应总人数、患病人数、患病率的提取;
因此,小编在logit_one基础上进一步开发了logit_two宏。可实现暴露变量每一组相应总人数、患病人数、患病率的提取,弥补logit_one宏不足功能。
如上表所示,这是队列研究因此展示的是发病数、发病密度、模型1和模型2是HR值。类似的,我们的横断面研究一般是患病数、患病率和OR值。
而logit_one宏仅能提取模型1和模型2这样的HR值(横断面:OR值),但不能提取冠心病发病数(横断面:患病数)、发病密度(横断面:患病率)。
首先来看看小编本期开发的宏的结果:会保存到一个excel中:
接下来介绍宏的说明:其实logit_two和上一期logit_one宏的参数和含义一模一样。
logit_two宏介绍:
功能:输出多个暴露对某个二分类结局的所有结果参数;各模型调整的变量一致。
方法:二分类logistic回归
宏调用:%logit_two(data=,
xlist=,
xie=,
class=,
y=,
lujing=)
参数说明:
data:填数据集
xlist:所有的暴露变量,以空格隔开填写,如xlist=x1 x2
xie:各模型的需要调整的协变量,以空格隔开填写,如xie=x3 x4
class:填写分类变量,以空格隔开填写,如class=x1 x2
y:结局变量
lujing:指保存excel结果文件的路径,如lujing=E:\02学习\经验\02SAS代码实现\模型结果批量提取合集
变量赋值表
变量 | 变量类型 | 赋值 | 属于 |
性别 | 2分类 | 1=男;2=女 | 协变量 |
年龄 | 连续 | 协变量 | |
省份 | 多分类 | 21,23,32,37,41 | 协变量 |
城乡 | 2分类 | 1=城市,2=农村 | 协变量 |
婚姻 | 多分类 | 1-5 | 协变量 |
文化程度 | 多分类 | 1-6 | 暴露变量 |
是否吸烟 | 2分类 | 1=是,0=否 | 暴露变量 |
是否饮酒 | 2分类 | 1=是,0=否 | 暴露变量 |
超重肥胖 | 2分类 | 1=是,0=否 | 暴露变量 |
中心性肥胖 | 2分类 | 1=是,0=否 | 暴露变量 |
目的:分别以文化程度、是否吸烟、是否饮酒、超重肥胖、中心性肥胖为暴露变量;
高血压为结局变量;
各模型均调整性别、年龄、省份、城乡、婚姻,采用2分类logistic回归分析,并提取参数结果。以及各自变量分组的总人数、高血压数和高血压患病率
数据集:data.xlsx
注意:
1.因变量赋值为1,0;本宏拟合的是因变量=1的情况。
2.该宏暴露变量要求是:分类变量
实践代码:
option validvarname=any;
/*导入数据*/
proc import datafile="E:\02学习\经验\02SAS代码实现\模型结果批量提取合集\提取多暴露多结局logistic回归宏升级版\data.xlsx"
out=data replace;
quit;
/*导入宏*/
%include "E:\02学习\经验\02SAS代码实现\模型结果批量提取合集\提取多暴露多结局logistic回归宏升级版\logit_two宏.sas";
/*logit_two宏参数介绍*/
/*data:填数据集
xlist:所有的暴露变量,以空格隔开填写,如xlist=x1 x2
xie:各模型的需要调整的协变量,以空格隔开填写,如xie=x3 x4
class:填写分类变量,以空格隔开填写,如class=x1 x2
y:结局变量
lujing:指保存excel结果文件的路径,如lujing=E:\02学习\经验\02SAS代码实现\模型结果批量提取合集*/
%logit_two(data=data,
xlist=文化程度 是否吸烟 是否饮酒 超重肥胖 中心性肥胖,
xie=性别 年龄 省份 城乡 婚姻,
class=性别 省份 城乡 婚姻 文化程度(ref="4") 是否吸烟(ref="1") 是否饮酒(ref="0") 超重肥胖(ref="0") 中心性肥胖,
y=高血压,
lujing=E:\02学习\经验\02SAS代码实现\模型结果批量提取合集\提取多暴露多结局logistic回归宏升级版);
以上运行结束后会自动生成1个excel文件:多暴露对高血压logistic回归分析结果:
解释:一般来说,可以直接复制暴露变量、分组、总人数、高血压数、高血压患病率、OR_he、p这几列就可以了。
分类暴露变量的参照组想更改如何办:
SAS默认是以最大值为参照的,那自己想设置每个暴露的参照怎么办呢?
方法同上期:在class参数这样写:
class=文化程度(ref="1") 是否吸烟(ref="0") 是否饮酒(ref="0") 超重肥胖(ref="0") 中心性肥胖(ref="0")
即class的每个变量后面增加(ref=" ")即可
/*暴露变量设置参照的方法*/
%logit_two(data=data,
xlist=文化程度 是否吸烟 是否饮酒 超重肥胖 中心性肥胖,
xie=性别 年龄 省份 城乡 婚姻,
class=性别 省份 城乡 婚姻 文化程度(ref="4") 是否吸烟(ref="1") 是否饮酒(ref="0") 超重肥胖(ref="0") 中心性肥胖,
y=高血压,
lujing=E:\02学习\经验\02SAS代码实现\模型结果批量提取合集\提取多暴露多结局logistic回归宏升级版);