본문 바로가기
SAS

[SAS 프로그래밍 실습] 로직스틱 회귀 분석 [2편](Logistic Regression)

by 웰러맨 2022. 1. 4.
반응형

Logistic Regression

 

1. Introduction

이번에도 지난시간에 이어서 Logistic 회귀 실습을 진행해보겠습니다. 이번에는 모든 변수를 사용하여 Logistic을 구현하고, 교차 효과를 적용하고 그래프를 그려보겠습니다.

 

2. Data

저번 시간과 동일한 데이터를 사용하겠습니다.

 

<code1>

data Survival;

input ID Status Shock Malnutrition Alcoholism Age BowelInfarction;

datalines;

1 0 0 0 0 56 0

2 0 0 0 0 80 0

3 0 0 0 0 61 0

4 0 0 0 0 26 0

5 0 0 0 0 53 0

6 1 0 1 0 87 0

7 0 0 0 0 21 0

8 1 0 0 1 69 0

9 0 0 0 0 57 0

10 0 0 1 0 76 0

11 1 0 0 1 66 1

12 0 0 0 0 48 0

13 0 0 0 0 18 0

14 0 0 0 0 46 0

15 0 0 1 0 22 0

16 0 0 1 0 33 0

17 0 0 0 0 38 0

18 0 0 0 0 27 0

19 1 1 1 0 60 1

20 0 0 0 0 59 1

21 1 1 0 0 63 1

22 1 1 1 0 70 0

23 1 0 0 1 49 0

24 0 1 0 0 50 0

25 1 1 1 0 70 0

26 1 0 0 1 49 0

27 1 1 0 0 78 1

28 0 0 1 1 60 0

29 0 0 0 1 60 0

30 1 1 0 0 78 1

31 0 0 0 0 28 1

32 0 0 0 0 80 0

33 0 0 0 0 59 1

34 1 0 1 0 50 1

35 1 0 1 0 68 0

36 0 0 0 0 74 1

37 0 0 1 0 27 0

38 1 0 1 1 66 1

39 1 1 1 0 76 0

40 1 0 0 1 70 1

41 0 0 0 0 36 0

42 0 0 0 0 52 1

43 0 0 0 0 30 1

44 1 1 0 1 60 0

45 0 0 1 1 54 0

46 0 0 0 0 65 0

47 1 0 0 0 47 0

48 0 0 1 1 42 0

49 0 0 0 0 22 0

50 0 1 1 0 44 0

;

위 코드를 이용하여 데이터 셋을 생성합니다. University Edition에서 바로 생성해도 되고, SAS BASE를 이용하여 생성 후에 Import해도 됩니다.

 

 

 

3. Logistic Regression

저번 시간에는 단변량 분석을 통해 Logistic 회귀를 구현해 보았습니다. 이번 시간에는 Full Model 실습을 진행하겠습니다.

 

3.1 모델 생성

 

작업▶선형 모델▶이진 로지스틱 회귀

데이터▶Work.sepsis

역할▶반응 변수▶Status 추가, 관심이벤트▶1 선택

역할▶설명변수▶연속 변수▶ Shock, Malnutrition, Alcoholism, BowelInfarction

상단의 “모델” ▶사용자 정의 모델▶변수 전부 선택

 

<code2>

proc logistic data=WORK.SURVIVAL;

model Status(event='1')=Shock Malnutrition Alcoholism BowelInfarction Age/

link=logit technique=fisher;

run;

마찬가지로 코드에도 모든 변수를 추가합니다.

 

분석결과를 보면 카이스퀘어 검정을 통해 변수의 유의성을 확인할 수 있습니다. Age, Shock, Alcoholism이 설명에 있어 중요한 변수가 됩니다. 위의 추정된 계수들을 통해 최종적인 Logistic 회귀식을 세울 수 있습니다.

 

Second Example

 

4. data

데이터는 Goldberg의 정실 질환 설문으로부터 기록된 데이터입니다. GHQ란 General Health Questionnaire를 말합니다. GHQ_Score는 정신 상태 점수를 말합니다.

 

<code3>

data GHQ;

