[제888회] 효과적인 금융경제 데이터 분석 방법

등록일
2022.06.10
조회수
5727
키워드
금융경제 데이터 분석 Python 자동화
담당부서
경제교육기획팀

자막

[제888회] 효과적인 금융경제 데이터 분석 방법
(2022.6.10(금), BIS 통화경제부 권병천 박사)

(권병천 박사)
안녕하세요. 저는 국제결제은행 통화경제부에서 시니어 데이터 사이언티스트로 근무 중인 권병천입니다. 이번 강좌에서는 효과적인 금융경제 데이터 분석 방법에 대해 여러분들과 이야기하려고 합니다.

[강의목표](p.2)
강의의 목표는 제가 경험했던 다양한 금융경제 데이터 분석 업무를 여러분들과 같이 공유하는 것인데요, 주청취 대상은 일반인, 대학생, 그리고 도라에몽처럼 선수지식이 없어도 쉽게 이해할 수 있도록 강의를 구성해보았습니다. 강의는 이론적인 내용보다는 실제적으로 여러분들과 같이 실습할 수 있는 환경으로 구성하였는데요. 구글에서 제공하는 colab이라는 서비스를 이용해서 여러분들의 pc에서도 아무런 설치 없이 제가 보여드리는 과정을 따라해보실 수 있게 온라인에 최적화 돼서 만들어 보았습니다. 따라서 보는 것도 좋은데요, 그냥 보지만 마시고 같이 해보시는게 훨씬 더 효과적이라고 생각이 듭니다.

[금융경제 데이터 구분](P.3)
그럼 시작해보도록 하겠습니다. 첫 번째는 금융경제 데이터를 구분하는 방법인데요, 금융경제 데이터가 다른 데이터와 특별할까요? 흔히 요즘에 많이 얘기하는 Big data, 또 Big data에 반대되는 개념이 Small data 라고는 하지 않죠. 과연 금융경제 데이터가 Big data 아니면 Small data 라고 구분할 수 있을까요? 아니면 최근에 많이 사용하고 있는 Micro data 이거는 원데이터를 가공, 처리하지 않고 거기서부터 분석을 하는 과정인데요. 이 Micro data, 그렇다고 반대 개념이 Macro data는 아닙니다. 그러면 이러한 것들이 과연 금융경제 데이터라고 할 수 있을까요?

[금융경제 데이터 구분](p.4)
이 구분법보다는 이 강의에서 제가 금융경제 데이터로 구분하고 싶은 것은 다음과 같습니다. 첫 번째는 시계열 데이터입니다. 그리고 두 번째는 패널 데이터입니다. 이 두 개의 데이터가 가장 대표적인 금융경제 데이터라고 볼 수 있습니다. 이렇게 데이터를 구분하게 되면 여러가지 데이터가 나오게되죠. 그 다음엔 텍스트 데이터, 아니면 이미지 데이터, 그리고 또 스트리밍 데이터가 있습니다. 이러한 데이터들에 비해서 시계열 데이터, 패널 데이터가 금융경제 데이터라고 볼 수 있습니다. 근데 결국은 스트리밍 데이터, 텍스트 데이터, 이미지 데이터는 금융경제 분석에 사용할 수 없느냐? 그렇진않죠. 이것도 가공, 처리가 되면 시계열 데이터가 될 수 있습니다. 결국은 모든 데이터는 이 매트릭스 형태로 들어가게 되는데요, 이번 강좌에서는 이 시계열 데이터와 패널 데이터를 어떻게 금융경제 분석에서 이용하는지를 자세한 실습 사례를 가지고 이야기해보도록 하겠습니다.

[시계열, 패널 데이터](p.5)
그래서 시계열 데이터, 패널 데이터에 대해서 조금 더 자세하게 말씀을 드릴텐데요, 시계열 데이터는 크게 두 개의 축으로 되어있습니다. 첫 번째 축은 날짜, 두 번째 축은 관측값입니다. 그래서 이런식으로 날짜값과 관측값이 있게되면 시계열이 되는데, 이걸로만은 충분하지 않습니다. 여기서 두 가지 큰 특징이 빠졌거든요. 이 두가지 큰 특징이 바로 주기와 단위입니다. 이 주기와 단위가 없으면 시계열 분석을 할 수가 없습니다. 예를 들어서 첫 번째 날짜값인 2022년 6월 10일을 보면 이거는 일 데이터라고 보이는데요. 두 번째 것을 보면 월 데이터라고 생각할 수도 있고, 세 번째 것도 월 데이터라고 생각할 수 있지만 2022년 6월은 분기 데이터가 될 수도 있습니다. 그렇기 때문에 정확한 주기를 꼭 표시를 해서 가지고 있어야 되고요. 이 관측값도 똑같습니다. 이 100이라는 숫자가 정수의 100인건지, 아니면 100%인건지, 아니면 상대값인 지수 인덱스 값인지를 단위가 없으면 알 수가 없기 때문에 이것도 단위의 값을 꼭 써주셔야 됩니다. 이것이 시계열 데이터의 가장 큰 특징이고요, 두 번째인 패널 데이터는 시계열 데이터의 확장판이라고 보시면 됩니다. 첫 번째 축인 날짜는 시계열과 동일합니다. 이것은 여러 개의 관측값을 가질 수 있습니다. 근데 시계열 데이터에 비해서 특징적인 점이 있는데요. 데이터를 보시면 첫 번째 Column 값은 은행명이 들어가 있습니다. 이건 명확하게 문자라는게 보이는데요, 두 번째 Column 값은 눈으로 볼 때 숫자로 보입니다. 하지만 이것은 숫자가 아니라 국가코드를 의미합니다. 410번은 한국이고요, 756번은 스위스, 840번은 미국입니다. 이렇게 되기 때문에 마찬가지로 단위가 없으면 시계열이나 패널 분석에 사용할 수가 없습니다. 이 코드는 실제로 IMF에서 사용하는 컨트리 코드인데요, 이런 식의 주기나 단위를 시계열이나 패널 데이터에 명확하게 표시해놓는게 필요합니다.

[시계열 데이터 예시](p.6)
실제적으로 데이터를 보시겠는데요, 제가 여기서부터 데이터를 보여드릴텐데 이 데이터는 전 세계에서 무료로 제공되고 공신력 있는 기관에서 서비스 중인 데이터를 몇 가지 사례를 보여드릴 것입니다. 여러분들도 직접 들어가서 링크를 걸어놨으니까요, 여러분들께서 직접 들어가서 확인해보시는 것이 좋을 것 같습니다. 첫 번째 데이터는 FRED라는 데이터입니다. 이것은 미국 세인트 루이스 연방준비은행에서 제공하고 있는 데이터 서비스인데요. 미국 중심의 데이터를 서비스하고 있고요. 그리고 이 데이터 서비스가 인터넷에 무료로 공개되는 서비스 중에 가장 최초로 시작됐기 때문에 미국 기준의 데이터임에도 불구하고 아직도 많이 사용되고 있습니다. FRED에서 GDP를 검색하게 되면 여러가지 GDP 항목이 나오는데 그 중에서 아무 GDP나 선택을 해보시면 비슷한 결과를 얻으실 수 있습니다. 이 결과에서 눈여겨 볼 것은 바로 이 부분입니다. 여기도 보면 주기가 Quarterly, 분기로 정확하게 표시가 되어있고요. 단위는 Billions of Dollars라고 정확하게 표시가 되어있습니다. 따라서 이 Frequency와 Units은 어떤 시계열 값에도 따라 붙는다는 것을 보실 수가 있고요. 그리고 또 하나의 대표적인 우리나라의 데이터 베이스 통계시스템인 한국은행 경제통계시스템입니다. 여기서도 GDP를 검색해보셔서 결과물을 보시면 명확하게 표시를 하고 있습니다. 주기와 단위를 표시해놓는 것을 보실 수가 있습니다. 지금까지 본 것이 금융경제 데이터의 대표적 사례인 시계열 데이터, 패널 데이터를 보셨습니다.

