SAS的proc genmod 如何输出OR值及置信区间呢?
先说明一下:自变量Bmi1 diqu sex age hunyin为分类变量,sex(赋值1,2) hunyin(赋值1,2,3) age(赋值1,2,3,4) 分别是2、3、4分类变量,我将计算这几个的OR值和置信区间。
Proc genmod输出OR值及置信区间需要在estimate步增加exp选项,方可输出想要的结果,但具体如何写呢?目前网上没有找到,自己研究了很长时间,终于明白了,今天给大家免费分享。
我和别人不一样,先看代码和结果,再给你讲格式如何写:
下面是代码:
proc genmod data=mydata desc;
class xinxueguan(ref='0') diqu(ref='1') sex(ref='1') hunyin(ref='1') age(ref='1');/*分类变量放到class语句后*/
model xinxueguan =Bmi1 diqu sex hunyin age/dist=binomial link=logit;
/*dist=binomial link=logit 表示拟合logistic模型*/
/*sex变量*/
estimate 'sex2' sex 1 -1/exp;
/*huiyin变量*/
estimate 'huiyin2' hunyin 1 0 -1/exp;
estimate 'huiyin3' hunyin 0 1 -1/exp;
/*age变量*/
estimate 'age2' age 1 0 0 -1/exp;
estimate 'age3' age 0 1 0 -1/exp;
estimate 'age4' age 0 0 1 -1/exp;
quit;
下面是结果图:
那么根据上面这个图的注释,可以得到我们想要的结果。
下面来说estimate的写法:
基本格式如下:
estimate '自定义的标签名' 变量名 这里是写一串对比的数/exp;
/*sex变量*/
estimate 'sex2' sex 1 -1/exp;
/*huiyin变量*/
estimate 'huiyin2' hunyin 1 0 -1/exp;
estimate 'huiyin3' hunyin 0 1 -1/exp;
我们结合下图的最大似然估计来看一下,发现每个变量的参照组都在最下面,那么 estimate进行对比的的那串数字写法和这个其实有一定关系的。
在estimate里面,对照要写成-1,我们希望计算的需要写成1,其他写成0
对于二分类,我们估计sex=2的OR值,由于是二分类变量,需要写成 1 -1;
对于三分类,我们估计huiyin=2和3的OR值,由于是三分类变量,
huiyin=2 写成 1 0 -1 这里可以发现huiyin=2在最大似然估计里面处于最上面,所以1写在最前面
Huiyin=3 写成 0 1 -1这里可以发现huiyin=3在最大似然估计里面处于中间,所以1写在中间
对于四分类,我们估计age=2\3\4的OR值,由于是四分类变量,
age=2 写成 1 0 0 -1 这里可以发现age=2在最大似然估计里面处于最上面,所以1写在最前面
age=3 写成 0 1 0 -1这里可以发现age=3在最大似然估计里面处于中间第1位,所以1写在中间第1位,也就是第2位
age=4 写成 0 0 1 -1这里可以发现age=4在最大似然估计里面处于中间第2位,所以1写在中间第2位,也就是第3位
总结,我们可以发现,最后几分类就写几位,然后最后一位是对照,写成-1,
其他的用1和0填充,需要估计的值是第几位,1就写在第几位,其他位置用0填。
分类变量几类 | 写法 |
2 | 1 -1 |
3 | 1 0 -1 0 1 -1 |
4 | 1 0 0 -1 0 1 0 -1 0 0 1 -1 |
5 | 1 0 0 0 -1 0 1 0 0 -1 0 0 1 0 -1 0 0 0 1 -1 |
6 | 1 0 0 0 0 -1 0 1 0 0 0 -1 0 0 1 0 0 -1 0 0 0 1 0 -1 0 0 0 0 1 -1 |