sas统计分析学习笔记(三)

来源:互联网 发布:22端口liux教学 编辑:程序博客网 时间:2024/06/07 18:32

分析分类数据

一.列举变量的三种方法:

1.直接罗列变量

 2.variable_name_1 -- variable_name_2表示包含了数据集从variable_name_1到variable_name_2之间依次排序的所有变量。

 3.有相同字根的变量可以使用ROOTn-ROOTm,如果我们记录了50个选择题,则可以命名为QUES1、……、QUES50

二.添加标签

1.为变量添加标签,利用LABEL语句给每个变量加上标签;

2.为变量值添加标签:第一步,为每个变量定义变量值的内容;第二步,用FORMAT语句把变量名和定义的格式语句连接

在format语句中,每个格式名后应有一个(.)句号

3.需要年龄组而不是实际年龄时,在定义格式里写出年龄分组,在input语句里建立新的关于年龄分组的变量,并运用if-then语句写各年龄落在哪一组,label语句里注明关于年龄分组变量的释义。

PROC FORMAT;  VALUE $SEXFMT '1'='Male'            '2'='Female'OTHER='Miscoded';  VALUE $RACE '1'='White'          '2'='African AM.'           '3'='Hispanic'       '4'='Other';  VALUE $OSCAR '1'='Single'           '2'='Married' '3'='Widowed' '4'='Divorced';  VALUE $EDUC  '1'='High Sch or Less'           '2'='two Yr. College' '3'='Four Yr. College' '4' = 'Graduate Degree';  VALUE LIKERT   1 = 'Str Disagree'            2 = 'Disagree'            3 = 'No opinion'            4 = 'Agree'            5 = 'Str Agree'   VALUE AGEFMT   1 = '0-20'            2 = '21-40' 3 = '41-60' 4 = 'GREATER THAN 60';   ***对定义变量名的格式run;
DATA QUEST;   INPUT ID        $ 1-3          AGE         4-5          GENDER    $   6          RACE      $   7          MARITAL   $   8          EDUCATION $   9         PRESIDENT    10          ARMS         11          CITIES       12;      IF AGE GE 0 AND AGE LE 20 THEN AGEGRP = 1;      ELSE IF AGE GT 20 AND AGE LE 40 THEN AGEGRP = 2;      ELSE IF AGE GT 40 AND AGE LE 60 THEN AGEGRP = 3;      ELSE IF AGE GT 60 THEN AGEGRP= 4 ;  LABEL MARITAL="Marital Status"        EDUCATION="Education Level"PRESIDENT="President Doing a Good Job"ARMS="Arms Budget Increase"CITLES= "Federal Aid to Cities";   ***为变量定义标签  FORMAT GENDER       $SEXFMT.         RACE         $RACE. MARITAL      $OSCAR. EDUCATION    $EDUC. PRESIDENT ARMS CITLES LIKERT.;   ***用FORMAT语句把变量名和定义的格式语句连接DATALINES;001091111232002452222422003351324442004271111121005682132333006651243425;PROC FREQ DATA=QUEST;   TABLES GENDER -- AGEGRP;RUN;
(一些输出结果)
 还有一种不生成新变量的情况下重新编码AGE

PROC FORMAT;  VALUE AGROUP LOW-20 = '0-20'               21-40 = '21-40'   41-60 = '41-60'   61-HIGH='GREATER THAN 60'   .     ='DID NOT ANSWER'   OTHER ='OUT OF RANGE';run;
一旦定义了格式,我们就能把格式和变量关联起来。如果只想在proc freq里重编码,就将format语句放在proc步骤里:

PROC FREQ DATA=QUEST; TABLE AGE; FORMAT AGE AGROUP.; RUN;


三.列联表

1.双向列联表
DATA ELECT;   INPUT GENDER $ CANDID $ ;   ***Note: only sample data here;DATALINES;M DEWEYF TRUMANM TRUMANM DEWEYF TRUMAN;PROC FREQ DATA=ELECT; TABLES GENDER CANDID        GENDER*CANDID/CHISQ;***输出列联表,并进行卡方检验RUN;




2.生成多元表格的捷径:
TABLES (PRESIDENT ARMS CITIES)* AGEGRP;
以上语句将建立AGEGRP与三个变量的交叉表,一共生成三个表格,当然也可以分开写成
TABLES PRESIDENT*AGEGRP ARMS*AGEGRP CITIES*AGEGRP的形式
同样可以写TABLES  (PRESIDENT ARMS) * (AGEGRP GENDER),这将生成4个表格。


3.当已经有列联表格数据时,对表格进行卡方检验过程如下:
DATA CHISQ;      INPUT GROUP $ OUTCOME $ COUNT;DATALINES;DRUG ALIVE 90DRUG DEAD 10PLACEBO ALIVE 80PLACEBO DEAD 20;PROC FREQ DATA=CHISQ;   TABLES GROUP*OUTCOME / CHISQ;   WEIGHT COUNT;RUN;
得到结果部分输出:

必须要加上weight 语句,没有weight语句出现的观测值将都是1.

4.多个表格卡方检验的程序:

DATA CHISQ;   N + 1;   DO ROW = 1 TO 2;      DO COL = 1 TO 2;         INPUT COUNT @;      OUTPUT;      END;   END;DATALINES;3 5 8 610 20 30 40;PROC FREQ DATA=CHISQ;   BY N;   TABLES ROW*COL / CHISQ;   WEIGHT COUNT;RUN;




5.配对样本的McNemar检验

例如判断观看禁烟广告前后对人们吸烟态度的影响,需要在proc freq里的table语句后面加/AGREE得到McNemar卡方统计量和Kappa统计量,

当McNemar的p值小于0.05时,认为禁烟广告有助于改变人们的吸烟态度

对已有列联表计算McNemar卡方统计量:

PROC FORMAT;VALUE $OPINION 'P'='Positive'               'N'='Negative';run;DATA MCNEMAR;LENGTH BEFORE AFTER $1; ***给变量设定固定长度1,只需要1个字节来存储,如果不设置,将分配8个字节存储;INPUT BEFORE $ AFTER $ COUNT;FORMAT BEFORE AFTER $OPINION.;DATALINES;N N 32N P 15P N 30P P 23;PROC FREQ DATA=MCNEMAR;TABLES BEFORE*AFTER/AGREE;WEIGHT COUNT;RUN;



Kappa统计量一般用于测量两个评分者之间的一致性
,如两个医生对患者的诊断结果,Kappa总是小于等于1的,越趋近于1,一致性越高。


6.针对案例-对照设计,优势比是常用的统计量

  结果   案例对照接触是5020 否100130

从表格看出案例组中接触苯的人的百分比更高,案例组苯接触的优势为50/100,对照组的优势为20/130,优势比为(50/130)/(20/130)

运行时在proc freq里的table后加/CHISQ CMH

对于群组研究,相对风险统计量更合适

  结果   心脏病无心脏病胆固醇高2080 低15135高胆固醇的病人中,心脏病发生率是20/100,低胆固醇的病人中,心脏病发生率是15/135,发生率之比叫做相对风险。

计算相对风险运行时在proc freq里的table后加/CMH





原创粉丝点击