[패널 데이터 예시](p.7)
그럼 지금까지 시계열 데이터를 보셨는데요, 그럼 이제 패널 데이터에 대한 예시도 한 번 보시겠습니다. 패널 데이터는 일단 서베이 데이터, 설문조사 데이터라고 이해하셔도 됩니다. 대부분의 패널 데이터는 설문조사 데이터거든요. 그래서 대표적인 설문조사 데이터인 가계금융복지조사, 통계청, 한국은행, 금융감독원에서 매년 수천 가구를 대상으로 가구의 현황을 파악하는 설문조사를 이렇게 매년마다 KOSIS라는 통계청에서 제공하는 통계 데이터 서비스에서 공표를 하고 있습니다. 그래서 보시면 일단 날짜 축이 나오게되고요, 그 다음이 가구특성별 분류를 했죠. 남자와 여자로 했는데 이거는 하나의 분류고요. 실제적으로 이 링크로 가셔서 데이터를 보시면 다양한 분류를 보실 수 있습니다. 그 다음 Column 값인 원천별은 소득의 다양한 구분 중에 제가 경상소득만 가지고 왔는데요, 이렇게 경상소득만 가지고 와서 가구소득의 평균과 가구소득의 중앙값을 이렇게 패널 데이터로 보여주고 있습니다. 두 번째 통계는 국제결제은행, 제가 소속된 기관인데요. 국제결제은행에서 매 분기마다 전 세계 대부분의 은행들의 재무상태표를 취합해서 집계하여 매분기마다 공표를 하고 있습니다. 이것도 보시면 날짜 값이 앞에 나오고 그 다음에 Balance sheet에 항목들로 구성된 시계열 값들을 보실 수 있습니다. 여기서 한 가지 말씀드리고 싶은건 이 패널 데이터는 결국은 시계열 데이터의 합으로 구성되어있습니다. 하이라이트된 부분을 보시면 시간은 다 가져갔고 2017년, 18년. 그 다음에 여기서 남자만 가지고 오고, 경상소득만 가지고 오고 그 다음에 가구소득의 평균만 가지고 오게되면 이게 하나의 시계열이 됩니다. 그렇기 때문에 지금 보이는 표에는 네개의 시계열이 하나의 패널 데이터로 구성이 되어있죠. 만약에 내가 가계금융복지조사를 시계열 분석을 하고 싶다라고 했을 때는 시계열 값을 분류해서 하나의 시계열로 만들고 이 시계열을 가지고 계량경제 모형에 이용하실 수 있습니다. 지금까지 시계열 데이터와 패널 데이터의 예시를 보셨고요.

[금융경제 데이터분석 프로세스](p.8)
그렇다면 이렇게 데이터를 알고 있고, 확보를 했다면 이 데이터를 가지고 어떻게 분석을 해야될까요? 이 데이터분석 프로세스는 금융경제 데이터라고 해서 다른 데이터와 크게 다르지 않습니다. 데이터분석 프로세스는 네 단계로 나뉩니다. 첫 번째는 데이터가 있게되면 데이터를 처음 입수하고 저장하는 프로세스고요. 그 다음에는 이 입수된 데이터를 전처리를 합니다. 전처리는 우리는 데이터를 아무리 공신력 있는 기관에서 가지고 왔다고 해도 절대 그냥 사용해서는 안됩니다. 이 부분에 대한 유효성 검증이 들어가야 되거든요. 이것을 어떻게 하는지도 같이 실습에서 해보도록 하겠습니다. 전처리가 완료됐다고 하면 드디어 우리는 이 데이터를 가지고 분석을 할 수 있습니다. 여러 계량모형을 돌리거나 우리가 알고 있는 전통적인 통계분석기법을 이용할 수도 있죠. 이렇게 분석까지 끝내게 되면 그 다음에 할 수 있는건 이 데이터를 출판하거나 다른 데이터 서비스에 공표하거나 할 수 있죠. 금융경제 데이터 분석에 있어서는 각 스텝에서 어떤 것을 눈여겨 봐야될까요? 각 단계별로 말씀드리면 입수, 저장에서는 일반적인 데이터 분석과 같은데요. 이 입수를 할 때 수작업으로 하느냐 자동화로 하느냐 이것을 언제나 선택을 해야되는데요. 제 경험도 그렇고 쉽게하는건 수작업인데 나중에 좀 더 잘하기 위해서, 좀 더 효과적으로 하기 위해서는 자동화 기법이 필요합니다. 이따가 같이 실습에서 해보시면서 어떻게 차이가 나는지를 여러분들도 같이 한 번 해보시면 판단하시는데 도움이 될 것으로 생각됩니다. 데이터가 입수가 되고 저장이 되면 전처린데요. 전처리에서는 일단 데이터가 유효한 데이터인지, 정말 데이터가 제대로된 데이터인지를 어떻게 검증하는지. 그 다음에 흩어져 있는 소스에서, 데이터를 여러군데에서 가져오게되면 이 데이터를 어떻게 표준화해낼 건지. 그것을 어떻게 합쳐낼건지 그것을 하는 법을 같이 실습에서 해볼거고요. 그 다음에 분석에서는 이것은 논란의 여지가 있습니다. 이렇게 분류하는게 좋은건지 나쁜건지는 저도 자신있게 말씀드릴 수 없고요. 이렇게 분류를 한 이유는 나중에 자세하게 소개를 해드리겠지만 두 가지의 분석 기법이 크게 차이가 나기 때문입니다. 이렇게 분석이 되고 나면 이 분석된 것을 Visualization을 통해서 공표나 출판을 할 수가 있죠.

[실습 – 데이터 입수](p.9)
그럼 이제부터 실습을 할건데요. 실습은 여러분들 pc에서도 하실 수가 있습니다. 실습을 할 때는 제가 구성한 것은 제가 전 세계에서 사용되는, 많이 사용되고 공신력 있는 기관에서 서비스 중인 데이터 베이스를 소개해 드리려하는 것도 목적이 있습니다. 한 번 데이터 베이스를 새로운 데이터 베이스가 나올 때마다 제가 다시 한 번 말씀을 드릴텐데요. 첫 번째 데이터 베이스는 DB∙NOMICS라는 데이터 베이스입니다. 이 데이터 베이스는 프랑스 중앙은행에서 무료로 제공 중인 금융경제 데이터베이스입니다. DB∙NOMICS는 프랑스 중앙은행에서 공표하는 데이터 뿐만 아니라 IMF나 BIS 등 전 세계 87개 상당히 많은 거의 대부분의 기관에서 제공하는 데이터 베이스를 취합해서 한 군데에서 볼 수 있게끔 한 군데에서 볼 수 있는 서비스도 제공해주고 있습니다. 따라서 이미 취합이 되어있기 때문에 DB∙NOMICS에서 데이터를 가지고 왔다고 하면 전처리 과정에서 필요한 데이터 표준화는 할 필요가 없는 것이죠. 그렇기 때문에 첫 번째 사례로 DB∙NOMICS를 이용해서 실습을 할텐데요.

