근래들어 R에 대한 관심이 부쩍 커지고 있음을 실감합니다. 3년 전에 R에 대한 얘기를 꺼내면 아무도 들어주지 않았습니다. 그랬던 동료들이 요즘에는, R 공부를 어떻게 시작하느냐, 좋은 책을 추천해달라고 묻곤 합니다. R은 freeware로 필요한 library를 웹상에서 자유롭게 다운로드해서 사용하면 되며, 개별 library에 대한 설명이 예제 script까지 모두 웹상에 공개되어 있습니다. 그렇기 때문에 R 프로그래밍의 기본문법을 익히고 나면, 주어진 예제를 적절히 가공해서 자신의 데이터에 적용할 수 있습니다. 어떻게 보면 R을 배우는 가장 좋은 방법은 구글링일 겁니다.

하지만, R 문법을 익히기 위해서는 공부가 따로 필요한 것이 사실입니다. 학창시절에 C++과 같은 프로그래밍 언어를 조금이라도 다뤄본 적이 있는 분이라면 그리 어렵지는 않겠습니다만, 무작정 R로 뛰어드는 것은 조금 위험합니다. R에 대해 설명해주는 좋은 블로그들이 이미 많기 때문에, R 사용법에 대해 여기서 자세히 다룰 필요는 없을 것 같습니다. 대신에 R 공부에 도움이 되는 책을 몇 권 추천해 드리겠습니다.



R 통계책 추천 #1. R을 처음 시도해 본다면, "R 프로그래밍 기초 & 활용"

R 프로그래밍 기초 & 활용
래리 페이스 저/박수현 역

요즘 주변에서 가장 많이 추천하는 책 중 하나입니다. R 프로그래밍과 통계분석이 적절히 조화를 이루고 있습니다. 전반부에서는 벡터, 행렬, 데이터 프레임이 무엇인지, 반복 구문, 조건 비교문 만들기, if else 구문과 같은 함수 만들기 등으로 시작해서, 후반부에서는 요약통계치, 표와 그래프, 신뢰구간 만들기, t 검증, 일원배치 분산분석, 이원배치 분산분석, 반복측정 분산분석, 상관과 회귀분석, 로지스틱 회귀분석, 카이제곱 검증, 비모수적 검증을 모두 다루고 있습니다. 말미에 이르러서는 R 패키지 만들기까지 소개하고 있습니다. 의학통계로써 아쉬움이 있다면, 생존분석이 빠진 정도라 할까요? 그 외에는 저도 강력 추천합니다.



R 통계책 추천 #2 좀 더 전문적으로 R을 다루고 싶다면, "R Cookbook"

R Cookbook
폴 티터 저/이제원 역/유충현 감수

앞선 책이 R 프로그래밍과 통계분석의 밸런스를 맞추고 있다면, 이 책은 R 프로그래밍에 조금 더 중점을 두고 있습니다. 예를 들어 데이터 프레임을 다루는 방법에 대해 살펴보면, 열 데이터로 데이터 프레임 만들기, 행 데이터로 데이터 프레임 만들기, 데이터 프레임에 행 추가하기, 데이터 프레임 사전 할당하기, 위치로 데이터 프레임의 열 선택하기, 이름으로 데이터 프레임의 열 선택하기, 더 쉽게 행과 열 선택하기, 데이터 프레임의 열 이름 바꾸기, 데이터 프레임 편집하기, 데이터 프레임에서 NA 제거하기, 이름으로 열 제외하기, 데이터 프레임 두 개 합치기, 하나의 공통된 열로 데이터 프레임 병합하기, 데이터 프레임의 내용에 더 쉽게 접근하기, 자료 변환하기, 데이터 구조 변환하기 등으로 매우 상세합니다. 

물론 기본적인 통계분석법에 대해서도 다루고 있지만, 경향 분석, 로지스틱 회귀분석, 반복측정 분산분석, 생존분석 등 의학통계의 주요 방법론들은 많이 빠져 있어서, 이 한 권으로 실전에서 바로 R을 사용하기에는 부족함이 있습니다. 하지만, R 중급자로 가려는 분들에게는 매우 유용한 책임에 틀림이 없습니다. 

이 책의 한 가지 장점을 빠트릴 뻔 했네요. R을 사용하는 많은 이유 중 하나가 출판물 수준의 그래픽 때문이죠. R 그래픽스에 대해서도 역시 꽤 상세히 다루고 있습니다. 범례 추가하기, 산점도의 회귀선 그리기, 모든 변수들 간 그래프 그리기, 막대그래프 색칠하기, 막대그래프 신뢰구간 추가하기, 선의 유형, 두께, 색상 변경하기, 함수를 그래프로 그리기, 변수를 다양한 색상으로 그리기, 여러 개의 데이터세트를 그래프로 그리기.. 등등!!! 어때요? 이쯤이면 좀 사랑스럽죠? ㅎㅎ

같은 출판사에서 R Graphics Cookbook도 곧 번역하여 출간할 예정이라고 하니 눈여겨 보도록 합시다.



R 통계책 추천 #3 의학통계를 사용한다면, "R을 이용한 누구나 하는 통계분석"

R을 이용한 누구나 하는 통계분석
안재형 저


2011년 출간 이후 꾸준히 사랑받고 있는 책이죠. 전 사실 이 책과 구글링을 통해 R을 공부했습니다. 솔직히 말씀드려서 누구나 할만큼 쉽지는 않습니다.^^ 하지만, 의학통계에 흔히 사용되는 모든 통계기법을 망라하고 있을 뿐 아니라, 각각 복수의 예를 들어 설명하고 있기 때문에 의학통계를 공부하시는 분들에게는 가장 많은 도움이 되는 참고서적이 아닐까 생각합니다.



