데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

[분석11기] 메르스 확산과 국내산업과의 연관관계 분석

데이터 이야기
작성자
dataonair
작성일
2016-11-16 00:00
조회
3507


빅데이터 분석 전문가의 꿈에 한 걸음 더 다가서다

메르스 확산과 국내산업과의 연관관계 분석



분석전문가 과정 11기의 ‘메르스 확산과 국내산업과의 연관관계 분석’ 프로젝트는 메르스 환자 데이터와 관련 업종의 주식 데이터, 뉴스 등을 분석해 메르스가 산업에 미치는 영향력을 규명하 는데 초점을 맞췄다. 향후 신종 전염병 발병 시 약간의 변수 조정만으로도 산업군에 미치는 영향 력을 분석할 수 있도록 확장성까지 염두해 둔, 완성도 높은 결과물을 만들어냈다



The Challenges

신종 전염병 메르스의 영향력 ‘제대로 알아보자’

지난 6월 우리가 수업을 받던 시기는 신규 메르스(MERS) 환자가 더 이상 나타나지 않고 진정 국면에 접어들고 있었으나, 여전히 새로운 메르스 감염자가 나올지도 모른다는 우려가 상존하는 시기였다. 그래서 처음에는 메르스 감염자가 어떤 지 역으로 이동할지에 대한 경로를 추적, 예측하고자 했다. 그러나 개인정보 보호로 메르스 환자에 대한 정보를 쉽게 구할 수 가 없어서 이내 포기하게 됐다.

다음으로 메르스 유행과 함께 외국인 관광객 수가 줄었다는 뉴스에서 착안해 메르스와 관광산업과의 영향에 포커스를 두 고 분석을 하려 했다. 그러나 이 역시 각 나라의 관광객 정보를 관광공사나 DB진흥원을 통해 구할 수 없어 주제를 다시 정 해야 하는 상황을 맞게 됐다.

최종적으로 증권 관련업에 종사하는 팀원의 도움으로 주식종목별 데이터(주식변동성, 주식수익률)를 구할 수 있다는 사실 을 확인한 뒤, 이에 맞춰 ‘메르스 확산과 국내 산업과의 연관 관계’라는 프로젝트 주제를 정할 수 있었다. 주제를 확정한 후 본격적으로 수업 시간에 배운 지식과 인터넷에 산재된 정보를 활용해 데이터를 수집하고, 화면 설계, 테이블 설계, 분석을 위한 가설 설정 등을 통해 프로젝트를 차근차근 진행할 수 있었다.

우리가 검증하고자 하는 가설에 대한 기존 연구가 있는지 인터넷을 통해 살펴보았으나, 정작 메르스가 어떤 산업분야에 얼마나, 또 긍정적 혹은 부정적 영향을 미쳤는지에 대한 정량적 정보를 찾기 어려웠다. 특히, 언론이 메르스에 대한 공포 심리를 조장하는 듯하다는 우려가 들었고, 한편으론 그 혼란을 틈타 주식시장을 교란시키는 일부 세력과 이에 개인투자자 들이 동요하는 듯한 움직임도 눈에 띄었다. 실제로 메르스 백신 개발과 관련한 테마주로 가축용 백신을 전문으로 하는 회 사의 주가가 치솟는다거나, 단순히 마스크를 만드는 회사의 주가가 2배나 넘게 상승하는 등 기대감만으로 베팅하는 사례 가 적지 않았다. 이와 관련해 메르스가 관광·레저·항공·제약 등의 산업에 큰 영향을 주었다는 것은 개별사례를 통해 확인 할 수 있었으나, 실제로 해당 산업에 얼마나 영향을 미쳤는지, 또는 사람들의 관심도에 따른 파급력이 얼마나 되는지 등을 데이터를 통해 수치적으로 측정해보고자 본 주제를 선택하게 됐다.



dbin_544.jpg

THE APPROACH

우리는 메르스 환자 데이터와 주식 데이터, 관련 뉴스 데이터를 수집해 이를 중심으로 SAS와 R을 사용해 상관분석, 회귀 분석 등의 분석기법을 활용, 빅데이터 분석을 시도해 보았다. 또한 분석 결과를 웹에 구현해 사용자가 인터랙티브하게 활 용할 수 있도록 서버 환경 및 UI 환경도 함께 구축했다.