[입수프로세스](p.10)
첫 번째 실습은 입수프로세스입니다. 말씀드렸다시피 입수 프로세스는 두 개로 나뉠 수 있습니다. 수작업과 자동화죠. 수작업은 특별하게 여러분들께 다시 설명 드릴 필요 없이 우리가 매일 하는거죠. 데이터 서비스에 가서 데이터를 찾아서 엑셀로 받고, 엑셀로 받은 거를 확인해서 합치고. 수작업, 손과 엑셀이 가장 많이 들어가는 이것도 한 번 실습으로 보시고요. 그 다음에 자동화. 자동화하면 API라는 용어가 나오기 시작하면서 이걸 할 수 있을까 부담을 가지실 수 있는데 처음에 API라는 개념이 나왔을 때는 개발자들도 사용할 때는 학습시간이 필요했는데요. 요즘 API 서비스는 너무나 편리합니다. 그래서 여러분들도 직접 따라해보실 수 있도록 실습코드를 제공해드리도록 하겠습니다. 그래서 저는 수작업과 자동화하면 어떤 영화에서 나오는 빨간 약과 파란 약 둘 중에 하나를 먹는다는건데 잘 선택해서 드셨으면 좋겠습니다.

[실습환경](p.11)
그러면 실습환경에 대해서 다시 한 번 말씀을 드릴텐데요. 실습환경은 Google colab 이라는 서비스를 이용할건데요. Google colaboration laboratory라는 서비스입니다. Google colab은 무료로 우리한테 가상 컴퓨팅 환경을 제공합니다. 여기서 동영상을 잠깐 멈추셔도 좋습니다. 멈추셔서 지금 제공되는 링크를 한 번 눌러보셔서 들어가시면 아마 이러한 화면을 보실 수가 있는데요, 이거는 구글 계정이 필요합니다. 구글 계정이 필요하기 때문에 Connect 버튼을 누르면 구글 계정을 물어보게 됩니다. Connect 버튼을 누르는 순간 어떤 일이 발생 하냐면 구글 클라우드 컴퓨터 이건 어딨는지 모르죠. 구글 클라우드 컴퓨터에 나만의 가상 컴퓨터가 만들어집니다. 나만의 가상 컴퓨터가 만들어지면 그 컴퓨터에 접속을 해서 거기서 내 마음대로 작업을 할 수가 있는 것이죠. 이것이 활성화가 되면 이런식의 컴퓨터 자원들이 할당된 것을 보실 수가 있습니다.

[실습환경](p.12)
그래서 이 Google colab이라는 환경에서 우리는 실습을 할텐데요, 실습의 언어는 Python이라는 언어를 사용할겁니다. 언어가 좀 두려울 수 있는데 제가 여기서 보여드릴 것은 이 언어를 이용해서 데이터를 어떻게 가져오고 분석하는지, 이 Python이라는 언어는 89년에 범용 목적으로 개발 되었고, 특히나 금융경제 데이터를 분석할 수 있는 프로그램들, 우린 이걸 라이브러리라고 하는데요. 이 라이브러리가 훌륭하게 제공되고 있습니다. 그래서 무료로 배포되고 있고, Python 개발 재단을 통해 운영되고, 관리되고 있습니다. 그래서 어떻게 실습을 할 수 있느냐. Google colab에 접속해서 우리는 우리의 가상 컴퓨터가 있습니다. Python까지는 Google colab에서 제공을 하고요. 그 다음에는 이 위에다가 금융경제 데이터를 분석할 수 있는 라이브러리 프로그램들을 설치하고 그 위에서 우리 스크립트를 돌리는겁니다.

[수작업](p.13)
이 부분을 보여드리도록 하겠습니다. 첫 번째가 엑셀 수작업인데요, 엑셀 수작업은 Google colab에서 하는건 아니죠. 한 번 같이 보시죠. 우선 DB∙NOMICS에 접속을 하게 되고 우리가 원하는 키워드를 이용해서 데이터를 찾게 됩니다. 우리는 여기서 OECD에서 제공하는 GDP 데이터를 보겠다 해서 이 키워드를 넣고 검색을 합니다. 검색결과 이렇게 나오는데요. 검색 결과 중에 제가 지금 선택한건 Main Economic Indicators Publication이라는 데이터, 매월마다 OECD 국가의 주요 경제지표를 취합해서 공표를 하는 것인데요. 여기 한 번 들어가보면 GDP 데이터가 몇 개나 있을까요? 국가별로 분류가 돼있는데 Korea라고 치면 옆에 표시된 73이라는게 OECD MEI에는 GDP로 분류된, 그리고 한국인 컨트리코드로 된 것이 73개가 있다는 것입니다. 너무 많죠 지금. 계속 분류를 해보죠. 73개가 있고 그 다음 주제는 GDP로 분류하는데 여러 기준이 있을 수 있는데 우리는 여기서 이제 IMF에서 제공하는 BOP라는 가이드라인에 의해서 생성된 GDP 값을 보겠습니다. 그럼 옆에 표시가 두 개가 되죠. 두 개를 선택하고 나면 결과 창에 두 개가 뜨게 됩니다. 첫 번째 것은 끝이 annual로 끝나죠, 연간 데이터고요. 두 번째거는 quarterly, 분기 데이터입니다. 두 번째 것을 받는다고 했을 때 수작업으로 하게 되면 어떻게 하냐면 클릭을 하고 다운로드 버튼을 찾아서 엑셀을 누르고 엑셀을 다운로드 받아서 엑셀을 열어서 데이터가 제대로 들어왔는지 확인을 해보시는 전형적인 수작업이죠. 이렇게 되면 우리가 만약에 한국 것 뿐만 아니라 다른 나라도 필요하다, 그러면 또 어떻게 해야됩니까. 다시 돌아가서 한국 대신에 예를 들어서 호주를 선택해서 똑같은 과정을 반복하게 됩니다. 이건 사실 수작업의 극단적인 사례를 보여드리는 건데요. 이것을 한 번에 해서 끝내면 그나마 다행인데 이것을 매월마다 반복해야 된다면 정말 고통스러운 일이 될 수밖에 없습니다. 그러면 이것을 어떻게 자동화로 할 수 있을까요? 여기서부터는 직접 colab을 사용해서 같이 해보도록 하겠습니다.

[자동화작업](p.14)
지금부터는 자동환데요, 자동화도 결국은 우리는 데이터 소스가 필요하죠. 자동화에서는 대부분의 API들이 똑같습니다. 일단 이 시계열 데이터의 코드를 찾아야 되는데요, DB∙NOMICS에서는 이러한 코드 체계를 줍니다. 이 코드 값을 복사를 하고 Google colab으로 아까 여러분들도 같이 하셨을 거라고 믿습니다. 아까 여러분들이 활성화 시킨 colab으로 넘어오시면 됩니다. 라인을 하나씩 하나씩 같이 실행해볼텐데요. 라인을 실행하기 위해서는 왼쪽에 검은색 화살표 버튼을 누르시면 그 라인이 실행이 되고, 단축키도 있지만 지금은 라인이 그렇게 많지 않기 때문에 화살표를 통해서 같이 해보도록 하시죠. 첫 번째는 DB∙NOMICS의 API를 이용하기 위해서 DB∙NOMICS에서 제공하는 Python 프로그램을 설치하는 것입니다. 이 명령어를 통해서 설치를 할 수 있고요. 설치가 끝나게 되면 여러분들의 가상 컴퓨터에 이 DB∙NOMICS라는 라이브러리가 설치된겁니다. 설치가 됐으면 이것을 활성화를 해야되는데요, 활성화 시키는 명령어는 이렇다. 지금은 이 정도만 이해해주셔도 충분합니다. 활성화가 되면 그 다음부터는 우리가 데이터를 직접 가져올 수 있습니다. 벌써 API를 이용하기 위한 모든 준비 조건이 끝났고요. 우리가 아까 DB∙NOMICS에서 시계열 코드를 카피한 값을 이렇게 넣어주시면 되고, fetch_series라는 함수를 실행하기만 하면 바로 DB∙NOMICS에서 데이터를 가지고 오게 됩니다. 데이터를 가지고 오게 되면 데이터가 어떻게 생겼는지 한 번 이 head라는 명령을 통해서 두 번째 레코드까지 보게 되면 모든 데이터 값을 가지고 오게 되죠. 끝에 보시면 시계열의 날짜 값, 시계열의 관측 값이 이렇게 들어오는 것을 보실 수가 있습니다. 아직은 시계열 데이터가 아니라 테이블 포맷이죠. 테이블 포맷을 시계열 데이터로 변환시키는 작업이 필요한데요, 그 다음 명령어가 바로 그것을 하는 것입니다. 일단 몇 개의 레코드가 있는지를 이 명령어를 통해서 확인하실 수가 있고, 168개의 레코드가 있는 것을 보실 수가 있습니다. 그리고 이제 이 부분이 복잡해 보이실 수 있는데 거의 마지막까지 오셨으니까 조금만 더 집중하시면 쉽게 이해하시리라 생각이 듭니다. 두 개의 값을 넣어주고 있죠, 첫 번째는 관측 값, 관측 값을 넣어 주시고 있고 두번 째 하이라이트된 부분은 날짜, 날짜가 지금 분기 데이터를 가지고 왔잖아요, 그래서 날짜를 이렇게 넣는다. 지금 뒤에 종합 예제를 가게 되면 계속 나오기 때문에 그 부분에서 좀 더 자세하게 다시 한 번 설명을 드리겠습니다. 관측 값과 날짜를 가지고 실제 시계열 데이터를 만드는 겁니다. 시계열 데이터를 만드는 명령이고, 시계열 데이터를 만들게 되면 우리는 여기서부터 파워풀한 여러가지 기능을 사용할 수 있습니다. 예를 들어서 plot도 그릴 수가 있고요, 그 다음에 이 데이터를 예를 들어서 값도 볼 수가 있고, 그 다음에 이것의 전기 대비 증감, % change 같은 여러 통계함수를 제공하고 있거든요. 시계열 데이터로 변환만 하면 % change를 이것의 전기 대비 증감 값을 볼 수가 있습니다. 그리고 또한 지금 이게 분기 데이터잖아요, 이 분기 데이터를 연간 데이터로 받고 싶다 라고 하면 resample이라는 함수를 이용해서 연간 데이터로 바꿀 때는 네 개의 분기가 하나의 연이 되기 때문에 어떤 값, 예를 들어 평균치를 쓸건지 아니면 제일 마지막 값을 쓸건지 결정을 해야되는데 여기서 평균치를 쓰겠다고 했을 땐 이런식으로 분기 데이터가 연 데이터로 변하는 것을 보실 수가 있습니다. 이것이 바로 자동화 작업인데요. 이렇게 코드를 만들어 놓으면 국가별로만 다른 코드를 가지고 와서 동일한 스크립트를 돌리면 동일한 결과가 생성이 되기 때문에 상당히 편리하게 이용할 수 있는데요. 여러개 국가를 가져와서 어떻게 처리를 하는지는 종합 예제에서 같이 해보도록 하겠습니다.

[전처리프로세스](p.15)
지금까지 입수 프로세스에 대해 살펴보셨고요. 두 번째 전처리입니다. 언제나 전처리는 힘듭니다. 전처리가 그만큼 가장 중요하기도 하고요 가장 어렵기도 합니다. 전처리는 데이터에 대한 유효성을 검증하는 것인데요. 유효성을 어떻게 검증해야 될까요? 가장 쉬운 것부터 해보죠. 시계열 데이터의 유효성을 검증하기 위한 가장 첫 번째 스텝은 데이터가 과연 그 데이터가 말한대로, 말한대로라는게 그 메타데이터가 설명한대로 그렇게 생겼는지를 한 번 보는겁니다. 예를 들어서 주기가 연이다 라고 했을 땐 데이터가 연 단위로 되어있는지 그렇게 보면 되고요. 단위 같은 경우도 %인지 아니면 그냥 레벨이라고 하는데 원자료 값인지를 보는거는 쉬운데, 이러한 경우도 있습니다. 이제 소비자물가지수에서 가장 많이 쓰이죠. 어떤 연도를 기준으로 100이라는 값을 놓고 이 100보다 커지는지 작아지는지를 보는, 이러한 데이터를 가지고 왔을 때 이 유닛이 정말 이 데이터에서 사용되고 있는지. 만약에 이게 연간 데이터라고 하면 쉬울 수 있습니다. 왜냐하면 2020년 값만 찾아서 이게 100인지만 확인하면 되니까요. 근데 이게 만약에 월 데이터면 어떻게 해야될까요? 2020년에는 12개의 달이 있는데 이 달의 모든 값이 100이 돼야될까요? 그렇진 않겠죠. 모든 달의 평균 값이 100이 되면 되는데 이것에 대한 전처리는 어떻게 해야되는지 실습 내용에 있으니까 같이 해보시면 되고요. 두 번째 어려운 점이 있습니다. 결측치 데이터가 있는가? 데이터가 연 데이터인데 특정 연도에서 데이터가 없으면 어떻게 해야될까요? 데이터를 버릴 순 없잖아요. 어떻게 채워 넣을 것인가, 그냥 전년도 값을 그대로 복사할 것인가, 이건 forward filling이라고 하고, 이렇게 하면 쉬운데요. 그렇지 않고 비어있는 관측 값을 앞뒤로 보고 이 앞뒤의 평균 값을 넣든지, 이런걸 interpolation이라고 하고, 이러한 여러가지 결측치 데이터를 채워넣는 방법이 imputation을 어떻게 할 것인지가 전략이라는 용어까지 나옵니다. 어떻게 채워넣을지 전략까지 세워야 되는지가 중요한데요. 이것도 실습 내용에 있으니까 같이 따라해보시면 좋을 것 같습니다. 마지막 이게 가장 어려운데요 데이터가 유효한가, 되게 추상적인 용어죠. 유효함은 뭔가요. 첫 번째로 쉽게 이해할 수 있는건 이상치가 있는가. 데이터가 갑자기 커지거나 갑자기 작아지거나 이런거는 이렇게 되면 표준편차를 구해서 표준편차의 세 배수보다 커지거나 작아지면 이상치라고 볼 수 있다, 이렇게 간단하게 정의할 수 있지만, 간단하게 정의할 수 없는 경우도 상당히 많습니다. 예를 들어서 주식시장에서 주가가 크게 폭락할 때, 이게 이상치인지 정말 폭락이 온건지 리먼브라더스 사태처럼 정말 폭락이 온건지는 그 때의 context를 보지 않으면 우리가 알 수 없기 때문에 이런 경우는 컴포넌트 체크라는 동일한 시계열, 그 시점에서 발생한 동일한 시계열을 같이 보는겁니다. 같은 패턴으로 변한다라고 하면 유효한 데이터구나 이렇게 생각을 할 수가 있죠. 이런식으로 점점 어려워지는데 나중에 내가 만든 모델을 가지고 실증 분석을 해보고 싶다고 했을 땐 이런식의 유효성 검증이 필요할 수 있습니다. 그럼 전처리에 대한 실습도 같이 해보도록 하시죠.

