Stata 그래프 - Stata geulaepeu

Stata 그래프 - Stata geulaepeu

Stata 메뉴의 새로운 포스팅 시리즈로 그래프 작성 절차를 다루어 보고자 한다. 통계 분석 프로그램에는 Stata 외에도 SAS, SPSS 등이 있는데 이들 프로그램과 비교하였을 때 Stata의 두드러진 장점 중 하나는 그래프이다.

Stata 그래프 - Stata geulaepeu
Stata 그래프 - Stata geulaepeu

출처: https://www.stata.com/features/overview/graph-styles/

위의 사진은 Stata 공식 홈페이지에서 가져온 사진으로, Stata 프로그램에서 출력된 그래프를 바로 논문에 게재하여도 문제 없을 만큼의 퀄리티를 보여준다.

Stata에서 그래프를 작성하기 위해서는 기존 분석과 마찬가지로 인터페이스를 활용하는 방법도 있고, 명령어를 입력하는 방법도 있다. 또한 Stata 프로그램에는 그래픽 편집기가 있기 때문에, 명령어 혹은 인터페이스로 먼저 초벌 그래프를 만든 후 그래픽 편집기를 이용하여 그래프를 보완할 수 있다.

Stata 그래프 - Stata geulaepeu
Stata 그래프 - Stata geulaepeu

왼쪽은 그래프 작성과 관련된 인터페이스 부분이며, 오른쪽은 그래픽 편집기 창 화면이다. 

해당 포스팅 시리즈에서는 인터페이스를 이용해 그래프를 그리는 방법은 제외하고 명령문과 그래픽 편집기를 사용하는 방법에 대해 다루고자 한다. 왜냐하면 데이터 분석과 마찬가지로 인터페이스 보다 명령어를 통해 그래프를 그리는 것이 반복된 작업에 용이하며, 연구자가 보다 자세한 옵션들을 설정할 수 있기 때문이다.

먼저 Stata에서 어떠한 종류의 그래프를 그릴 수 있는지 살펴보도록 하자. Stata 홈페이지에 제시된 그래프 유형을 살펴보면 막대 그래프(bar charts), 히스토그램(histograms), 박스 차트(box plot), 스파이크 차트(spike plots), 산점도(scatterplot) 외에 수많은 그래프 형식을 제공하고 있다

이처럼 stata에서는 다양한 유형의 그래프를 작성할 수 있다. 이와 같은 그래프 작성을 위한 command의 기본 형태는 아래 표와 같이 정리할 수 있는데, 구체적인 내용은 이후 포스팅에서 설명하도록 하겠다.

기능 명령어 설명
그래프 작성 graph twoway 산점도, 선그래프 등을 작성
graph matrix 산점도 매트릭스 작성
graph bar 막대그래프 작성
graph dot 점 그래프 작성
graph box 상자 도표 작성
graph pie 파이 도표 작성
histogram 히스토그램 작성
qnorm/pnorm/qqplot  qnorm/pnorm/qqplot 작성
kdensity 커널밀도 함수 곡선 작성
그래프 저장 graph save 그래프 저장하기
graph use 저장된 그래프 가져오기
graph display 저장된 그래프 진열하기
graph combine 여러 개의 그래프 병합하기
그래프 출력 graph print 현재 그래프 출력
set printcolor 그래프 출력 색상 지정하기
graph export 그래프 파일을 다른 형식으로 저장

Stata 그래프 - Stata geulaepeu

Stata 프로그램의 장점 중 하나는 그래프 편집으로, 논문에 바로 게재할 수 있는 퀄리티의 그래프를 바로 얻을 수 있다는 장점이 있다. 이에 이전 포스팅에서 Stata 프로그램에서의 그래프 작성에 관한 기초 내용을 다루었으며, 이번 포스팅에서는 stata 바 그래프 작성과 관련한 구체적인 명령어를 살펴볼 예정이다. Stata 그래프 작성의 기초가 궁금하신 분들은 이전 포스팅을 참고하길 바란다.

☞ 2021.07.28 - [통계공부/Stata] - [Stata] 그래프 작성의 기초


그래프 작성과 관련한 명령어를 알아보기 위해 stata 프로그램에 기본으로 내장된 데이터를 예시로 들어보자. Stata에는 다양한 데이터를 기본 데이터로 내재하고 있는데, 이 중 오늘은 ‘bpwide’라는 데이터셋을 이용할 것이다. 이를 위한 명령어는 아래와 같다.

sysuse bpwide

☞ sysuse 명령어에 대한 설명

bpwide라는 데이터셋을 불러왔는데, 해당 데이터셋에 대한 구조와 변수가 궁금하다면 describe 명령어를 사용해주면 된다. 그러면 아래 사 진과 같이 데이터의 관찰값(obs: 120), 변수의 개수(vars: 5), 용량(size: 960)변수명, 저장형식(storage type), 표시형식(display format), 라벨값(value label), 변수 라벨(variable label)을 확인할 수 있다.

