zoukankan      html  css  js  c++  java
  • 我的SAS菜鸟之路8

    ---------------------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;
    

    注定是幸福

  • 相关阅读:
    如何使用反射技术获取泛型类的真实类型?
    applicationContext.xml文件如何调用外部properties等配置文件
    applicationContext.xml中的使用${}是代表什么意思?
    net.sf.json.JSONException: There is a cycle in the hierarchy!错误解决方案
    MySql中LongText字段对应Hibernate映射文件的设置(转)
    ckeditor的详细配置(转)
    XML-学习
    WSDL-学习总结
    ONVIF-WSDL
    sourceinsight相关配置
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/13184900.html
Copyright © 2011-2022 走看看