[실습 - 전처리](p.16)
아직 전처리 실습은 계속 DB∙NOMICS 데이터를 이용해보도록 하겠습니다. 이번에는 GDP 말고요 다른 데이터를 이용해 볼까요? 같이 찾아보시는 것을 언제나 권장드리니까 같이 해보시기 바랍니다. 데이터 이번에는 소비자물가지수로 하시죠. 소비자물가지수 검색을 하면, 아까도 말씀드렸다시피 DB∙NOMICS는 전 세계 87개 데이터 소스의 데이터를 취합해서 관리하기 때문에 다양한 기관에서 만든 소비자물가지수 값을 볼 수 있는데요. 여기서 어떤걸 선택할까요. 여기서도 마찬가지로 OECD에서 제공하는 MEI 데이터를 선택해서 보실건데, 아까도 말씀드렸다시피 옆에 나오는 279라는게 소비자물가지수, 한국으로 검색했을 때 나오는 시계열의 숫자입니다. 엄청나게 많죠. 왜냐하면 모든 소비자물가지수가 분류별로 들어가 있거든요. 여기서 총 소비자물가지수 선택을 한 번 해보죠. Total이 나오게 됩니다. Total이 나오게 되면 13개 까지 줄어드는데 단위별로 다릅니다. 2015년을 100으로 한 소비자물가지수를 찾게되면 3개의 소비자물가지수 시계열 데이터가 나오게 됩니다. 왜 3개나 필요할까요, 한 번 보실까요. 지금 옆에 3개가 나왔죠. 지금 드롭다운 메뉴로 나오게 되는데요, 이 OECD MEI에서는 총 소비자물가지수의 2015년 인덱스 기준으로 제공하는 데이터가 연간, 분기, 월간 이렇게 3개가 제공이 됩니다. 우리는 여기서 월간 데이터를 받아볼까요. 이것을 자동화 방법으로 바꾸기 위해 필요한게 뭘까요. 아마 따라오셨으면 아실 수 있을텐데 바로 시계열 코드죠. 시계열 코드가 필요합니다. 시계열 코드는 밑에도 살짝 나오는데요, 이 부분을 카피를 하셔서 Google colab으로 넘어가시면 됩니다. 앞에서 했던 과정과 똑같고요. 여기서 아까 fetch_series라는 함수에 우리가 카피한 시계열 코드를 넣게 됩니다. 시계열 코드를 넣고 그대로 실행을 왼쪽 화살표를 통해서 실행시키시게 되면 바로 DB∙NOMICS에서 데이터를 가지고 오게 되고, 이 데이터를 확인해보시면 테이블 형태로 생겼습니다. 이 테이블 형태는 아직 시계열 데이터는 아니기 때문에 이 테이블 형태를 시계열 데이터로 변환을 해줘야 합니다. 아까랑 동일한 작업이죠. 동일한 작업에서 첫 번째 값은 시계열의 값, 관측 값이고 두 번째 값은 여기보시면 날짜. 여기서 보시면 월 데이터기 때문에 제일 마지막에 있는 fequency 라는 파라미터가 M, monthly로 들어가 있는 것을 확인하실 수가 있습니다. 이렇게 가지고 오게 되면 이 함수를 실행하게 되면 결국은 시계열 데이터로 변환이 되는데요. 시계열 데이터로 변환이 되면 아까 우리가 했던 간단한 통계 분석 여러가지를 할 수 있습니다. 우리가 지금 하는건 전처리잖아요. 전처리에서 첫 번째로 해보고 싶은건 데이터를 확인해보고. 2015년이 100이잖아요. 이게 과연 2015년이 100인지, 그럼 2015년의 매월 데이터만 가지고 와야합니다. 지금 이 명령을 보시면 상당히 쉽죠. 시계열의 2015이라고 표시를 해두면 2015년 1월부터 12월 까지의 값을 보여주게 됩니다. 지금 얼추보면 100이 될 것 같죠. 희망이 있는데요, 이것의 평균값을 내볼까요? Python이 여기서 강력한데요, 그냥 평균은 평균입니다. 바로 뒤에다가 mean이라는 함수를 붙이게 되면 바로 평균값을 알 수가 있습니다. 이렇게 되면 99.9가 되는데, 이것을 소수점 두자리에서 반올림해서 올려보겠습니다. 직관적이잖아요, roundup하면 바로 소수점 두자리에서 올려준다는 건데 정확하게 100이 나오는 것을 보실 수 있습니다. Python에 설치된 판다스라는 라이브러리입니다. 판다스라는 라이브러리에서 통계 분석에 필요한 여러 함수를 제공해주는데요. 이런 함수를 통해서 전처리를 할 수 있다라는 것을 여러분들께 보여드리고 있습니다. 계속 말씀드리지만 꼭 따라해 보셨으면 좋겠습니다.

[데이터분석](p.17)
그러면 이제 우리가 어디에 있죠? 지금 입수를 했고, 전처리를 했고, 분석까지 왔습니다. 분석은 제가 앞에서 두 가지로 나뉠 수 있다고 했었죠. 첫 번째는 Statistics, 그 다음에 Machine Learning. 왜 이렇게 나눠야 될까요? 제가 감히 나눌 순 없고요, 이렇게 나눈 논문이 있습니다. 네이쳐에서 발행된 페이퍼 중에 이러한 타이틀로 이 두 가지의 기법이 왜 다른지를 설명하고 있는데요. 저도 적극적으로 여기에 대해서 공감을 하고요. 첫 번째 Statistics 기법엔 어떤 특징이 있냐면 원인을 찾는겁니다. 예를 들어 물가가 계속 올라간다 라고 하면 왜 올라가는지 이 원인을 알고 싶은겁니다. 그래서 인과추론을 할 때 우리는 주로 Statistics 기법을 쓴다 라고 이 논문에서 이야기를 하고 있습니다. 이러한 원인을 찾는건 다양한 방법들이 있는데 이 Statistics에서는 수학적 모델링을 통해서 가상 경제 시스템을 만들어 놓습니다. 그리고 여러가지 가설을 놓고 추론을 하죠. 예를 들어서 물가가 계속 올라가는데 이자율을 언제까지 올리면 이 물가가 올라가지 않을 것인가, 여러가지 가설을 세울 수 있죠. 이건 경제학자의 몫이 되겠죠. 이렇게 가설을 세우고 실제적으로 모델을 돌려봤을 때 이것이 검증이 되는지 통계적 유효성을 볼 수가 있는지가 가장 중요한 부분이고요. Machine Learning은 다릅니다. Machine Learning은 원인은 몰라도 됩니다. 이유는 중요하지 않습니다. 여기서는 예측이 가장 중요합니다. 우리가 forecasting이라고 하는데 관측되지 않은 값을 예측을 할 때 주로 사용합니다. 따라서 원인은 몰라도 되는데 가장 정확한 값만 예측해내는 것이 가장 중요한거죠. 그래서 우리가 Machine Learning에 많은 관심을 갖지만 글쎄요 제가 생각할 때는 경제학에서는 오히려 인과추론이 훨씬 더 중요한 토픽입니다. 남은 실습에서 같이 할 내용은 바로 그 인과추론에 대한 내용입니다. 이 부분에 대해서 실습을 같이 해보도록 하겠습니다.

