통계공부/Stata

[Stata] 그래프 작성: 막대 그래프(bar chart)

대학원생A씨 2021. 8. 3. 09:15
반응형

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 명령어에 대한 설명

 

 

해당 혈압수치에 대한 가상의 데이터셋으로 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

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

 

graph bar bp_after, over(agegrp)

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

 

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

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

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

 

graph bar bp_before bp_after, over(agegrp) over(sex)

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

 

graph bar (max) bp_before bp_after, over(agegrp) over(sex)

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

 

graph bar (max) bp_before bp_after, over(agegrp) over(sex)

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

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

 

graph bar (max) bp_before bp_after, over(agegrp) over(sex) nolbael

범례 부분을 보면 위의 그래프들과 달리 max of 라는 부분이 지워진 것을 볼 수 있다.

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

 

graph bar (max) bp_before bp_after, over(agegrp) over(sex) exclude0

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

반응형