먼저 데이터 수집, 정형화 및 분석은 R과 관련 패키지를 적용했으며, 정형화된 데이터의 저장과 관리는 파일 및 RDB(PostgreSQL)를 이용했다. R-Studio Server Edition으로 분석 및 개발 환경을 구축하고, R 이외 에 외부 분석 툴로 SAS를 이용했으며, CSV 파일로 데이터를 공유했다. Shiny 패키지를 적용해 분석한 결과, 시각화 및 데이터 탐색이 가능한 웹 UI를 구성 할 수 있었다.

dbin_545.jpg

dbin_546.jpg

과제 기획 초기부터 사용자 웹 환경 개발을 염두에 두고 작업을 했기 때문에 온전히 분석에 투자할 시 간이 상대적으로 많지 않아, 처음에는 메르스 환자 데이터와 주식 종목별 주가 데이터와의 정형 분석 만을 수행하려 했다. 하지만 빅데이터 분석에서 특 징적이라고 할 수 있는 비정형 데이터 분석도 함께 시도해 보자는 팀원들의 의견을 수렴해 마감 일주 일을 남겨 놓고, 뉴스 데이터를 수집해 비정형 데이터에 대한 분석을 추가로 수행했다. 이로써 정형, 비정형 데이터에 대한 각각의 분석, 이를 시각화로 표현하는 부분까지 더해 균형적인 결과물을 낼 수 있었다.



뉴스 데이터 수집해 비정형 분석까지 추가

먼저 뉴스 데이터는 네이버 API와 R의 XML 패키지를 이용해 수집을 했으며, ‘메르스’와 ‘주식종목’을 주요 키워드로 삼아 해당 데이터를 수집했다. 주가 정보는 대량의 주가 정보를 사전에 CSV 파일로 다운받아 정형화해 DB에 반영했으며, 메르 스 환자 정보는 질병관리본부 보도자료를 기반으로 작성된 엑셀 문서를 CSV로 변환해 DB에 반영했다.

외부 분석 툴로 사용한 SAS 시스템과의 데이터 연계는 R의 sas7bdat 패키지를 활용했다. 데이터 웨어하우스 구성을 위해 기본 데이터 저장소는 PostgreSQL DB를 이용했으며 RPostgreSQL 패키지를 이용했다.



뉴스 데이터 수집 코드getItemList< - function(start, range, keyword){#start : 시작, range: 범위, keyword: 주식 종목
xml_file< - str_c("http://openapi.naver.com/searchtarget=news"
,"&key=","ed1ef9c933491175790c901e86baxxxx"
,"&query=","메르스", keyword
,"&start=",toString(start)
,"&display=",toString(range)
)
xml_data< - xmlTreeParse(xml_file,useInternal=TRUE)
rootNode< - xmlRoot(xml_data)
rootNode< - rootNode[[1]]
itemList< - rootNode["item"]
return(itemList)
}



SAS 분석 데이터 DB Insert Code
sasr< - read.sas7bdat("Project_Mers/rtbl_stk_prc_byyear.sas7bdat")
insertItemList< - function(sasr){
con< - dbConnect(drv, user=dbuser, password=dbpass, dbname=dbname, host=dbhost, port=dbport)
for(i in 1:length(sasr$mkt_gb)){
v1 < - toString(sasr$mkt_gb[i])
v2 < - toString(sasr$idst_gb[i])
v3 < - sasr$std_year[i]
v4 < - sasr$rate_trade20_avg[i]
v5 < - sasr$rate_revenue_avg[i]
sql< - str_c("INSERT INTO tbl_stk_prc_byyear(mkt_gb, idst_gb, std_year, rate_trade20_avg,rate_revenue_
avg) VALUES ('" , v1,"','", v2, "','", v3, "','", v4, "','", v5, "')" )
rs< - dbSendQuery(con, sql )
}
dbDisconnect(con)
}



