BookmarkSubscribeRSS Feed

[SAS/ R ] 이상치 파악 - IQR

Started ‎04-29-2024 by
Modified ‎04-29-2024 by
Views 709

 

Q. Titanic 데이터 중 Fare(요금) 변수의 이상치를 확인하려고 합니다.

이상치의 기준은 IQR을 기준으로 Q1 - 1.5*IQR 보다 작거나 Q3 + 1.5*IQR 보다 클 경우에 이상치라고 판단합니다.

Fare 요금의 이상치 중 성별이 여자인 데이터를 구합니다.

 

image (2).png

 

참조: https://docs.oracle.com/cloud/help/ko/pbcs_common/PFUSU/insights_metrics_IQR.htm#PFUSU-GUID-CF37CAEA...

 

 

 

타이타닉 데이터의 칼럼에 관한 설명입니다.

Pclass - 티켓 클래스. (1 = 1st, 2 = 2nd, 3 = 3rd)

Name - 탑승객 성명

Sex - 성별

Age - 나이(세)

SibSp - 함께 탑승한 형제자매, 배우자 수 총합

Parch - 함께 탑승한 부모, 자녀 수 총합

Embarked - 탑승 항구

Fare - 탑승 요금

Ticket - 티켓 넘버

Cabin - 객실 넘버

[R]

 
df <- read.csv('/content/titanic.csv') #1
library(dplyr) #2.

df %>% 
  mutate(Q1=fivenum(Fare)[2],Q3=fivenum(Fare)[4],IQR=Q3-Q1) %>% 
  filter((Fare<Q1-1.5*IQR | Q3+1.5*IQR>Fare) & Sex=='female') %>% 
  nrow

 

1. read.csv

 

파일을 불러오는 명령문

 

2. library(dplyr)

 

R은 오픈소스 프로그램으로 많은 유저들이 통계 도구들을 만들어 온라인 상에 무료로 기능을 쓸 수 있게 배포합니다.

패키지를 사용하기 위해서는 1) 패키지를 설치하고 2) 패키지를 로드 합니다.

1) insall.package(dplyr): 처음에 패키지를 설치하기 위해서 사용하는 명령문.

2) library(dplyr): 패키지를 설치한 후, 패키지를 불러오기 위한 명령문

dplyr 이란 패키지를 불러옵니다.

dplyr 패키지는 데이터 전처리에 특화된 패키지로 데이터를 처리하는 함수군으로 구성되어 있습니다.

%>% 체인 연산자 기호와 함께 데이터 전처리에서 사용됩니다.

 

3. mutate

 

여러 파생변수를 만들 수 있는 명령문

 

mutate (dataframe, 새로운 column명 = 기존 column을 조합한 수식)

 

mutate 함수는 위와 같은 Syntax를 사용하며 변수명만 입력하여 새로운 변수를 만들 수 있어 코드가 간결해진다는 장점이 있습니다.

4. fivenum

'최소값, 1사분위(Q1), 중위수, 3사분위, 최대값'을 추출합니다.

비슷한 function으로 summary 함수가 있지만, summary 의 경우에는 평균값도 같이 추출합니다.

5. filter

조건에 맞는 데이터만 필터링 해서 결과값을 추출합니다.

dplyr 패키지 안에 있는 함수로 조건절에 해당합니다.

[SAS]

 

/* 1. */
proc import datafile="titanic.csv" out=titanic
    dbms=csv replace;
    getnames=yes;
run;

/* 2. */
proc means data=titanic noprint;
    var fare;
    output out=stats
        q1=q1
        q3=q3;
run;

/* 3. */
data outliers;
    set stats;
    lower_limit = q1 - 1.5*(q3-q1);
    upper_limit = q3 + 1.5*(q3-q1);
    if fare < lower_limit or fare > upper_limit;
run;

/* 4. */
proc freq data=outliers;
    where sex = 'female';
    tables sex / nocum;
run;

 

1. PROC IMPORT

 

외부 데이터를 불러오는 명령문입니다.

DATAFILE = : 파일 위치 또는 파일명을 지정.

DBMS = : 파일 형식을 설정.

OUT = : 원본 데이터는 그대로 유지되고, 원하는 데이터 형식의 데이터를 생성합니다.

REPLACE : 이미 데이터가 존재하면 데이터 세트를 덮어쓰는 것 입니다. 코드를 실행할 때마다 데이터 세트의 이름을 변경하거나 삭제할 필요가 없어서 실행 단계를 단순화 할 수 있습니다.

getnames: 첫번째 행에 변수 명이 포함되어 있는 경우 사용

2. PROC MEAN

통계적 요약을 수행하는 명령문입니다.

DATA = : 작업할 데이터 셋 지정

Noprint: 결과를 출력하지 않는 옵션입니다.

var: 분석할 변수를 지정.

OUTPUT OUT = stats : stats라는 dataset을 생성.

q1 q3 : 각각 Q1과 Q3를 저장할 변수 이름을 설정한 것 입니다.

즉, fare 변수의 사분위수 Q1, Q3가 계산되고, 그 결과가 stats이라는 새로운 데이터셋에 저장됩니다.

 

 

3. Data Outliers ~

새로운 데이터셋인 outliers를 정의합니다.

set titanic: titanic 데이터셋을 순차적으로 읽음.

lower_limit = : 이상치의 하한값을 계산 및 지정

upper_limit = : 이상치의 상한값 계산 및 지정

if fare < lower_limit or fare > upper_limit :lower_limit보다 작거나 upprt_limit보다 크면 이상치를 설정해서 outliers 데이터셋에 포함시킵니다.

 

 

4. Proc Freq

 

빈도 분석을 위한 명령문으로 outliers 데이터셋을 분석합니다.

where sex = 'female' : 조건절로 sex 변수가 female 인 행들만 선택합니다.

table sex / nocum : sex 변수를 기준으로 빈도표를 작성합니다. nocum 옵션은 누적 백분률을 출력하지 않도록 설정하는 것 입니다.

 

Version history
Last update:
‎04-29-2024 08:07 AM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags