관리 메뉴

느루독서심리연구센터(010-2788-3025)

[빅데이터 통계 R 프로그램(7)] 데이터 분석 시작! (04) 아니와 월급의 관계 본문

논문 잘 쓰는 법/통계 R 공부하자

[빅데이터 통계 R 프로그램(7)] 데이터 분석 시작! (04) 아니와 월급의 관계

느루독서심리연구센터(010-2788-3025) 2018. 1. 29. 18:08
728x90
SMALL

이 글은 한국상담학신문(265-21-636)에서 발행하는 글입니다.



key word: R, R Studio, 데이터 분석, 실전 데이터 분석


여러분은 저번 시간, 성별에 따른 월급 데이터를 분석해 보았습니다. 그 결과 아직 이유는 잘 모르지만 남성의 월급이 여성의 2배 이상으로 나타난다는 것을 알게 되었고, '성별에 따른 월급 차이가 있을 것이다.'라는 설에 한층 힘이 실렸습니다. 


이번에는 '나이와 월급의 관계'에 대해 한 문단을 쓰려고 합니다. 이에 여러분은 '몇 살 때 월급이 가장 많을 것인가를 생각하게 되었고, 이에 대한 데이터 분석을 하고자 합니다. 분석 절차는 다음과 같습니다.   



1. 변수 검토 및 전처리


나이와 월급의 관계를 분석하기 위해서는 당연히 나이 변수와 월급 변수가 필요하겠죠. 그렇다면 각각을 검토하고 전처리해보도록 하겠습니다.


-나이변수


한국복지패널데이터에는 나이 변수가 없고, 태어난 연도 변수만 있습니다. 이 때문에 태어난 연도를 이용해서 나이 변수를 만들어야 됩니다. 먼저 태어난 연도 변수를 검토한 후 나이 변수를 만들어 보겠습니다.



class() 는 괄호 안의 값이 어떤 형식인지를 알려주는 명령어입니다. 이 경우 birth라는 연도 변수는 numeric으로 연속변수의 형태라는 것을 알 수 있습니다. 다음으로summary()는 괄호 안의 값을 요약해 보여줍니다. 위를 보면 현재 데이터에서 최소값은 1907년, 최대값은 2014년인 것을 알 수 있습니다.


코드북을 보면 태어난 연도는 1900-2014 사이의 값을 지니고, 모름/무응답의 경우 9999로 입력되어 있다고 합니다. 이 정보를 바탕으로 나이를 구하기 위한 전처리 작업을 진행해봅시다. 



 table(is.na(~~~~))를 찬찬히 살펴봅시다. table은 앞에서도 괄호 안의 데이터를 범례에 맞춰표로 만들어 주는 명령어였습니다. 괄호 안에는 is.na()라는 명령어가 들어갔는데 이 명령어는 데이터가 이상치를 가진다면 TRUE값으로, 정상값 범위 내라면 FALSE값으로 개수를 세어주는 명령어입니다.


즉 이번 경우 모든 값이 FALSE로 나타났기 때문에 이상치가 데이터 내에 없다고 볼 수 있는 것입니다.


만약 이상치가 발견된다면 아래와 같이 전처리한 후 다음 작업을 진행합니다.



이제 나이 변수를 만들어 봅시다. 태어난 연도변수를 이용해 나이 변수를 만들면 되는데요. 

2015년도에 조사가 된 자료이기 때문에 2015년에서 태어난 연도를 뺀 후 1을 더하면 조사 당시의 나이 값이 될 것입니다. 


다음과 같은 명령어로 나이 변수를 만들고 특징을 살펴봅시다. 



-월급변수


월급 변수에 대한 정리는 앞서 "데이터 분석 시작! (03) 성별별에 따른 월급차이"에서 했기 때문에 따로 할 필요가 없습니다. 한 번 더 되집어보고 싶으신 분들은 위 글을 참고해주세요. 

2. 관계 분석하기


먼저 나이별 월급 평균표를 만들어 봅시다.



명령어를 살펴봅시다. age_income이라는 새로운 데이터를 만들고 있습니다.


"fare_data %>%" :


먼저 fare_data에서 데이터를 가져와야 함을 알려줍니다.


