Logistic回归分析
---------------------Logistic回归分析及SAS程序的实现------------------------
logistic知识点补充
-
logistics中OR值与β的关系:
- ORx1 =eβ1
-
哑变量
-
当自变量为分类变量时,由于无序多分类变量的表示仍然为1,2,3,4....这与等级变量无法区分开来,因此此时需要借助哑变量进行分析。
-
例如:血型变量x为A、B、AB、O四个值,在logistic回归分析时,需将变量x转换为3个虚拟变量
-
若以A型血为参照组,3个虚拟变量分别为x1、x2、x3,则取值为:
–x=1时:x1=0,x2=0,x3=0,表示A型血
–x=2时:x1=1,x2=0,x3=0,表示B型血
–x=3时:x1=0,x2=1,x3=0,表示AB型血
–x=4时:x1=0,x2=0,x3=1,表示O型血
将3个虚拟变量x1、x2、x3同时纳入logistic回归模型,可得3个回归系数β1、β2、β**3
-
-
SAS程序的分析思路
-
分析前准备
-
–连续变量:考虑转化为分类变量,便于解释
–二分类变量:可直接进入模型分析
–多分类变量:
-
logit p**与自变量之间符合线性关系时,直接纳入
-
logit p**与自变量之间不符合线性关系时,考虑用哑变量形式纳入*
-
-
-
正式分析
- 首先进行单因素分析,对自变量进行初筛
- 进行多因素分析,理清各个自变量之间的关系
-
正式分析
- 参数估计:最大似然法
-
初步建立模型
-
模型评价(拟合优度检验),此时H0:模型很好的拟合了实际,我们希望卡方值越小越好,即P值越大越好
- Pearson χ2 ——比较预测值和观测值的差别
- χ2值越小越好
- Deviance —— 比较饱和模型和现有模型的差别
- Deviance值越小,现有模型与饱和模型的偏差越小,拟合效果越好
- HL指标 ——用于模型中含有连续自变量的情形
- 如果模型中自变量非常多,尤其是纳入连续自变量时,变量组合数会急剧增加,此时pearson χ2和Deviance不再适用于模型评价,可采用HL统计量评价
- χ2检验不显著表示拟合较好,反之表示拟合不好
- AIC、SC ——用于多个模型之间的拟合优度比较
- 值越小表示模型拟合越好
- 广义确定系数R2 ——自变量对因变量的解释能力
- 值越大,表示自变量对因变量的解释能力越强
- 校正决定系数R2adj
- 值越大,表示模型越优
- Pearson χ2 ——比较预测值和观测值的差别
-
模型诊断
- 多重共线,即自变量之间高度相关
- 容忍度(Tol):小于0.1时,可能存在共线性
- 方差扩大因子(VIF):大于10时,可能存在共线性,其为Tol的倒数
- 条件指数(collin):大于10存在共线性,大于30存在严重的共线性
- 异常点诊断(当数据较多时,直接看图)
- 离群点的诊断
- Pearson残差、Deviance残差、Student残差:绝对值大于2
- 高杠杆点的诊断
- 杠杆值hii:大于2(k+1)/n:k为自变量个数
- 强影响点的诊断(待考究,一般不常用,大部分直接看图形找其离趋势点)
- DFFITS
- Cook‘D
- 离群点的诊断
- 多重共线,即自变量之间高度相关
-
建立最终模型
- 根据自变量的类型,解释 βi 的实际含义
- OR=eβ,反映了暴露与非暴露相比结局发生的风险有多高
SAS程序的实现
- 基本程序框架
proc logistic <选项>;
class 自变量 </选项>;
model 因变量=自变量 </选项>;
exact “标签”<截距><自变量></选项>;
freq 变量;
run;
-
logistic语句的常用选项
-
proc logistic 选项
-
descending(可缩写为desc),将默认的较小值与较大值的比较改为较大值与较小值的比较,注:只要是把所关心的发病情况定为1的就得使用desc进行翻转
- E.g. 患病y=1,未患病y=0,则需要这一选项
-
plots(only)= 绘制图形
■=all:输出所有的图
■=effect:多分类自变量与概率P是否为线性关系,
■=(effect(link)):多分类自变量与logit(P)的关系,自己试了试感觉和effect没什么区别,不知道教材为什么要这样写·
- link后加 join=yes:将生成的散点图用直线进行连接
-
class选项(主要用于无序分类变量)
- 通过 param= 和 ref= 两个选项产生虚拟变量,并根据 ref= 指定参照组
- param= 指定分类变量的参数估计方法,一般指定 param=reference
- ref= 可指定 ref=first、ref=last或 ref=“某类别赋值”(如0/1),表示以第一类、最后一类或其中的某一类作为参照组
- 通过 param= 和 ref= 两个选项产生虚拟变量,并根据 ref= 指定参照组
-
-
-
model 语句的常用选项
-
模型评价
- lackfit:输出 HL 拟合优度指标
- scale语句
- 可用于过离散的校正
- 注:过离散主要表现为估计方差大于名义方差,如何判断其为过离散:在pearson的拟合优度检验中其值/自由度>1,便可认为其过度离散
- 可通过scale=pearson或scale=deviance进行调整。通常情况下,如果没有过度离散,直接选择scale=none即可
- aggregate:与scale= 语句合用,可输出Pearson χ2和Deviance值
- 可用于过离散的校正
-
模型诊断
- influence
- iplots
- 输出各诊断指标的诊断图,以便更直观地发现异常点
案例
/*评价乳腺增生(y,二分类)的影响因素:年龄(age)、出产年龄(chage)、妊娠次数(rs)、流产次数(lc)、是否母乳喂养(mr)*/
data fh;
input y age chage rs lc mr;
cards;
.......
.......
;
proc logistic plots(only)=effect;,
class rs(param=ref ref='1');
model y(event='1') = rs;
run;
proc logistic plots(only)=effect(link join=yes);
class lc(param=ref ref='0');
model y(event='1') = lc;
run;
proc logistic plots(only)=effect;
class lc(param=ref ref='0');
model y(event='1') = lc;
run;
/*单因素分析*/
PROC LOGISTIC desc; /*desc改变默认的求解顺序,对y=1求解*/
MODEL y=age;
PROC LOGISTIC desc;
MODEL y=chage;
PROC LOGISTIC desc;
CLASS rs(param=reference ref=first);
MODEL y=rs;
PROC LOGISTIC desc;
MODEL y=lc;
PROC LOGISTIC desc;
MODEL y=mr;
RUN;
/*多因素分析*/
PROC LOGISTIC desc;
CLASS rs(param=reference ref=first);
MODEL y=chage rs lc mr; /*去掉年龄*/
RUN;
/*模型评价*/
PROC LOGISTIC desc;
CLASS rs(param=reference ref=first);
MODEL y=chage rs lc mr /aggregate;
RUN;
/*异常点检查*/
PROC LOGISTIC desc;
CLASS rs(param=reference ref=first);
MODEL y=chage rs lc mr/influence iplots;
/*选项influence对各种异常点进行诊断分析,iplots输出相应的诊断图*/
RUN;
/*共线性检查*/
Proc reg;
model y=chage rs lc mr /tol vif ;
/*选项tol和vif输出容忍度和方差扩大因子*/
run;
/*重新多因素分析*/
PROC LOGISTIC desc;
MODEL y=chage lc mr /aggregate scale=none;
/*选项aggregate和scale输出Pearson χ2和Deviance值*/
RUN;
/*过离散校正*/
PROC LOGISTIC desc;
MODEL y=chage lc mr /aggregate scale=pearson;
/*选项aggregate和scale输出Pearson χ2和Deviance值,scale=pearson表示用Pearson χ2统计量对过离散现象进行调整*/
RUN;
/*交互作用分析*/
PROC LOGISTIC desc;
MODEL y=chage lc mr chage*mr/aggregate scale=pearson expb;
/*logistic回归中的交互作用直接以“*”将两个或多个变量连接起来,当作自变量分析即可。Expb输出OR值,scale=pearson表示采用pearsonχ2统计量对过离散进行调整*/
RUN;
注定是幸福