分析分類資料
一.列舉變量的三種方法:
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;
(一些輸出結果)
還有一種不生成新變量的情況下重新編碼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;
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;
得到結果部分輸出:
必須要加上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;
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;
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