主线—SAS习得

作者: 莫浪愁 | 来源:发表于2020-04-12 22:18 被阅读0次

    游戏背景

    主线任务-毕业论文

    小浪运用office初级与PPT讲解,坎坎扛过了开题报告试炼,抵抗住了各大长老的夺命找茬,期间虽然遭到隐藏boss的英语提问,但小浪凭借近期闲暇时光修炼的半吊子英语,幸运残血通关。
    按照以往玩家的经验来说,开题报告是最简单最轻松的一关,但没想到第一关就让小浪触发了隐藏boss,幸好通关,也算是因祸得福,解锁了【英语开题】隐藏成就。
    休整完毕,小浪重新载入主线任务,而这一关是“数据分析”。

    关卡目标:
    将两万多条数据进行统计分析,进行基础统计描述、变量与结局的关联初步分析(t检验和卡方检验)、单因素与多因素回归模型分析。
    技能要求:
    数据分析技能

    因为师父的要求,小浪选择了SAS9.4这款软件,下载完后,发现大小4.44G,看到这个数字,小浪不禁皱了皱眉,当然不是因为它是三个4,发音不吉利之类的原因,小浪可是个彻头彻尾的唯物主义者,整天把“世界是物质的”挂在嘴边,偶尔也会换换口味,说一说“子不语怪力乱神”。那为什么皱眉?当然是因为它太大了,听隔壁的小周说他用的R不到1个G,而且似乎R在之后的的科研任务当中适用的更多一些。

    SAS习得

    第一步

    确定输出目标:
    1.完成连续型变量的均数描述
    2.绘制离散型变量的交叉表
    3.进行两组数据变量与结局的差异性检验(连续变量t检验,离散变量卡方检验)
    4.进行单因素多因素logistics回归

    第二步

    寻找输入资源:
    秘籍两本:
    1.《SAS and R data Management,Statistical Analysis,and Graphics》
    2.《The Little SAS Book》(当然有中文版)

    第三步

    实践成果(更新中......):

    *文件导入;
    PROC IMPORT  DATAFILE= "C:\Users\99225\Desktop\2020sasdata\SJbaseline.xlsx" 
     OUT= shfl  DBMS=XLSX REPLACE;
    getnames=yes ;
    run;
    *添加4个新变量;
    data shfl_newvar;/*创建新数据集*/
        set shfl;/*从旧数据集中提取(保留)变量*/
        if index(var292,"脂肪肝")  then diease=1 ;
        else diease=0;/*筛选脂肪肝患者*/
        testdate=input('01/01/2017',mmddyy10.);
        testage=int(yrdif(var5,testdate,'age'));/*计算体检时年龄*/
        BMI=var289/(var288/100)**2;/*计算BMI*/
    run;
    proc print data=shfl_newvar;
    title "SHFL-NEWVAR";
    run;
     *统计描述均数;                                                                                                                                  
     data flmean;                                                                                                                         
     set shfl_newvar(keep=diease testage var288 var289 BMI var290 var291 var293-var306);                                            
     if diease=1;                                                                                                                           
     run;                                                                                                                                   
    proc means data=flmean;                                                                                                                 
        var testage var288 var289 BMI var290 var291 var293-var306;                                                                          
    run;                                                                                                                                    
    data nflmean;                                                                                                                           
     set shfl_newvar(keep=diease testage var288 var289 BMI var290 var291 var293-var306);                                            
     if diease=0;                                                                                                                           
     run;                                                                                                                                   
    proc means data=nflmean;                                                                                                                
        var testage var288 var289 BMI var290 var291 var293-var306;                                                                          
    run;  
    *统计描述交叉表; 
    data freq;                                                                                                                           
     set shfl_newvar(keep=diease  var2 var3  var6 var7 var9 var10 var12-var22);                                                                                                                                                                              
     run;                                                                                                                                   
    proc freq data= freq ;                                                                                                                
        tables  diease*(var2   var3  var6 var7 var9 var10 var12-var22 ) ;                                                                               
    run;
    

    实践成果(20200427更新):

    *20200427code更新文件导入;
    PROC IMPORT  DATAFILE= "C:\Users\99225\Desktop\2020sasdata\SJbaseline.xlsx" 
     OUT= shfl  DBMS=XLSX REPLACE;
    getnames=yes ;
    run;
    *添加11个新变量;
    data shfl_newvar;/*创建新数据集*/
        set shfl;/*从旧数据集中提取(保留)变量*/
        if index(var307,"+") then BIL="+";
        else BIL="-";/*1合并阴性(-)和-,添加BIL变量*/
        if index(var292,"脂肪肝")  then diease=1 ;
        else diease=0;/*2筛选脂肪肝患者,添加患病变量*/
        testdate=input('01/01/2017',mmddyy10.);/*3计算需要添加时期常量*/
        testage=int(yrdif(var5,testdate,'age'));/*4计算体检时年龄*/
        BMI=var289/(var288/100)**2;/*5计算BMI*/
        if 30>testage>=20 then agegroup=1;
        if 40>testage>=30 then agegroup=2;
        if 50>testage>=40 then agegroup=3;
        if 60>testage>=50 then agegroup=4;
        if 70>testage>=60 then agegroup=5;
        if testage>=70 then agegroup=6;/*6年龄分6段(此时需要看一下源数据testage的极值)*/
         if var290>=140 or var291>=90 then testh=1;
        else testh=0;/*7体检时是否高血压*/
        if var23=2 then smokeg1=0;
        if var23=1 and var26=2 then smokeg1=1;
        if var23=1 and var26=1 then smokeg1=2;/*8吸烟组1从不、曾经、现在*/
        if var23=2 then smokeg2=1;
        if 20>var25>=1 then smokeg2=2;    
        if 40>var25>=20 then smokeg2=3;    
        if 60>var25>=40 then smokeg2=4;
        if var25>=60 then smokeg2=5;/*9吸烟组2分5组(需要看一下源数据var25(每天吸烟几支)的极值)*/
        if var27=2 then drinkgp1=1;/*10饮酒组1从不喝酒(var27=过去是否饮酒 var29=过去12个月是否饮酒)*/
        if var27=1 and var29=2 then drinkgp1=2;/*饮酒组1曾经喝酒*/
        if var27=1 and var29=1 then drinkgp1=3;/*饮酒组1现在喝酒*/
        if drinkgp1=1 or drinkgp1=2 then drinkgp2=1;
        if drinkgp1=3 and  var30=0 then drinkgp2=1;
        if drinkgp1=3 and 6>var30>=1 then drinkgp2=2;
        if drinkgp1=3 and 11>var30>=6 then drinkgp2=3;
        if drinkgp1=3 and 16>var30>=11 then drinkgp2=4;
        if drinkgp1=3 and var30>=16 then drinkgp2=5;
        /*11饮酒频次分5组(var30需查看源数据的极值)*/
    run;
    proc print data=shfl_newvar;
    title "SHFL-NEWVAR";
    run;
     *表1-1人口学特征分布;                                                                                                                                  
     proc ttest data=shfl_newvar;/*年龄分布*/
    class diease;
    var testage;
    run;
    Proc freq data=shfl_newvar;                                                                                                                
        tables  diease*(agegroup var2 var3 var6 var7 var9 var10 )/CHISQ ; /*年龄组 性别 民族 文化程度 是否退休 职业类型分布*/                                                                        
    run;
    *表1-2相关合并症分布;                                                                                                                                 
    proc freq data= shfl_newvar ;                                                                                                                
        tables  diease*(testh var12-var22 )/CHISQ ;/*体检时高血压 相关合并症分布*/                                                                          
    run;
    *表1-3实验室指标和体检结果分布;                                                                                                                                  
     proc ttest data=shfl_newvar;
    class diease;
    var var288 var289 BMI var290 var291 var293-var306;/*身高 体重 BMI 收缩压 舒张压 实验室指标分布*/ 
    run;
    proc freq data= shfl_newvar ;                                                                                                                
        tables  diease* BIL/CHISQ   ;/*胆红素分布*/                                                                          
    run;
    *表1-4行为学特征分布;
    *吸烟;
     proc freq data= shfl_newvar ;                                                                                                                
        tables diease*( var23 smokeg1 smokeg2)/chisq  ;/*是否组,从不曾经现在组,每天吸烟量组*/                                                                          
    run;
    *饮酒;
      proc freq data= shfl_newvar ;                                                                                                                
        tables diease*( var27 drinkgp1 drinkgp2)/chisq  ;/*是否,从不曾经现在组,每周饮酒频次组*/                                                                          
    run;
    *体力活动;
    proc freq data= shfl_newvar ;                                                                                                                
        tables diease*( var39 var44 var49)/chisq  ;/*是否组*/                                                                          
    run;
    *沐浴饮水;
    proc freq data= shfl_newvar ;                                                                                                                
        tables diease*( var52-var66)/chisq  ;                                                                       
    run;
    proc means data= shfl_newvar ;                                                                                                                
        var var51  ;                                                                       
    run;
    

    20200427遗留问题:

    1.不同种酒精浓度标准确定,水与酒精密度确定。

    2.Excel中时间格式处理

    相关文章

      网友评论

        本文标题:主线—SAS习得

        本文链接:https://www.haomeiwen.com/subject/rrdvmhtx.html