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=0x2=0x3=0,表示A型血

        –x=2时:x1=1x2=0x3=0,表示B型血

        –x=3时:x1=0x2=1x3=0,表示AB型血

        –x=4时:x1=0x2=0x3=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
      • 值越大,表示模型越优
  • 模型诊断

    • 多重共线,即自变量之间高度相关
      • 容忍度(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),表示以第一类、最后一类或其中的某一类作为参照组
  • 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;

注定是幸福

posted @ 2020-06-23 22:12  小杨的冥想课  阅读(3339)  评论(0编辑  收藏  举报