[종합예제](p.18)
종합예제입니다. 종합예제는 우리가 지금까지 살펴봤던 데이터의 입수, 전처리, 데이터 분석을 종합적으로 다루는 건데요. 이제는 프랑스 중앙은행에서 제공한 DB∙NOMICS 말고 다른 데이터를 사용할건데요. FRED라는 데이터 베이스입니다. 이 FRED는 앞서 한 번 말씀드렸다시피 미 세인트루이스 연방준비은행에서 제공하는 금융경제 데이터 서비스고요, 지금은 흔한 서비스가 되어가지고 FRED의 특징을 보실 수 없지만, 처음에 나왔을 때는 이런 서비스가 없었습니다. 그래서 사람들이 이 서비스를 점점 많이 사용하게 되고 아직도 미국 중심의 데이터인데도 가장 많이 사용되고 있는 데이터 베이스 중에 하나입니다. 이 FRED 데이터 베이스에서 데이터를 가지고 올건데요, 우리가 하고 싶은건 일일 환율 데이터를 가지고 올겁니다. 아까 전에는 하나의 국가, 한국만 가지고 왔잖아요, 이번에는 세 개의 국가를 가지고 와보죠. 일 데이터인데 미국 달러 대비 원화 환율, 달러 대비 옌화, 달러 대비 스위스 프랑 이렇게 해서 3개를 가지고 올거고 물론 다 자동화된 기법으로 가지고올 겁니다. 가지고 오면 우리는 무엇을 해야할까요? 전처리죠. 전처리를 꼭 해야합니다. 전처리에서 가장 중요한게 결측치가 있는지. 우리는 여기서 결측치 제거 전략 그렇게까지 쓰진 않고요. 간단하게 결측치를 확인하고 이것을 어떻게 처리를 할건지를 같이 한 번 살펴보고요. 결측치를 처리를 했다라고 하면 그래도 좀 깨끗한 데이터가 돼서 이상치 체크는 안했지만, 여기서는. 했다 치고. 결측치가 제거가 됐다라고 하면 이 데이터를 가지고 주기를 지금 우리가 받은건 일일 환율이잖아요. 일일 환율 말고 분기로 바꿔보겠습니다. 분기로 바꿀 때 여기서 생각해보셔야 될 것이 우리가 일 데이터를 분기로 바꾸면 어떻게 되나요? 하나의 분기에는 91일, 92일 이렇게 있잖아요. 그럼 이 91일의 평균치가 하나의 분기의 값이 됩니다. 근데 만약에 여기서 91일 중에 데이터 10개가 결측치다라고 하면 결측치 값을 빼면 80여개로 평균치를 내는데 이것이 과연 분기를 대표할 수 있는 값일까요? 깊게 들어가게 되면 어려워지는데요, 이것은 경제학자라든지 데이터를 분석하는 데이터 애널리스트들이 자기가 하고 있는 연구에 가장 최적합한 값을 선택해야 합니다. 그래서 정답은 없죠. 여기서는 그런 문제가 있다, 그 정도만 알아주시면 되고요. 전처리가 끝났다하면 분석을 할 수 있습니다. 분석을 하게 되는게 바로 전기 대비 증감률도 구할 수 있고, 평균값도 구할 수 있고, 이것을 이용해서 변동성을 계산할 수 있고, 분포도 차트로 그려볼 수 있습니다. 결국은 우리가 자동화라는 빨간 약을 먹었기 때문에 이 모든 과정들이 한 번에 다 Google colab에서 할 수가 있는데요, 어떻게 하는지 같이 한 번 해보시죠.