우리의 기본 가설이었던 메르스 발생이 주식시장에 얼마나 영향을 미쳤는지 검증하기 위해, 정형 데이터를 활용한 다중회 귀분석 모형을 도출했고, 회귀모형 설정 전 각 변수간의 상관관계를 확인하는 절차를 거쳐 최종적으로 다중회귀 모형에 포함될 변수를 추려냈다. 회귀모형의 종속 변수는 주식변동성, 주식수익률 2가지로 설정했다. ‘주식변동성’은 어떤 메르스 변수가 주식시장에 얼마나 충격을 주었는지 확인하기 위해, ‘주식수익률’은 어떤 메르스 변수가 주식수익률에 긍정 또는 부정적인 영향을 주었는지 확인하기 위함이었다. 또한 주로 주식시장에 주요 독립변수로 컨센서스가 있는 거시경제변수 (미국달러 환율, 위안화 환율, 국고채 금리, S&P500 지수)를 독립변수로 함께 설정해 메르스 유행기간 동안 메르스가 주 식시장에 어느 정도의 영향력을 발휘했는지 거시변수와의 상대적 비교를 함께 실시했다.

dbin_547.jpg

dbin_548.jpg

상관관계 분석 결과 누적변수(누적 퇴원자 수, 누적 사망자 수), 격리 해제자 수가 주식변동성과 80% 이상의 상관관계를 보여 다중공선성(독립변수들 간에 높은 상관관계가 있음) 의심으로 회귀분석 결과에서는 해당 변수들을 제외하고 회귀분 석을 실시했다. 특히 주식수익률에서는 신규 퇴원자의 상관계수가 거시경제 변수인 S&P 지수보다 더 크고, 유의미한 변수 로 도출돼 신규 퇴원자가 많아질수록 주식시장의 수익률이 증가하는 경향을 보였다.

dbin_549.jpg

주식 업종에 따라 메르스 유행으로 인해 받는 영향의 정도가 다를 것으로 생각해, 메르스 유행과 관련이 깊을 것으로 예상 되는 업종(의약품, 마스크, 호텔·항공업)을 추려내 추가로 회귀분석을 실시했다. 업종별로는 마스크 업종(변동성모형 R2 = 0.64, 수익률모형 R2 = 0.16) 회귀모형의 설명력이 가장 높았고, 신규 사망자 변수(+)가 주식변동성에, 신규 확진자 변 수(-)가 주식수익률에 유의미하며 가장 영향력이 높은 변수로 도출됐다. 즉, 신규 사망자가 발생함에 따라 높아진 공포심 리가 주식변동성에 영향을 주었으며, 신규 확진자가 계속 발생함에 따라 마스크의 메르스 예방 효과에 대한 불신이 높아 진 결과로 유추해 볼 수 있었다.

비정형 데이터는 네이버의 오픈 API를 통해 메르스가 언급된 주식종목들의 기사를 수집한 후 이를 주식시장에서 긍 정(상승, 급등 등), 부정(급락, 먹구름 등)을 의미하는 단어로 정의했다. 또한 단어의 영향력에 따라 가중치를 준 word dictionary와 맵핑해 메르스가 언급된 해당 기사가 해당 종목에 긍정적인 언급을 했는지, 부정적인 언급을 했는지 분석했 다. 한 가지 아쉬운 점이 있다면, word dictionary 구현 시 촉박한 프로젝트 일정상 뉴스 데이터를 직접 텍스트 마이닝해 dictionary를 자체 제작하지 않았기 때문에 이 부분은 향후 보완할 점이라고 생각한다.



dbin_550.jpg

분석도구의 선정 문제로 프로젝트 위기 봉착

분석과정에서 가장 큰 애로사항은 분석 도구에 대한 부분이었다. 모두들 교육목적상 수업을 들었던 오픈소스인 R을 이용 해 분석을 수행해 보는 것이 이상적이라고 생각했으나, 모든 팀원이 R을 처음 다뤄보는데다 프로젝트 초기에 예상치 못했 던 팀원들의 개인 사유 및 일정상 셀프스터디를 통한 분석을 시도해볼 여유가 없었다. 하지만 팀원 중 한 명이 상용 솔루션 인 SAS를 다뤄본 경험을 살려, 우연히 발견한 연구용 무료 버전을 이용해 데이터 핸들링 및 데이터 분석을 단기간 내 무리 없이 수행할 수 있었다. 또한 분석결과의 시각화를 위한 웹 애플리케이션 개발은 R과 R Shiny 패키지를 이용해 구현함으 로써 각각의 솔루션의 특성을 잘 살렸다고 생각한다.

