Stata 에서 지도
이용한 그래프 그리기
![]() ![]() |

가끔씩 데이타들을 위 그림과 같이 지도로 이용해서 보여주면 편리할 때가 있습니다.
뭐라 부르는 것이 정확한 용어인지 모르겠지만, Stata 에서 지도를 이용해서 그래프 그리는 법 소개하겠습니다.
아래 두 링크 참조했는데, 링크에 소개된 방법을 그대로 따르면 제 컴퓨터에서는 몇 가지 에러가 납니다 (예를 들면 그럴 필요가 없어
보이는데, x 좌표의 범위를 (-20,20)으로 한정하라든지, dta 확장자를 안 넣어주면 에러가 난다든지). 아래 소개하는 예는, 최소한 제
컴에서는 아무런 문제 없이 돌아갔습니다. 쓰시는 컴 사양과 데이타에 맞춰서 알아서 쓰시기 바랍니다.
- How do I graph data onto a map? (http://www.stata.com/support/faqs/graphics/tmap.html)
- Creating maps with Stata (http://huebler.blogspot.com/2005/11/creating-maps-with-stata.html)
1. 먼저 tmap, shp2dta, mif2dta 세 가지 파일이 필요합니다. 만약에 이 파일들이 없을 경우, Stata
명령어창에서
ssc install tmap
ssc install shp2dta
ssc install mif2dta
차례로 쳐 주면 알아서 깔립니다. 인터넷 연결이 되어 있어야 합니다.
tmap 은 본인의 데이타와 좌표 정보를 이용해서 그래프를 그려주는 프로그램입니다.
좌표를 비롯해서 여러 정보를 포함한 지도 파일에는 ESRI (Enviroment Systems Research Institute) 에서
개발한 shapefile (확장자 shp)과 MapInfo interchange format (확장자 mif)이 있는데, shp2dta 와
mif2dta 는 shp 파일과 mif 파일을 Stata 에서 쓸 수 있게끔 만들어 주는 명령어들입니다. 즉, shp 파일을 쓰면
shp2dta를, mif 파일을 쓰면 mif2dta 를 쓰면 됩니다. 이 예제에서는 shapefile 을 이용하기 때문에 mif2dta 는 쓸
필요 없습니다.
2. 필요한 지도를 찾아야 합니다. 보통 google 에서 "필요한 나라/지역 + shapefile" 치면 대부분 찾아집니다. 미국의
경우 "United States + shapefile" 하면 주별 경계가 표시된 shp 파일 찾을 수 있습니다. 세계 각국의 지도는 http://www.cdc.gov/epiinfo/shape.htm 에 있습니다. 여기서는 한국지도를
쓰겠습니다.
http://www.cdc.gov/epiinfo/asia.htm 에서 South Korea 를 클릭하면 자동압축
파일이 나오는데, 편리한 폴더(제 경우는 c:\data)에 풀어 놓으면 5개의 파일이 생깁니다. 파일 중 ks.shp 가 있는데 이 파일을
Stata 에 맞게끔 바꿔줘야 합니다.
cd c:\data
먼저 작업폴더를 바꿔줍니다. 다음 shp2dta 를 이용하면 두 가지 파일이 생깁니다. 하나는 국가이름, 지역이름 등의 정보를 가진
파일이고, 또 하나는 (x,y) 좌표정보를 가진 파일입니다.
shp2dta using ks, database(skdb) coordinates(kcord)
genid(id)
shp파일을 변환합니다. ks는 다운 받은 shp 파일 이름입니다. database ( ) 안에는 국가이름, 지역이름 등의 정보를
포함할 파일 이름을 지정해주고, coordinates ( ) 안에는 좌표 정보를 포함할 파일 이름을 지정해 줍니다. 그리고, genid (
) 안에는 ID identifier 역할을 할 변수 이름을 정해줍니다. 이 경우, 대한민국의 14개 시도가 id = 1,2,3,...,14 로
표시됩니다.
shp2dta 명령어 실행후 생성된 파일을 보면, skdb.dta 에는 국가이름 = 한국, 14개 시도의 이름, id 등의 정보가
들어가 있습니다. kcord.dta 에는 id 와 (x,y) 좌표 정보가 들어가 있습니다.
skdb.dta 는 이렇게 생겼습니다.

kcord.dta 는 이렇게 생겼구요. 좌표정보가 보이지요.

3. 본인의 데이타와 위 파일들을 merge 명령어를 써서 합쳐야 합니다. 제가 쓸 데이타 파일은 kdata.dta
인데 id 변수를 고리로 skdb.dta, kcord.dta 와 연결되니 id 변수를 반드시 가지고 있어야 합니다.
id 변수가 있고, x 라는 변수를 편의상 1부터 14까지 만들었습니다. x 변수에 시/도별 인구, 기독교인 비율,
산업생산량 등 사용할 변수를 입력해서 쓰시면 됩니다.

use kdata, clear
kdata.dta 파일을 불러 옵니다 (이 예제와 똑같이 우리나라 14개 시/도 지도를 쓰시면 첨부된
kdata-5296-ergodic.dta 를 kdata.dta 로 이름 바꾸고, x 변수에 관련 변수값을 넣어주면 됩니다)
merge id using skdb, sort unique
id 변수를 매개로 kdata.dta 와 skdb.dta 를 합치는 명령어입니다. 성공적으로 합쳐졌는지 확인하려면
tab _merge 와 drop if _merge!=3 을 차례로 실행하면 됩니다.
아래 그림을 보면 skdb.dta 에 우리의 관심 변수인 x 가 포함되었습니다.

4. tmap 명령어를 이용해서 x 변수를 지도에 그립니다.
tmap choropleth x, id(id) map(kcord.dta) palette(Blues)
tmap choropleth 다음에는 지도 위에 그릴 변수 이름을 표시해줍니다. id ( )에는 14개 시/도의 identifier
변수 이름을, map ( )에는 좌표정보를 가지고 있는 파일 이름을 넣어줍니다. palette(Blues)는 파란 색 계열로 지도를 표시하라는
옵션입니다.
결과물입니다.

특정 시/도를 제외하고 싶으면 해당되는 id 를 이용하면 됩니다. 예를 들어 서울을 제외하고 싶으면, 서울의 id 번호 7을 이용해서
아래와 같이 실행하면 됩니다.
tmap choropleth x if id!=7, id(id) map(kcord.dta) palette(Blues)
댓글 없음:
댓글 쓰기