타이타닉사건은 1912년 4월 10일 영국에서 출항해 프랑스에 기항한 후 미국 뉴욕을 향해 출항했고, 1912년 4월 14일 밤 11시 40분에 침몰한 사건입니다.
어떤 사람들이 생존할 가능성이 더 높았는지에 대해 모델을 구해보고자 합니다.
승객의 정보(나이, 성별, 객실 등급 등)를 사용하여 사망/생존을 예측하게 됩니다.
데이터는 모델을 학습시키기 위한 train.csv 데이터 1개와 모델로 실제 생존율을 맞춰보는 test.csv 데이터 1개로 나뉘어 있습니다. (데이터는 첨부파일에 올려놨습니다.)
Passenger ID : 각 승객의 고유 번호
Survived : 생존 여부 ( 0: 사망, 1: 생존)
Pclass : 티겟의 승선권 클래스 ( 1 = 1등석, 2 = 2등석 , 3 = 3등석 )
Name : 이름
Sex : 성별
Age : 나이
SibSp : 동반한 sibling(형제자매)와 Spouse(배우자)의 수
Parch : 동반한 Parent(부모) Child(자식)의 수
Ticket : 티켓의 고유넘부
Fare : 티켓의 요금
Cabin : 객실 번호
Embarked : 승선한 항(제주항, 부산항, 인천항과 같은 항)
이러한 데이터로 SAS의 Logistic 모델과 머신러닝으로 분석을 진행하고자 합니다.
Proc Import를 사용하여 csv 파일을 불러옵니다.
%web_drop_table(WORK.IMPORT1);
FILENAME REFFILE '/folders/myfolders/sasuser.v94/train.csv';
PROC IMPORT DATAFILE=REFFILE
DBMS=CSV
OUT=WORK.IMPORT1;
RUN;
PROC CONTENTS DATA=WORK.IMPORT1; RUN;
%web_open_table(WORK.IMPORT1);;
RUN;
- 1) Proc Content
WORK.IMPORT1 로 데이터를 불러옵니다.
Proc Content를 활용하여 데이터 셋의 갯수, 변수 갯수, 변수 속성 등 데이터의 속성에 대해 확인 할 수 있습니다.
/*데이터 기본 정보 - Proc Content */
Proc Contents data= WORK.IMPORT1;
run;
데이터는 891개, 열은 12개의 칼럼으로 구성되어 있습니다.
타겟 변수인 survived변수에서 0이면 사명 1이면 생존이다.
총 342명이 생존하고 약 38%인 것을 알 수 있습니다.
/* 빈도 확인 */
Proc Freq data= work.import1;
table Survived;
run;
Proc Freq data= work.import1;
table Survived*sex;
run;
2차 빈도표 작성 하여 두 변수간 빈도나 비율을 확인합니다.
타겟변수인 Survived와 성별간 빈도와 비율을 확인합니다.
결과를 보면 남성보다 여성에 대한 생존률이 2배정도 높다라는 것을 알 수 있습니다.
-1 ) Data 시각화 - 단일 히스토스램
proc sgplot data = work.import1;
vbar Survived / datalabel missing;
label Survived = "Survived";
run;
vbar는 가로축의 변수를 설정하는 옵션이고 타겟의 빈도를 확인하기 위해 Survived를 입력합니다.
옆에 datalabel을 입력하면 빈도값이 그래프 위에 뜨게 됩니다. missing을 입력하게 되면 결측값에 대한 빈도도 확인할 수 있습니다. label 구문은 축의 제목을 설정하는 옵션입니다.
누적그래프를 그리려고 하면 단일 히스토그램 문에 pctlevel = group과 group문을 추가하면됩니다.
title "Survived VS Gender";
proc sgplot data = work.import1 pctlevel=group;
vbar sex / group= Survived stat=percent missing;
label Survived = "Gender of Survived";
run;
0 (파란색)이 사망이고 1(빨간색)이 생존일 때, 여성의 생존률이 높은 것을 확인 할 수 있습니다.
SAS에서는 박스플롯을 그리기 전에 데이터를 정렬해야 합니다.
데이터 정렬은 Proc sort를 활용해서 정렬할 수 있고, Proc Box Plot을 활용하면 Boxplot 그래프를 그릴 수 있습니다.
proc sort data = work.import1 out=sorted;
by survived descending Age;
run;
title 'Boxplot for Age VS Survived';
proc boxplot data=sorted;
plot Age*Survived;
run;
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!