분석 과정에서도 여러 차례 문제에 봉착했다. 메르스의 영향을 많이 받았을 것으로 생각했던 여행업종의 경우 내수 중심 의 매출구조 때문인지 주식변동성과 주식수익률에서 유의미한 결과를 보이지 않아 최초 여행업종에서 호텔, 항공업종으 로 산업을 재분류했다. 또한 비정형 데이터 분석 시 네이버 오픈 API로 수집한 데이터들이 한글로 되어 있고, 여러 팀원이 함께 분석을 수행하다보니, 각자의 컴퓨터 환경과 SAS 및 R, PostgreSQL 등에서 설정한 한글 인코딩 문제 때문에 SAS로 생성한 파일을 R로 불러오는데 한글이 깨지는 등 어려운 상황이 여러 번 발생했다.

커뮤니케이션 부분에서는 큰 문제가 없었다. 팀원들이 사는 지역이 다르고 직장의 위치도 제각각이라는 점을 극복하고 커 뮤니케이션을 효과적으로 하기 위해 매주 토요일 프로젝트 수업에 참여했다. 이를 통해 각자 역할을 정하고 역할에 맞는 일을 분담했다. 또 모든 팀원이 계속 한 자리에서 프로젝트를 진행 할 수 없어서 메신저로 단체방을 만들어 교류했고, 경우 에 따라 단체 통화까지 시도했다. 네이버 까페를 개설해 서로가 정보를 공유할 수 있도록 했던 점도 원활한 소통을 가능케 했던 요인이 됐다.



The Outcome

빅데이터에 대한 이해와 실용 가능성 높여

빅데이터 분석을 통해서 어떤 가치를 발견하고 효용성을 창출할 수 있는지는 현재의 빅데이터 초기 발전 단계에서의 경험 과 기술력만으로 성취하기가 어렵다고들 말한다. 우리가 메르스 프로젝트를 수행하면서 경험해본 대부분의 문제점들도 이러한 어려움을 증명한 것인지도 모른다. 하지만 각 팀원들이 쌓아온 각자의 도메인에 대한 전문성이 함께 합쳐져 충분 히 발휘된다면 그러한 문제들도 결국에는 쉽게 풀리게 된다는 것을 이 프로젝트를 통해서 경험하게 됐다.

우리는 정형 데이터 분석을 통해 메르스 확산이 주식시장에 큰 변수로 작용했다는 것을 검증해 보았고, 메르스 환자와 관련 된 변수들 즉, 퇴원자 수나 신규 사망자 수, 신규 확진자 수 등 각각의 변수들이 산업 전체에 미치는 영향과 각 종목에 미치 는 영향들이 서로 다르다는 것을 검증할 수 있었다. 또한 감성사전을 통해 메르스 확산이 주식 산업에 미친 영향을 뉴스 분 석을 함으로써 정형 데이터 분석을 기반으로 비정형 데이터 분석까지 심화시키는 방법을 찾았다. 최종 결과물은 웹 사용자 를 위한 정형과 비정형 데이터를 시각화 할 수 있는 최적의 방법들을 찾아서 탐색이 가능한 UI로 구현해 보았다. 무료인 오 픈소스 툴들을 사용해 서버 환경을 구축하고 UI를 개발함으로써 프로젝트 목표를 달성할 수 있었다는 것도 큰 성과였다.

우리는 이 프로젝트 경험을 통해 빅데이터에 대한 이해와 실용 가능성을 높였으며, 이 경험은 빅데이터 분석 전문가로 성 장하려는 우리의 꿈을 한 단계 더 현실화 시키는 계기가 됐다. 앞으로 기회가 된다면, 메르스 프로젝트를 상용 가능한 단계 의 수준으로 끌어 올리는 작업을 하고 싶다. 다른 전염병이 유행할 경우 단기간의 작업을 통해 활용할 수 있도록 확장성 부 분에서도 신경을 써서 디자인했다. 이에 추가로 뉴스 텍스트 마이닝과 시계열 분석을 도입한다면 신뢰도를 높인 예측 모get=_blank>출처 : 한국데이터진흥원

제공 : 데이터 전문가 지식포털 DBguide.net