天天看点

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

分析分类数据

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

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;
001091111232
002452222422
003351324442
004271111121
005682132333
006651243425
;
PROC FREQ DATA=QUEST;
   TABLES GENDER -- AGEGRP;
RUN;

        
sas统计分析学习笔记(三)
sas统计分析学习笔记(三)
(一些输出结果)

 还有一种不生成新变量的情况下重新编码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 DEWEY
F TRUMAN
M TRUMAN
M DEWEY
F TRUMAN
;
PROC FREQ DATA=ELECT;
 TABLES GENDER CANDID
        GENDER*CANDID/CHISQ;***输出列联表,并进行卡方检验
RUN;
           
sas统计分析学习笔记(三)
sas统计分析学习笔记(三)
sas统计分析学习笔记(三)

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 90
DRUG DEAD 10
PLACEBO ALIVE 80
PLACEBO DEAD 20
;
PROC FREQ DATA=CHISQ;
   TABLES GROUP*OUTCOME / CHISQ;
   WEIGHT COUNT;
RUN;
           

得到结果部分输出:

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

必须要加上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 6
10 20 30 40
;
PROC FREQ DATA=CHISQ;
   BY N;
   TABLES ROW*COL / CHISQ;
   WEIGHT COUNT;
RUN;
           
sas统计分析学习笔记(三)
sas统计分析学习笔记(三)

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 32
N P 15
P N 30
P P 23
;
PROC FREQ DATA=MCNEMAR;
TABLES BEFORE*AFTER/AGREE;
WEIGHT COUNT;
RUN;
           
sas统计分析学习笔记(三)
sas统计分析学习笔记(三)
sas统计分析学习笔记(三)

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

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

结果
案例 对照
接触 50 20
100 130

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

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

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

结果
心脏病 无心脏病
胆固醇 20 80
15 135

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

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