"filter(!is.na(income)) %>%" :


그 후 이상치를 가지지 않는 월급(income) 데이터 만을 가져오라는 의미로 필터(filter) 명령어와 not(느낌표 : !), is.na()를 조합해서 쓰고 있습니다.


이 때 is.na()는 값이 이상치를 가질 때때 TRUE라고 알려주는 명령어입니다. 이상치를 가질 때 TRUE인 값에 '아니다'라는 의미의 not을 취했기 때문에, 이상치를 가질 때 FALSE라고 알려주게 됩니다.


즉 이상치는 FALSE라고 알려주는 것입니다. 이 때 필터는 괄호 안의 조건에 따라 참인 값만 가져오는 명령어입니다. 따라서 위 3가지, not(!), is.na(), filter()를 조합합한 결과는 이상치가 아닌 값들만 가져오라는 명령어가 되는 것입입니다.


"group_by(age) %>%" :


나이 값과 월급의 값을 함께 사용해야 하기 때문에 이 두 개의 값을 묶어두는 작업이 필요합니다. 따라서 '나이에 따라 묶어라'라는 명령어로 group_by(age)라는 명령어를 사용한 것입니다. 


"summarise(mean_income = mean(income))" :


안쪽의 명령어들부터 살펴봅시다. mean() 명령어는 괄호 안 값의 평균을 구하는 명령어입니다. 즉 우월급(income)의 평균을 구하는 것입니다. 그 후 mean_income이라는 새로운 범례를 만들 때 사용되는 것이기 때문입니다.


따라서 위의 명령어를 정리하면 'fare_data에서 이상치를 가지지 않는 월급 데이터를 가져와 나이 데이터를 범례로 연결한다. 그 후 새로운 범례로써 월급 평균을 만든다. 이렇게 만들어진 표의 이름은 age_income이다.'라는 명령이 되는 것입니다. 


head(age_income)은 위에서 만들어진 표를 출력하라는 의미입니다. 


그렇다면 위에서 만든 표를 토대로 그래프를 만들어 보겠습니다.  



명령어를 살펴봅시다. ggplot()은 괄호 안의 정보를 토대로 그래프를 그려주는 명령어입니다. 뒤쪽에 +로 붙어 있는 geom_line() 명령은 그래프의 모양을 결정하는 것이고요. 그렇다면 괄호 안 정보를 읽어보겠습니다. 


"data = age_income" :


먼저 그래프로 그릴 데이터를 정해주는 것입니다. 어떤 그래프를 그리더라도 데이터는 필수적이다 못해 기본적이기 때문이죠. 이번 경우에는 age_income이라는 데이터를 정리한 표를 사용한다는 의미로 위와 같은 명령을 썼습니다. 


"aes(x = age, y = mean_income)" :


aes는 축 정보를 지정해 주는 명령입니다. x축을 어떤 데이터로 할 것이인지, y축을 어떻게 할 것인지 등의 정보를 지정하는데요. 이번 경우에는 x축의 범례를 나이(age)로, y축의 범례를 월급의 평균(mean_income)으로 하겠다는 명령을 사용했습니다. 


이번 결과를 통해 여러분은 20대 초반 100만 원 가량의 월급을 받고, 이후 지속적인 증가를 보입니다. 50대 무렵 300만원 초반대로 가장 많은 월급을 받고, 이후 지속적으로 감소하는 추세를 보이다 70이후 20대보다 낮은 월급을 받게 된다는 사실을 알게 되었습니다. 


이 결과를 토대로 여러분은 다시 논문을 쓰기 시작했지만 이 자료로는 무엇인가 부족하단다는 느낌을 받았습니다. 그래서 여러분은 "어떤 연령대의 월급이 가장 많은가"라는 질문으로 다시 데이터를 분석하기로 했습니다. 이는 다음시간에 다뤄보도록 하겠습니다.  



-한국상담학신문-

여러분의 '광고 클릭' 한 번이 한국상담학신문사 운영에 많은 도움이 됩니다. 진심으로 감사드립니다. 건강한 가족회복, 개인회복을 위해 최선을 다하겠습니다!

제휴 및 강의 문의: 010-2788-3025


LIST
Comments