[종합예제](p.19)
이번에는 FRED입니다. 이 FRED는 물론 무료 데이터인데요, 앞에서 보셨던 DB∙NOMICS와는 좀 달라요. 왜 다르냐면 무료 데이터지만 계정을 만들어서 계정에서 API라는 키를 생성 해야합니다. 이게 어려워 보이지만 따라해보시면 상당히 쉽습니다. 그래서 FRED 홈페이지로 가셔서 계정을 만드시고, 로그인을 하시게 되면 이 메뉴를 보실 수 있는데요. 이 메뉴를 보시게 되면 이 API라는 키, API Keys라는 메뉴가 있고요. 지금은 저는 이미 API 키를 생성해 놓았습니다. 메뉴 상단에 보시면 Request API Key라는 버튼을 누르게 되면 몇 개 기본적인 항목을 물어보고 이런 고유의 API 키를 생성해줍니다. 지금 이제 청취자분들이 만드신 API 키를 Google colab에서 사용하시면 됩니다. 지금 보여드리는 이 키는 아마 강의가 공개되는 시점에서는 유효하지 않게 처리가 될 것이기 때문에 꼭 만드시길 바랍니다. 그래서 키를 만드시게 되면 이 키 값을 복사해놓고요, 그 다음에 여기서 할 것은 FRED 메인 페이지로 가서 일일 환율을 찾아야 되겠죠. 한 번 이런 키워드로 찾아볼까요. korean won to us dollar 이렇게 찾아보면 몇 개가 나올까요? 저 위에 보면 20만 여개의 숫자가 나오게 됩니다. 첫 번째 값을 선택해볼까요. South Korean Won to U.S. Daollar Spot Exchange Rate를 선택을 하시게되면 이러한 화면으로 오게되고, 언제나 계속 말씀드리지만 동영상을 멈추시고 데이터를 살펴보시는 것도 좋습니다. 아까 말씀드린 frequency가 보이죠. 지금 frequency가 화면에서 daily, 그리고 unit도 같이 보이게 됩니다. 이렇게 주기가 보이게되고 그 다음에 여기서 자동화를 위해서 필요한건 DB∙NOMICS에서 우리가 했었던 키 값, 이 시계열의 키 값이 필요한데요. 시계열의 키 값은 저 하이라이트된 부분 DEXKOUS가 이 시계열의 키 값입니다. 시계열 분석을, 이 데이터 베이스를 자주 사용하다보면 눈에 패턴이 보이거든요. 지금 이것만 보더라도 저는 Daily Exchange Rate 앞의 세 자리가요. 그 다음 두 자리 KO, 한국이 되겠죠. 그 다음 US 이런식으로 패턴이 보입니다. 이렇게 패턴을 알게되면 나머지 것은 찾아볼 필요도 없죠. KO를 우리가 찾고 싶은 일본, JP. 그 다음 스위스, CH로 바꿔주기만 하면 그 코드가 시계열 코드를 알 수 있죠. 한 번 되는지 안되는지 이따가 실습에서 같이 해보도록 하겠습니다. 지금 우리가 두 개를 가지고 오겠습니다. 하나는 API 키 값, 여러분들겁니다. 그 다음에 이 시계열의 키 값, 이 DEXKOUS를 가지고 오게 됩니다. 이것을 복사해서 colab으로 오시죠. colab으로 오셔서 colab에서 이 부분을 시작해볼까요. 지금 첫 번째 우리가 입수와 전처리에서는 DB∙NOMICS라는 데이터 서비스를 이용하기 위해서 DB∙NOMICS라는 프로그램을 여러분의 가상 컴퓨터에 설치했잖아요. 지금은 우리는 FRED를 이용해야 합니다. 이 FRED에서도 이러한 프로그램을 제공하고 있는데요, 이것을 여러분들의 가상 컴퓨터에 설치할 수 있습니다. 명령어는 동일합니다. 지금은 이 명령어를 꼭 아실 필요는 없습니다. 그래서 이 명령어를 통해서 이 프로그램을 여러분들의 가상 pc에 설치를 하고요, 설치가 됐으면 이 프로그램을 이용할 수 있게 불러옵니다. 이게 불러오는 명령어고요. 여기서 이제 한 가지 하셔야할 것이 아까 복사한 여러분들의 API 키 값을 여기에 복사해서 넣으십시오. 그리고 이 부분을 실행시키십시오. 실행시키고 나서 드디어 우리가 이제 지금부터 FRED 데이터 베이스에 접속해서 원하는 시계열 값을 가지고 올텐데요. 우리가 첫 번째로 원하는 시계열 값은 달러 대비 원화 일 환율이죠. 그래서 아까 복사한 시계열 키 값을 복사해서 넣고, 가지고 오면 데이터를 한 번 눈으로 보면 여기서 보시면 제일 끝에 Length라는게 보이죠 이 Length가 만여 개, 10730개의 관측값이 있습니다. 1981년 4월부터 2022년 5월까지. 근데 아마 여러분들이 보시는 시점에선 분명히 더 커져있을 겁니다. 이렇게 되면 우리가 만여 개의 관측값을 가지고 온건데요. 여기서 만약에 시계열을 잘하시는 분들은 바로 보실 수가 있습니다. 일 데이터로 보이긴 하는데 일 데이터라고 명확하게 표시가 안되어 있습니다. 그냥 만여 개의 데이터. 이거는 그래서 시계열 데이터 분석에 사용할 수 없습니다. 그렇기 때문에 이러한 경우에는 꼭 일 단위 주기를 명시 해야합니다. 일 단위 주기를 명시하기 위해서는 다음과 같은 명령어를 쓰게 되는데요. 지금도 이거는 명령어 정도로만 이해해주시면 됩니다. 근데 이 명령어가 아마 여러분들도 직관적으로 이해하실 수 있으리라고 저는 생각이 되는데요. 보시면 period를, 주기를 daily로 이 데이터를 하겠다라는 명령어죠. 일 단위 주기 데이터를 명시를 해주면 그 다음부터 시계열 분석을 할 수 있습니다. Python에서 제공하는 막강한 통계 함수들을 바로 이용할 수가 있죠. 그래서 지금 하는건 결측치를 제거하고, 일 데이터를 분기로 바꾸는 것을 하였는데요. 보시면 여기서 이제 결측치를 제거하기 위해서는 dropna, 여기선 결측치를 다 버렸습니다. 버리는 것이 좋은지 안좋은지는 일본과 스위스의 예제에서 같이 비교해서 보도록 하겠습니다. 결측치 값을 버리고, 일 데이터를 분기로 바꾸고, 분기로 바꿀 때 일 데이터의 평균값을 쓰겠다라고 실행시키시면 바로 이렇게. 지금 보면 frequency가 정확하게 분기로 되어있고, 아까 만여 개의 데이터가 165개의 분기 데이터로 바뀌어있는 것을 보실 수가 있습니다. 지금 우리가 한 것이 한국에 대해서 했잖아요. 이것을 한 번 일본과 스위스도 동일하게 해볼까요. 아까 말씀드렸다시피 시계열 코드가 패턴이 있다고 했잖아요. 이 패턴에서 한국을 일본과 중국으로 바꾸겠다라는 명령어가 이 정돈데요. 이 명령어를 지금 제대로 아실 필요는 없습니다. 이 명령어를 통해서 3개의 시계열 코드를 생성을 했죠. 중간에 KO, JP, CH만 달라집니다. 그래서 이 3개의 시계열 코드를 세 번 반복해서 FRED에서 데이터를 가지고 오게됩니다. 데이터를 가지고 오게되는 과정이 첫 번째, FRED 데이터입수라는 이 블록에서 우리가 할 수 있는데, 이 블록을 한 번 실행시켜볼까요? 실행시킬 때 보면 제일 마지막에 하나의 시계열을 불러올 때마다 이 시계열에 대한 간단한 통계값을 보여줍니다. 한 번 해보죠. 해보게 되면 3개의 라인이 보이는데요. 보면 한국, 일본, 스위스. 관측 개수는 만여 개, 만삼천여 개, 만여 개 이렇게 볼 수 있고 시작일도 볼 수 있고요. 그 다음에 여기서 눈여겨 봐야될 것이 결측치입니다. 지금 보면은 한국 데이터 같은 경우는 만여 개 데이터 중에 450개가 결측치죠. 0.5%가 약간 안되는. 이 0.5%를 무시할 수 있을까요? 정답은 없습니다. 여러분들의 모델에 달려있습니다. 무시를 할 수 있다면 제거를 하면 되고, 무시를 못한다면 결측치 채워 넣을 수 있는 여러가지 전략들을 테스트 해보는 것이 좋습니다. 일본 같은 경우는 약간 작죠. 스위스 같은 경우는 한국과 비슷한 결측치 비율을 보이고 있습니다. 이렇게 데이터가 입수가 되고 나면, 우리가 아까 앞에서 했던대로 분기 데이터로 변환을 할텐데요, 분기 데이터로 변환하는 방법은 이 블록을 실행하면 됩니다. 이 블록을 하나하나 따져보면 지금 이게 길게 보이지만 녹색은 주석입니다. 주석을 제거하면 상당히 단순한 코딩으로 되어있습니다. 보시면 결측치를 제거한 dropna라는 함수를 볼 수 있고, 일 데이터를 분기로 바꾼 resample이라는 함수를 볼 수 있고, mean은 평균치를 쓰겠다는거고요. 이렇게 하나의 라인에서 모든 전처리가 끝나고 전처리 된 것을 저장해서 출력을 해보면 어떻게 되는지 보시면, 실행을 시켜보면, 이렇게 각 시계열별로 분기로 변환된 것을 보실 수가 있고, 우리가 결측치를 버렸기 때문에 분기로 변환하게 되면 결측치가 없습니다. 아주 깨끗한 데이터죠. 물론 어떨 때는 양심의 가책을 느끼기도 합니다. 이렇게 분기 데이터를 가지고 뭘 할까요. 아까 간단한 통계를 낸다고 했죠? 우리가 여기서 알고 싶은 것은 우선 일 데이터로 다시 돌어가서 일 데이터에서 과연 환율이 매일마다 얼마나 변할까요. 편차가 클까요? 그걸 한 번 히스토그램으로 찍어볼까요. 찍기 위해서는 편차를 먼저 구해야 되는데 이 편차는 우선 이걸 전일 증감으로 바꾸고, % change로 바꾸고, 전체 평균을 각각의 전일 증감에서 빼주면 편차가 나오게 되겠죠. 편차를 구해서 히스토그램으로 찍으면 이러한 차트를 보실 수가 있습니다. 대부분이 0에서 모여있죠. 이것은 너무나 당연한 것 같습니다. 왜냐하면 매일 매일 환율의 변화는, 변화의 폭은 전체 평균에 비해서 그렇게 크지는 않을 것 같습니다. 몰론 여기서 눈에 안보이는 변동폭이 큰 날들이 분명히 존재할겁니다. 그것이 근데 지금은 눈에 안보이죠, 너무 작아서. 그럼 이것을 분기 단위로 보면 어떤 패턴일까요? 똑같습니다. 지금 보면 앞에서 실행했던 라인에서는 ts 데이터에서 데이터를 가져왔기 때문에 일 데이터가 됐지만, 지금은 ts under score qq에서 가지고 오게 되면 똑같은 수식을 이용해서 히스토그램을 그려보면 이렇게 생겼습니다. 깨끗하지 않습니다. 약간 불안한데요 왜 이럴까요? 곰곰이 생각해보면 분기별로 봤을 때는 분명히 환율의 변동이 큰 분기가 있을겁니다. 특히 우리가 가져온 것은 1980년부터 2022년이기 때문에 40년의 기간 동안 많은 이벤트들이 있었죠. 그래서 가장 크게 변동된, 직전 분기보다 30%보다 더 큰 변동을 보인 이 마지막에 있는 파란색 바. 과연 이날은 언제였을까요 한 번 볼까요? 여러분들 직감적으로 아마 수업을 같이 들으셨다면 바로 대답을 하셨을텐데요. 이 날을 보기 위해서 어떻게 해야 되냐면 우리가 머릿속에 생각하는 수식을 Python에서 그대로 구현한 겁니다. 그래서 0.3, 30%보다 큰 것만 보여주는데, 나는 날짜를 알고 싶어라고 한겁니다. index[0]이라는건 날짜를 알고 싶다는 것이거든요. 이렇게 해서 보게 되면 1998년이면 다 알죠, 어떤 일이 일어났었는지. 1998년이라는 것을 알게됐고요. 그럼 이것을 우리가 가지고 온 일 데이터로 그려보자, 어떻게 차트가 생겼을까라는 것을 하기 위해서 우리가 두 개를 가지고 있잖아요. ts데이터, ts데이터qq. ts데이터qq에서 분기의 날짜 값을 가지고 왔고, 1998년 1분기, 1997년 4분기의 값을 일 환율을 한 번 차트를 그려볼까요. 차트를 그리는 명령어가 이렇습니다. 이 명령어를 이용해서 차트를 그려보면 바로 이렇게 환율이 급격하게 올라가는, 원화 가치가 급격하게 떨어지는 것을 보실 수가 있습니다. 우리가 종합예제를 본건데, 여기서 보시면은 지금 뭔가 라인이 끊어져있는 부분이 보이죠. 일 단위 환율 값을 쭉 라인을 그려놓다가 데이터가 없는겁니다. 이게 바로 결측치거든요. 저는 분석을 해본 경험이 있으면 보이는데요, 여러분들도 바로 느끼시죠. 이게 크리스마스 때구나, 이게 설 연휴 때구나, 시장이 닫혔겠구나. 또 그렇지 않은 부분도 있는 것 같고요. 그렇기 때문에 이게 어렵습니다. 제대로된 결측치 제거 전략을 위해서는 각 나라에 있는 공휴일, 설날 같은 경우는 우리나라만 있으니까. 이렇게 각 나라의 고유의 공휴일이라든지 아니면 시장이 폐장한 날 그런 날은 제거를 해주는게 맞고요. 그렇지 않은 결측값은 채워 넣는게 맞고요. 고급 금융경제 분석으로 갈수록 여러가지 고려하셔야 될 부분이 많습니다. 지금까지 종합예제를 살펴보셨구요. 다시 한 번 강조를 드릴게요. 꼭 따라해 보시기 바랍니다. 다른 시리즈도 넣으셔서 그대로 돌려보시는 것이 도움이 되시리라고 생각이 듭니다. 온라인으로 하기 때문에 온라인 강의의 장점을 살리려면 이렇게 해야되지 않을까 싶습니다.