R의 유려한 그래픽을 접해본 분이라면 그 매력에서 쉽게 빠져나올 수 없을 겁니다. 하지만, 명령어 기반의 새로운 프로그램을 배우는 일이 녹록치는 않습니다. 문법을 익히고 나서도 예쁜 그래프를 하나 얻기 위해서 무수히 많은 시행착오를 거치는 것이 다반사입니다. 그럼에도 R을 고집하는 것은, 그래프의 완성도를 따라올 프로그램이 없기 때문일 겁니다. 저는 평소에는 SPSS로 이것저것 탐색해보구요, 정작 논문에 쓸 그래프는 R로 새로 그립니다. 자, 논문에서 통계 패키지 프로그램들이 실제로 어떤 빈도로 사용되고 있는지 한 번 볼까요?





위 그래프는 Google Scholar에서 통계패키지 프로그램들의 사용 빈도 추이입니다. 두 거대 공룡 프로그램인 SPSS와 SAS가 2000년대 중반들어 크게 꺽이고 있죠. 물론 SPSS나 SAS는 학술적인 용도 외에 시장 예측 등 기업용으로 여전히 널리 쓰이고 있는 것으로 알고 있습니다. 자, 그럼 이번에는 SPSS와 SAS를 제외하고 나면 어떤 프로그램이 크게 늘고 있을까요?



그래프에서 SPSS와 SAS를 지우고 나니, R과 Stata의 사용빈도가 기하급수적으로 증가되고 있는게 보이시죠? 여러모로 지금은 R을 배워야할 때.



저는 위에 나열한 책 3권 모두 구입했습니다. 저마다 장단점이 있기 때문에 무엇 하나 버리지 못하겠습니다. 앞으로 수년 이상 통계분석을 직접 할 것이고, 이 참에 R을 제대로 공부하고 싶으신 분이라면 앞서 추천해드린 책 3권이 모두 필요할 겁니다. 책값 한두 권 아끼는 것보다 이 세 권을 모두 곁에두고 내 것으로 만드는 것이 더 효율적인 공부법이 아닐까 생각합니다. 


무엇보다 중요한 것은 기본기입니다. R로 통계공부를 시작하는 것은 영어로 수학을 배우는 것과 같아서 둘다 제대로 익히기 어렵습니다. 일단 통계의 기본 지식을 갖추고 R을 시작하는 것이 순서가 아닐까 첨언을 해봅니다.


방명록에 올렸던 글을 게시물로 옮깁니다.

 

어떤 분께서 댓글로 질문을 올리신 게 있는데, 제 지식이 확실치 않고 요새 너무 정신없이 바빠서 미쳐 답해드리지 못했더니 슬그머니 지우신 것 같네요. 혹시 보실지 몰라서 방명록에다 살짝 코멘트를 남겨 봅니다.

로지스틱 회귀분석에서 경향성을 검정하고 싶을 때가 있습니다. 예를 들면, "20대, 30대, 40대, 50대 이상으로 연령대가 증가함에 따라 당뇨를 앓고 있을 OR가 일정하게 증가하는가?" 와 같은 질문이죠.

우리가 일반적으로 20대를 reference로 지정하고 분석할 때에는 "각 연령대는 20대에 비해서 당뇨를 앓고 있을 OR가 얼마나 높은가?" 에 대한 정보를 얻을 수 있습니다. 이 때 reference 옆에 딸려 나오는 p value는 경향분석을 검정한 값이 아니므로 주의를 요합니다. 이 p value는 "연령대와 당뇨 사이에 전체적인 연관성이 통계적으로 유의하느냐?"에 대한 값입니다. 즉, 경향성에 대한 검정이 아닙니다.

다시 원래의 질문으로 돌아가서 로지스틱 회귀분석에서 경향분석을 하기 위해서는 대비(Contrast)를 이용해야 합니다. 로지스틱 회귀분석 메뉴의 우측 맨 위에 "범주형" 클릭하고 들어가서 "범주형 변수 정의"할 때 보통 "표시자"를 "처음"으로 놓으셨죠? 여기서 "표시자" 대신 "다항"을 선택해주면 이때 얻은 결과는 경향성에 대한 검정이 됩니다. 파라미터 코딩이 (1), (2), (3)으로 있는건 각각 1차, 2차 3차 함수를 의미하는데 그냥 1차(직선) 함수의 결과만 보면 됩니다.

혹은, 그냥 간편하게 연령대를 연속형으로 놓고 분석하기도 합니다. (저도 지식이 깊지 못해서 어떤 방법이 더 옳은 방법인지는 잘 모르겠습니다.)

그리고, Cox에서도 마찬가지로 하면 됩니다.

이상입니다. 혹시 제가 잘못 알고 있는 부분이 있으면 지적 부탁드립니다. 아울러 일찍 답변 드리지 못했던 그 분께서 이글 보시면 보셨다고 댓글 좀 부탁드립니다. 가을이 되니 할 일들은 계속 밀리고 전혀 정신을 못차리고 있어서 일찍 답 드리지 못했습니다. 여유가 좀 있으면 SPSS 화면 캡쳐도 뜨고 할텐데.. 사실 요새 제가 R을 주로 써서 SPSS가 깔려 있지도 않습니다. 죄송합니다^^ 모두 좋은 하루 되세요!!