input GHQ_Score Sex$ n cn;

label n="Number of Case" cn="Number of Non-Case";

datalines;

 

0 F 4 80

1 F 4 29

2 F 8 15

3 F 6 3

4 F 4 2

5 F 6 1

6 F 3 1

7 F 2 0

8 F 3 0

9 F 2 0

10 F 1 0

0 M 1 36

1 M 2 25

2 M 2 8

3 M 1 4

4 M 3 1

5 M 3 1

6 M 2 1

7 M 4 2

8 M 3 1

9 M 2 0

10 M 2 0

;

분석을 위해 파라미터를 생성해보겠습니다. PrCase라는 변수, 총 사례 발견 횟수를 총 관찰 횟수로 나눈 값과 Total이라는 변수, 총 관찰 횟수를 정의하겠습니다. 생성 코드는 다음을 참고하시면 됩니다.

<code 4>

DATA GHQ_New;

set GHQ;

total = n+cn;

prcase=n/total;

run;

이제 GHQ_NEW 데이터를 통해 분석을 진행하도록 하겠습니다.

 

5. EDA

Scatter Plot을 그려서 데이터 탐색을 해보겠습니다.

작업▶그래프▶산점도

데이터▶GHQ_NEW

역할▶X축 : GHQ_Score, Y축 : prcase , 그룹 : SEX

<code5>

ods graphics / reset width=6.4in height=4.8in imagemap;

 

proc sgplot data=WORK.GHQ_NEW;

scatter x=GHQ_Score y=prcase / group=Sex markerattrs=(symbol=CircleFilled);

xaxis grid;

yaxis grid;

run;

ods graphics / reset;

그래프를 쉽게 보기 위해 markerattrs 옵션을 추가해주었습니다.

 

Logistic의 시그모이드와 비슷한 형태로 나왔습니다.

 

6. Grouped Logistic Model

이 그룹화된 두 성별 변수를 구분하여 Logistic을 구현해 보겠습니다. 또한 두 변수에 대한 교차 작용도 알아보겠습니다.

첫 번째 모델은

데이터▶반응 데이터는 이벤트 시행 횟수로 구성됩니다.박스 체크

데이터▶이벤트 개수▶n 추가 (Number of Case 변수)

데이터▶시행 횟수▶ total 추가

데이터▶설명변수▶분류변수▶sex 추가, 효과 모수화▶참조 코딩 선택

데이터▶설명변수▶연속변수▶GHQ_Score 추가

모델▶사용자 정의 모델▶두 변수 동시 선택▶완전 팩토리얼 선택

옵션▶도표▶기본 및 추가 도표 선택▶효과도표 선택

▶실행

<code6>

ods noproctitle;

ods graphics / imagemap=on;

 

proc logistic data=WORK.GHQ_NEW plots=(effect);

class Sex / param=ref;

model n / total=GHQ_Score Sex GHQ_Score*Sex / link=logit technique=fisher;

run;

 

 

두 번째 모델은, 위에서 GHQ_Score*Sex 변수를 제외시켜주면 됩니다.

모델▶사용자 정의 모델▶GHQ_Score*Sex 삭제

▶실행

 

6.1 비교

 

좌측은 Fulled Model이고, 우측은 교차 작용이 제외된 모델입니다. 모델 효율을 따져 보았을 때 교차 작용을 제외하는 것이 효율적으로 보입니다. (유의확률이 0.129이므로)

 

 

 

좌측은 Fulled 모델이고, 우측은 교차작용을 제외한 모델입니다. 그림으로만 보기에도, 교차작용을 제외한 모델이 그룹 간의 편향과 편차가 적어 보입니다.

 

 

7. Conclusion

University Edition의 큰 장점은 몇 번의 클릭으로 다양한 옵션과 파라미터를 조정할 수 있는 것입니다. 물론 코딩 또한 그리 복잡하지 않지만, 편한 인터페이스를 통해 분석 효율을 올려준다고 느낍니다. 다음 시간에는 1대1 Matched 연구 데이터에 대한 Logistic 실습을 진행해보겠습니다

 
반응형

댓글