游戏化实验室

主线—SAS习得

2020-04-12  本文已影响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中时间格式处理

上一篇下一篇

猜你喜欢

热点阅读