Top

제  목    :    R에 처음 접근하기 어려운 분들을 위한 EZR 소개
작성자 관리자
등록일 2015년 09월 24일 15시 59분 06초 조회 8,987
대한뇌졸중학회
1. EZR소개
R은 freeware라는 점은 물론 사용자가 직접 원하는 기능을 추가할 수도 있는 등의 장점에 힘입어 의학분야는 물론 여러 분야에서 광범위하게 사용되고 있는 통계소프트웨어이다. 지난 7월 R에 대한 기본적인 설치법 및 사용방법에 관한 몇가지 사이트들을 소개한바 있다. 다만, 처음으로 R을 설치한 뒤 나타난 하얀 화면과 커서를 보면서 연구자가 느끼는 막막함은 현실적으로 매우 높은 진입장벽으로 작용한다. 윈도우 화면에서 원하는 자료를 클릭하고 버튼을 선택하면서 분석을 하게 되는 GUI형식의 SPSS와 달리 R이나 SAS는 모두 명령문을 직접 타이핑해서 입력하면서 자료를 정리, 분석해야 하기에 기본적인 명령어 및 사용법에 대한 숙달이 필수적이다. 이러한 R의 진입장벽에 대한 해결책 중 하나로 R을 GUI형식으로 만들어주는 보조프로그램이 몇 가지 존재한다.
대표적으로
R-commander (http://www.rcommander.com/)
Deducer (http://www.deducer.org/pmwiki/pmwiki.php?n=Main.DeducerManual)
RKWard (https://rkward.kde.org/)
등이 존재하는데, 오늘은 이중에서도 R-commander를 기반으로 만들어진 EZR이라는 프로그램에 대하여 설명드리고자 한다. EZR초기에는 Window용만 있었으나 얼마전부터 Mac용도 배포하고 있다.
EZR은 일본의 혈액종양내과의사 神田善伸 라는 분이 개발한 프로그램이며 아래의 홈페이지에서 다운받을 수 있다 (自治医科大学附属さいたま医療センター血液科 神田善伸). 작성자가 전문 통계학자나 프로그래머가 아니고 임상의사이다 보니 일반적인 의료인의 눈높이에 맞추어 사용이 가능하도록 작성되어 있으며 의학분야에서 자주 사용하는 대부분의 통계기능을 간단한 GUI형식으로 실행 가능하다.
EZR 영문홈페이지
http://www.jichi.ac.jp/saitama-sct/SaitamaHP.files/statmedEN.html

일본어홈페이지
http://www.jichi.ac.jp/saitama-sct/SaitamaHP.files/statmed.html
2. EZR설치
일단 설치를 해야 할텐데 위 영문 홈페이지의 중간에 보면 How to install EZR on Windows 라는 항목이 있다. 설치방법으로 두가지를 제시하고 있는데 R초보자의 경우에는 일단 간단한 첫번째 방법인 아래 링크를 클릭하여 설치파일을 다운받자. 본문 작성시점 (2015/9/20일)을 기준으로는 Ver 1.30이 가장 최신버젼이다.
http://www.jichi.ac.jp/saitama-sct/SaitamaHP.files/cgi-bin/downcon.cgi?down=http://www.jichi.ac.jp/saitama-sct/SaitamaHP.files/file/EZRsetupENG.exe&name=EZRsetupENG.exe&hp=http://www.jichi.ac.jp/saitama-sct/SaitamaHP.files/statmedEN.html

위 링크를 통해 다운받은 파일 (EZRsetupENG.exe)을 더블클릭하여 실행하면 EZR의 구동에 필요한 R, R-commander, EZR의 설치가 진행된다.
프로그램을 설치할 디렉토리 선택화면이 나오는데 그대로 Next를 선택하는 걸 추천하지만 다른 설치 경로를 지정해도 상관은 없다.
[EZR 설치 완료화면]
설치 완료 화면에서 Finish를 누르면 바탕화면에 EZR 이라는 실행아이콘이 나타나며 설치는 완료되었다. 사용자의 PC가 현재 32bit운영체제라면 32bit용만 사용이 가능하고, 64bit 운영체제라면 32, 64bit 모두 사용이 가능하다 (32-bit, 64-bit 둘 다 차이는 없는데 일단 32-bit를 사용한다고 가정하겠다).
바탕화면에 만들어진 EZR아이콘을 더블클릭하면 실제로 EZR이 실행된다.
EZR을 실행하면 두개의 창이 뜨는데 하나는 일반적인 R을 실행했을 때 보이는 R화면 (아래 그림 상단)이고, 또하나는 R-Commander라고 뜨는 EZR의 화면 (아래 그림 하단)이다.
[일반 R의 실행화면과 별반 다르지 않다]
 
[EZR의 실행 화면]
 
EZR실행시 같이 등장하는 R화면은 평소 R을 구동시켰을 때와 똑같으며 EZR사용을 위한 몇가지 명령어들이 실행된 상태라는 점만이 다르다. 직접 R명령어를 타이핑하여 실행시켜도 평소와 똑같은 결과를 보인다. 참고로 EZR은 R을 기반으로 구동되기 때문에 R화면을 닫으면 EZR자체도 닫혀버린다. 우리가 오늘 배울 EZR은 기본적으로 R-commander라고 뜬 화면을 조작하는 방식으로 이루어진다. 해당 화면의 상단에 나와있는 File, Edit 등의 메뉴 버튼을 선택하는 방식으로 자료를 분석하거나 그래프 출력 등의 작업을 수행할 수 있다.

EZR (R-Commander) 화면의 기본 구성을 말하면 맨 위에 있는 File, Edit, Active data set, Statistical analysis, Graphs and tables 등의 메뉴는 마치 Word프로그램의 메뉴처럼 해당 이름의 기능을 모아놓은 곳들이다. 보통 ‘File’에서 data를 읽거나 저장하고, ‘Statistical analysis’에서 원하는 통계방법을 골라서 실행시키고, 그래프를 그리고 싶으면 ‘Graphs and tables’ 항목에서 해당하는 기능을 선택하면 그래프 출력이 가능하다.
[EZR의 기본 메뉴 구성]
메뉴모음 바로 밑에는 현재 지정된 Data set (앞으로 분석할 자료테이블이라고 생각하면 편하다)을 보여주는 부분 (최초에는 으로 표시된다. 선택된 Data가 없으므로) 이며 여러 Data set이 있을 경우에는 당연히 변경도 가능하다 (클릭하면 고를 수 있다). 옆에는 선택된 Data set을 편집 (Edit), 보기 (View), Save (저장) 하는 버튼이 존재한다.
 
[EZR의 화면구성]
메뉴 버튼들 밑에는 두개의 큰 창인 R Script, Output이 있다. EZR은 기본적으로 메뉴를 선택하고 버튼을 누르는 방식으로 실행하게 되는데, 분석을 실제로 수행하는 R은 text형식의 명령어만 알아들을 수 있다. 때문에 EZR은 사용자가 지시한 내용을 실제로 R에서 실행이 가능한 text형식의 R명령문으로 변경해주는 기능을 수행한다. 즉, 어떤 분석을 시행하라는 명령을 사용자가 화면에서 선택하면 EZR이 그에 맞는 R명령문으로 번역을 하고 그 번역된 내용이 R Script라는 부분에 표시되면서 실제 실행 결과물은 밑의 Output에 출력된다. (그렇기 때문에 R-script에 만들어진 명령어들을 copy하여 그대로 다른 R화면에 입력하여 실행하면 Output에 나온 결과물이 똑같이 출력된다. 거꾸로 말하면 R-script에 일반적인 R명령어를 입력하고 밑에 보이는 ‘Submit’버튼을 눌러도 R명령어의 실행결과가 Output에 출력된다.) 추후에 어느정도 EZR사용에 익숙해지면 R script에 나온 R명령문에서 변수명이나 옵션설정 등만 바꾸어서 직접 R명령문을 실행해보도록 하자.

여기까지가 EZR에 대한 간단한 소개와 설명이다. 복잡하게 느껴질지 모르겠지만 실제로 엑셀파일을 한 개 불러들여서 쉬운 통계명령을 실행해보면 이해가 쉬울 것이기에 몇가지 예제를 보여주겠다.
 
3. EZR 사용예제
일단 모든 분석의 시작은 자료를 불러오는 일이므로 많이 사용되는 엑셀파일형식의 자료를 불러들이는 기능을 실행해보자.

1) 자료파일 EZR로 불러오기
http://download1251.mediafire.com/lckdkzjcfh8g/2rg18zg914xkkuw/pbc.xls

위 링크의 엑셀파일을 다운받아서 C드라이브의 temp 폴더에 넣어두자 (C:/temp/pbc.xls). Download버튼을 누르면 받을 수 있다.

해당 파일에는 primary biliary cirrhosis 환자 418명을 치료군과 대조군으로 나누어 10년간 추적관찰한 내용이 들어있다. 자료내 변수를 설명하면 status는 생존여부 (0생존, 1이식수술, 2사망), time은 생존기간, stage는 질병의 stage를 뜻한다. 치료군은 D-penicillamain으로 치료받았고 (trt=1), 대조군은 placebo를 투여받았다 (trt=2). 보다 자세한 자료에 대한 설명은 http://127.0.0.1:19393/library/survival/html/pbc.html 에서 확인할 수 있다.
EZR에서 해당자료를 불러오기 위해서 R-commander 화면의 상단에 있는 메뉴에서 File > Import data > from Excel data set 을 선택하자.
[File 메뉴 밑의 이름들을 보면 알겠지만 Data를 읽어 들이거나, 저장하거나, 합치거나, 새로운 Data set을 만드는 등의 작업을 할 때 사용한다. Load data set은 기본적으로 R에서 자체적으로 사용하는 데이터 형식의 파일을 읽어 들인다는 내용이고, Import data는 기타 데이터 형식 (Excel, SPSS, STATA용 data형식등)의 자료를 불러들인다.]
메뉴를 선택하면 아래와 같은 화면이 나오는데 Enter name of data set 이라는 부분은 지금 읽어들일 파일의 데이터를 R에서 무엇으로 부르겠느냐 이야기다. data_excel 로 입력하고 OK버튼을 누르겠다.
[불러들일 자료에 붙일 이름을 설정]
그러면 실제로 불러들일 자료파일을 고르라고 나온다. 아까 파일을 넣어둔 위치인 C:/temp로 들어가서 pbc.xls 파일을 고르고 ‘열기’ 버튼을 클릭하자.
[불러들일 엑셀파일을 지정]
여기까지 정상적으로 실행하면 아래와 같은 화면이 나오고 data_excel 이라는 이름으로 엑셀에 있던 자료가 불러와져 있다.
[엑셀파일의 내용을 data_excel로 읽어들인 화면]
자료를 불러온 뒤에 위 화면을 보면 빨간원으로 표시된 부분에 방금 불러들인 data_excel 이 표시되어 있다. 분석을 위해 import한 자료이므로 자동으로 기준 Data set으로 잡아준 것이며, 앞으로의 모든 작업은 지정된 data_excel 에 대해서 실행된다는 뜻이다. 옆에 있는 View버튼을 누르면 data_excel의 실제내용이 창으로 나타난다.
[view버튼을 눌러 data_excel의 자료내용을 직접 확인하는 화면]
2) EZR에서 기본적인 통계분석 명령 실행하기


I. chi-square test, Fisher`s exact test

EEZR의 메뉴인 Statistical analysis 밑의 하부 항목을 보면 아래와 같이 다양한 통계분석방법들이 수록되어 있다. 일단 간단하게 군간의 범주형변수 (categorical) 의 분포에 차이가 있는지를 확인하는 Fisher`s exact test를 시행해보자.

치료군과 대조군 (자료에서 trt=1 는 치료군, trt=2 은 placebo이다) 에서 성별 (sex)이 차이가 있는지 보자, trt (1, 2)와 sex (m, f) 가 관심있는 변수이고 모두 범주형(categorical)이므로 chi-square test 혹은 Fisher`s exact test를 시행할 수 있다.
Fisher`s exact test는 위처럼 선택이 가능하다. 선택하면 아래와 같은 화면이 나오고 어떤 변수를 사용해서 분석을 할지 지정하게 된다. 당연히 우리가 보고자 하는 trt, sex 를 고르자. 아래쪽 옵션을 보면 chi-square test도 선택이 가능하니 Fisher`s exact test와 같이 선택해주자.
모두 선택하고 아래쪽의 OK를 누르면 R-script창에는 Fisher`s exact test와 Chi-square test를 시행하기 위한 R명령문이 나오고, 실제로 해당 명령어를 R에서 실행한 결과값이 아래의 Output창에 출력된다.
[chi-square, Fisher`s exact test를 실행한 화면]
마우스 스크롤을 위아래로 움직여서 Output창의 결과를 모두 확인할 수 있다. 파란상자로 표시된 부분을 보면 chi-square의 p-value는 0.4212이고, 주황색부분의 Fisher`s exact test에서는 p-value =0.3774 이다. 두 방법 모두에서 sex와 trt간에는 유의미한 관계가 없다는 것을 확인하였다.
 
II. Kruskal-Wallis test

이번에는 혈중 bilirubin (bili)가 질병의 단계 (stage)에 따라 다른지 비교해 보자. stage를 categorical 변수로 보고 bili가 정규성을 만족한다고 보면 ANOVA test를 하면되겠지만, 여기서는 bili가 정규성을 만족하지 않아 비모수적인 비교를 해야한다고 가정해보자. 이럴 경우 (셋이상의 군간에서 연속형변수값을 비교하는 비모수적 방법) 사용되는 통계법은 Kruskal-Wallis test 이다. Kruskal-Wallis test는 아래와 같은 메뉴에서 찾을 수 있다.
비교하고자 하는 연속형변수인 bili (response variable)를 먼저 고르고, Groups에 해당하는 stage 변수를 선택하고 OK를 누르면 stage에 따라 bilirubin이 다른지에 관한 Kruskal-Wallis test 분석이 실행된다.
[Kruskal-Wallis test 실행을 위한 변수 입력 화면]
[Kruskal-Wallis test의 실행결과]
출력 결과상 Kruskal-Wallis test의 p-value=4.15x10-10 이며, 이는 stage간 bilirubin값이 유의미하게차이난다는 결과로 해석할 수 있다. 참고로 stage에 따른 bilirubin의 값을 표현한 boxplot도 같이 출력된다.
 
III. Cox regression model

이번에는 생존분석으로 여러 변수를 고려한 Cox regression model을 실행해보자.

생존분석의 특성상 사망여부, 확인된 생존기간이 필요하다. excel_data에서 사망여부는 status=2 로 기록되어 있고, time이 확인된 생존기간이다 (정확히는 이식여부를 뜻하는 status=1도 고려해야 하나 여기서는 간단히 사망여부만 고려하겠다). sex, age, stage, bili, trt를 고려한 Multivariate Cox regression model을 만들어보자. Cox regression 항목은 메뉴에서 아래의 위치에 존재한다.
전과 마찬가지로 어떤 변수를 사용할지를 입력해줘야 한다. 아래 화면을 참고하여 생존기간 (Time), 관심event 발생여부(Event), 포함시킬 변수 내용에 맞는 변수명 (Explanatory variables)을 입력하자.
[Cox regression모델설정시 변수 입력 화면. 중간의 Event부분에는 (status==2) 로 입력하자]
맨위의 `Enter name for model` 부분은 그냥 이름 설정부분이므로 바꿀 필요가 없고 `Time` 항목에는 생존기간에 대한 변수지정이 필요하므로 time을 적고, `Event` 항목에는 (status==2) 로 정확히 입력하자 (오타로 보일 수 있는데 아니다). 그 뒤 `Explanatory variables` 에는 Cox model에서 투입할 변수명을 중간에 + 를 넣어 한꺼번에 입력하는 부분이다. stage의 경우 숫자로 표시되어 있으나 실제로는 연속형 변수가 아닌 categorical (정확히는 ordinal) 이므로 연속형으로 취급되지 않도록 as.factor(stage) 라고 입력할 필요가 있다. 만약 그냥 stage로 입력하면 연속형변수로 간주하여 계산된다. 위 화면내용대로 입력하고 OK를 누르면 multivariate Cox regression 모델이 실행되고 그 결과는 아래와 같다.
[Cox regression model 결과]
각 변수들의 HR, 95%CI, p-value를 확인할 수 있다. 분석 결과를 보면 age, stage, bili는 유의미하게 연관되어 있지만 (p<0.05), sex, trt는 생존에 유의미한 영향을 주지 않는다 (p>0.05).
 
IV. Propensity score matching & conditional logistic regression


이번에는 다른 data file을 불러들이고 propensity score에 따라 matched data를 만들어 비교해보자 (propensity matched analysis).

http://download1499.mediafire.com/z0n6g26kpkzg/v1cx7x6s2ut0xgw/lalonde.xlsx

이번 분석에 쓰일 위 파일을 다운받아 앞에서와 같이 import 하자 (File>Import Data>…). 불러들인 자료의 이름은 lalonde 로 지정하겠다.
정상적으로 불러들였다면 화면의 Data set부분이 이렇게 바뀐다.
즉, 앞으로의 명령어들은 방금 불러들인 lalonde 라는 Data set에 대해서 실행된다.
lalonde 자료의 구성에 대한 자료는 http://sekhon.berkeley.edu/matching/lalonde.html 에 설명되어 있다.
treat를 받은 군 (treat=1)과 안받은 군 (treat=0)을 치료군/대조군으로 설정하고, age, educ, re74를 고려한 propensity score 를 산정하고, 해당 score에 맞추어 치료군과 대조군이 1명씩 짝을 이룬 matched dataset을 만들어 보겠다.
위 메뉴를 선택하면 matched data set을 만들기 위한 설정화면으로 넘어간다.
앞서 말한 것처럼 treat 여부에 따라 대조군/치료군을 나누기로 하였으므로 좌측에서 treat를 선택하고 우측에는 matching시킬 때 고려할 변수들을 모두 선택한다 (Ctrl키를 누르고 클릭하면 여러 변수들을 같이 선택할 수 있다). 위화면처럼 선택을 끝내고 Ok를 누르자. Output에는 그다지 결과스러운 내용이 나오지를 않는다. 지금 한 것은 matched data set을 만든 것이지 실제 통계분석을 한 것이 아니기 때문에 p-value나 OR같은 내용이 나오지 않는다. (간혹 PC에 따라 error가 나는 경우가 있는데 EZR을 닫았다가 새로 실행시킨 뒤에 matched data만드는 부분만 다시 실행해보자).

화면의 Data set부분을 다시 보면 lalonde_MP 로 바뀐 것을 확인할 수 있다.
앞의 과정을 통하여 matched data set이 생성된 것이다. 옆의 view버튼을 눌러서 자료를 확인해보면 원래는 없던 pairmatch 라는 변수가 새로 만들어진 것을 볼 수 있다. lalonde_MP 자료를 좀더 살펴보면 370행의 자료이며, 185명의 치료군과 185명의 대조군으로 이루어져 있다. 누가 누구와 match되었는지는 pairmatch로 알 수 있으며, 1행의 치료군 환자는 269행의 대조군 환자와 match를 이루고 있다 (둘다 pairmatch=1).
[matched data set으로 만들어진 lalonde_MP, pairmatch 라는 변수가 만들어졌다]
위에서 만든 matched data-set을 이용해서 treat 여부가 nodegree (binary 변수)에 영향을 주는지 분석해 보겠다. Matched data set이므로 일반적인 분석이 아니라 matched data에 대한 분석방법을 사용해야 한다. Binary 변수가 dependent variable인 matched dataset에서 실시할 수 있는 Conditional logistic regression 을 실시해보자. Menu에서 Matched-pair analysis로 들어가면 해당 통계방법이 나와 있다.
[Conditional logistic regression을 선택하자]
Conditional logistic regression을 선택하고 나온 설정화면에서는 최종 dependent outcome (nodegree)을 Objective variable 이라는 항목에 입력하자. Explanatory variable에는 conditional logistic regression에서 영향을 확인하고 싶은 변수들을 입력하자 (치료군여부와 결혼을 했는지가 영향을 미치는지 알고 싶다고 가정하여 treat+married 로 하겠다). 그 밑의 Stratifying variable에는 앞서 만들어 두었던 matched data에 관한 정보 (누구와 누가 짝인지) 인 pairmatch 를 선택해주면 된다. (Enter name for model 항목은 신경쓰지 않아도 된다.)
[Conditional logistic regression에서 matched data에 대한 설정 화면]
[Matched data를 통해 분석한 conditional logistic regression의 결과]
Conditional logistic regression으로 분석한 결과, treat 여부는 nodegree 에 유의미한 영향을 미치는 것으로 나타났다. (adjusted OR 8.130, p-value=0.00571).
4. 맺는말
지금까지 기본적인 EZR의 설치와 사용법에 대한 설명을 하였다. 위에서 언급한 기본적인 분석들 이외에도 EZR에서는 matched data 분석 및 competing risk를 고려한 survival analysis, 모델간의 비교, meta-analysis 및 sample size calculation까지 매우 다양한 통계분석을 GUI환경에서 실행할 수 있도록 돕고 있으며 기본적인 그래프 기능도 첨부되어 있다. EZR에 대한 소개글로는 EZR의 제작자가 직접 기술한 논문이 있다 (EZR을 사용하여 논문을 작성시에는 위 논문을 reference로 달아주기를 추천하고 있다). 이외에도 저자가 직접 저술한 EZR 메뉴얼이 책으로도 출판되어 있으며 책의 내용도 상당히 자세히 설명되어 있으나 일본어라는 단점이 있다.
http://www.nature.com/bmt/journal/vaop/ncurrent/pdf/bmt2012244a.pdf
http://www.amazon.co.jp/EZR
EZR은 R을 어느정도 GUI환경에 맞추어 사용할 수 있도록 하여 접근성을 향상시킨 프로그램이며 매우 다양한 기능을 가지고 있으나, R을 기반으로 하고 있는 만큼 기본적인 R문법을 어느정도 숙지하는 것이 분명 필요하다. 최근 의학분야에 대한 R사용을 위한 책들도 많이 출판이 되었기 때문에 관심이 있는 분들은 R에 대한 공부도 같이 진행하는 것을 추천드린다.
 

답변

이 게시판은 회원 분들의 활성화를 위하여 정기적, 비정기적으로 연구와 관련된 tip 및 정보를 게시하는 곳입니다. 게시판 글의 작성은 뇌졸중학회 연구활성화위원회에서 맡고 있으며, 연구활동시 도움이 될만한 통계에 관한 도움말, 논문 작성법, 외부 홈페이지 소개 및 노하우 등 연구활동에 관한 전반적인 정보를 제공하고자 합니다. 기본적으로 월1회이상 정기적인 게시물이 작성될 예정이며 간단한 정보 등은 비정기적으로도 게시될 예정입니다. 만약 회원분들 중에서 연구와 관련하여 게시되었으면 하는 내용이 있을 경우에는 rsstrokeorkr@gmail.com 으로 메일을 주시면 가능한 참조하도록 하겠습니다.
번호 제목 작성자 조회 ↓ 등록일
9 9, 10월에 교육자료실에 업로드된 VOD 정보 관리자 863 2016-11-10
8 임상연구에서 사용되는 통계기법이 소개된 홈페이지 관리자 791 2016-11-10
7 임상 연구 설계 및 분석의 첫 걸음 03: 단변량 분석 관리자 1,699 2016-01-04
6 자료분석을 위한 데이터 결합과 변환 기초 관리자 1,729 2015-11-26
5 R에 처음 접근하기 어려운 분들을 위한 EZR 소개 관리자 8,987 2015-09-24
4 임상 연구 설계 및 분석의 첫 걸음 02: 대상 선정과 Databa... 관리자 1,684 2015-08-27
3 통계프로그램 R 소개 및 설치법, Web-based R강좌 소개 관리자 5,687 2015-07-23
2 임상 연구 설계 및 분석의 첫 걸음 01: Research Questio... 관리자 2,252 2015-06-24
1 Net Reclassification Index (NRI) & Integrated Discrimi... 관리자 6,456 2015-05-26

작성 목록

Gets the previous 10 pages. Go to previous page. [1] Go to next page. Gets the next  10 pages.



대한뇌졸중학회
VeriSign