describe

☞ describe 명령어에 대한 설명

Stata 그래프 - Stata geulaepeu

해당 혈압수치에 대한 가상의 데이터셋으로 paitent는 환자의 ID, sex는 환자의 성별(범주형 변수), agegrp은 나이 범주(30-45/46-59/60+), 전후 혈압수치(bp_before, bp_after) 5개의 변수가 있다. 데이터셋에 대한 이해가 얼추 되었으니 그렇다면 이제 막대그래프를 그려보도록 하자. 막대그래프에 syntax의 기본 구조와 옵션들은 아래와 같다.

graph bar 변수명 : 세로 막대그래프 그리기
graph hbar 변수명 : 가로 막대그래프 그리기
graph bar 변수명, over(변수명) : over 괄호 안에 오는 변수값에 따른 막대그래프 그리기
graph bar 변수명, nolbael : 범례에 오직 y 변수명만 표기하도록 하는 옵션
graph bar 변수명, exclude0 : y축에 0의 값을 강제로 포함시키 않도록 하는 옵션

먼저 후 혈압수치(bp_after)의 막대그래프를 그려보도록 하자.

graph bar bp_after
Stata 그래프 - Stata geulaepeu

그래프 결과가 당황스러울 수 있으나, 이렇게 나오는 것이 많다. y축을 살펴보면 알 수 있듯이 막대그래프에서는 해당 범주에 속하는 값들의 평균값(mean)으로 막대그래프가 그려지며, 위의 예시에서는 어떠한 범주 설정 없이 bp_after에 대한 막대그래프를 그려달라고 했기에 이와 같은 결과가 나온다. 하지만 보통 연구자들은 이런 그래프가 필요가 없을 것이다. 대신 연령별에 따른 혈압수치, 혹은 성별에 따른 혈압수치가 궁금할 수 있다. 이처럼 범주를 설정하기 위해서는 over이라는 옵션을 사용해야 한다.

graph bar bp_after, over(agegrp)
Stata 그래프 - Stata geulaepeu

좀 더 그럴듯한 그래프가 그려졌다. 그렇다면 이번에는 연령뿐만 아니라 성별이라는 기준도 추가해보도록 하자. 이를 위한 syntax는 아래와 같다.

graph bar bp_after, over(agegrp) over(sex... ①
graph bar bp_after, over(sex) over(agegrp ... ②

Stata 그래프 - Stata geulaepeu
Stata 그래프 - Stata geulaepeu

왼쪽이 ①번 결과이고, 오른쪽이 ②번 syntax의 그래프 결과이다.

over 옵션 지정시 어떠한 변수를 먼저 넣느냐에 따라 막대그래프의 형태가 달라짐을 알 수 있다. 이제 추가로 성별, 연령별 전후 혈압수치를 모두 보도록 하자.

graph bar bp_before bp_after, over(agegrp) over(sex)
Stata 그래프 - Stata geulaepeu

앞서 설명했듯이 stata 프로그램에서 막대 그래프를 그릴 때, 기본적으로 평균값을 디폴트로 한다. 만약 내가 혈압수치의 평균값이 궁금한 것이 아니라 최댓값이 궁금하다면 이를 syntax에 넣어 원하는 그래프를 얻을 수 있다.

graph bar (max) bp_before bp_after, over(agegrp) over(sex)
Stata 그래프 - Stata geulaepeu

max 외에도 최솟값(min)을 지정할 수도 있고, 중앙값(meadian), 합계(sum)등 다양한 옵션이 지정 가능하다. 이제 위의 그래프를 가로 막대 그래프로 바꿔보도록 하자. 이는 단순히 위의 그래프를 가로로 눕혀주는 과정과 동일하다.

graph bar (max) bp_before bp_after, over(agegrp) over(sex)
Stata 그래프 - Stata geulaepeu

graph 옵션에는 정말 수많은 옵션이 있는데, 이 중 사용빈도가 높은 몇 가지 옵션만 설명해보도록 하겠다.

먼저 nolabel 옵션종속변수의 이름만을 사용하는 옵션으로 범례에 대한 설명(label이 붙지 않는다.

graph bar (max) bp_before bp_after, over(agegrp) over(sex) nolbael
Stata 그래프 - Stata geulaepeu
범례 부분을 보면 위의 그래프들과 달리 max of 라는 부분이 지워진 것을 볼 수 있다.

다음으로 exclude0 옵션y축에 0 값을 강제로 포함하지 않도록 하는 옵션이다.

graph bar (max) bp_before bp_after, over(agegrp) over(sex) exclude0
Stata 그래프 - Stata geulaepeu

이외에 다른 옵션들로 그래프의 이름을 짓는다거나 범례를 수정하는 등 여러 가지를 조작할 수 있지만, 이러한 수정은 syntax보다 그래프 편집기에서 편집하는 것이 용이할 수 있기에 이후 그래프 편집기 포스팅에서 설명하고자 한다.