[분석 전문가가 되기 위한 필수 IT 지식](p.20)
그래서 지금까지 이론적 실습 내용을 마쳤고요. 나머지 두 장은 혹시 이 강의를 들으시는 분들 중에서 분석 전문가가 되기 위해서. 이게 한국은행 금요강좌다보니까 아무래도 개발자, 소프트웨어 엔지니어 백그라운드보다는 도메인 분야에서 금융경제 분야, 아니면 사회과학 분야에서 보시는 분들도 많을텐데요. 과연 내가 이 분야에 있다면 어떻게 IT 통계지식을 획득할 수 있을까요? 여기에 대해서 정답은 없는데 제 경험상 저의 직원들이랑 일 했을 때 언제나 추천하는 방법은 프로그램에 필요한 지식 습득은 최소화해라. 시간은 거기에 최소화만 쓰라고 합니다. 책을 사서 1부터 100까지 보고 난 하겠다고 하면 중간에 지치게 됩니다. 그리고 책을 다 봤다고 해서 어디서부터 시작해야 될지 막막하게 되는데, 그래서 저는 언제나 요청드리는건 사례를 중심으로, 사례를 가지고 직접 같이 해보는 것이 좋다라는게 첫 번째고요. 두 번째는 Interactive 프로그래밍에 익숙해져야 됩니다. Interactive 프로그래밍이 무엇이냐 하면 지금까지 우리가 한 것이 바로 Interactive 프로그래밍입니다. 우리가 시중에서 프로그래밍 책을 사게되면 이 프로그래밍 책들의 주요 저자들이 대부분 개발자들, IT 전공자들입니다. IT 전공자들이 개발 과정에 최적화되게끔 책들이 쓰여져 있는데 그렇게 접근하면 금융경제 데이터 분석에 있어서의 프로그래밍을 배우는 것에 상당히 괴리가 있습니다. 그렇기 때문에 하나의 학습 단계가 더 필요하기 때문에 언제나 강조하는 것이지만 Interactive 프로그래밍에 익숙해져야지 상당히 유리합니다. 그럼 과연 어떻게 하면 될까요? 몇 가지 참고할 만 한 자료를 준비해봤는데요.

[참고할 만 한 자료](p.21)
여러가지 교재가 있겠지만 그 중에 이 교재도 훌륭합니다. 첫 번째 교재로 4장까지 정도 학습을 하시고요, 최소한의 것만 아시라는 거죠. 그 다음부터는 Interactive 프로그래밍을 하시는 연습을 하시면 됩니다. 첫 번째는 금융경제를 위한 파이썬 프로그래밍. 이것은 노벨 경제학 수상자인 토마스 서전트 교수가 직접 기획을 하고 디자인 해서 만든 코스입니다. 금융경제 학도를 위해서 파이썬 프로그래밍을 이용해서 어떻게 학습을 할 수 있는지를 정말 상세하게 소개를 하고 있습니다. 이 링크를 타고 들어가시면 여러가지 코스들이 있는데요, 그 코스를 열어보시면 Google colab에서 보셨던 그대로 Interactive 한 것을 똑같이 보실 수 있습니다. 그렇게 학습을 하시면 되고요. 그리고 또 하나의 예제는 시계열 분석에 대한 모든 것, kaggle 많이 들어보셨을 겁니다. 프로그래밍 챌린지, 컴페티션을 하는 사이트인데요. 여기서 또 하나 제공하는 것은 훌륭한 분석 사례를 소개해놓는 란이 있습니다. 그 중에서 제가 말씀드리고 싶은건 바로 이 분석 예제인데요. 이 링크를 타고 들어가보시면 똑같습니다 Google colab이랑. Copy&Edit을 누르게 되면 나만의 가상 공간이 생깁니다. 그리고 이 링크에서 제공하는 시계열 분석 코드를 보실 수가 있습니다. 그것을 일일이 따라해 보실 수 있는데요. 제가 리뷰를 해봤을 때는 저희는 이것을 노트북이라고 하거든요. 이 노트북이 가장 훌륭한, 여러가지 훌륭한 사례가 있겠죠. 가장 훌륭한 사례 중에 하나라고 봐도 무방한 정도의 퀄리티를 보여주고 있기 때문에 한 번 보시고 참조하시면 좋을 것 같습니다.

[효과적인 금융경제 데이터 분석방법](p.22)
그래서 지금까지 여러분께 효과적인 금융경제 데이터 분석방법에 대해서 같이 이야기를 나누고 실습을 해보았는데요. 한 번 말씀 드리고 싶은건 이 내용은 제 개인의 의견이고 제 소속기관인 국제결제은행의 공식 견해와는 무관하다는 점을 말씀드리고요. 아무쪼록 여러분들도 효과적인 금융경제 데이터 분석이 되기 위해 이 강의가 도움이 되셨다면 좋겠습니다. 같이해주셔서 감사합니다.

내용

제888회 한은금요강좌

   ㅇ 일시 : 2022. 6.10(금)

   ㅇ 주제 : 효과적인 금융경제 데이터 분석 방법

   ㅇ 강사 : BIS 통화경제부 권병천 박사

유용한 정보가 되었나요?

담당부서
경제교육실 경제교육기획팀
전화번호
02-759-4269, 5325

내가 본 콘텐츠