티스토리 뷰

  책을 구입해서 보는 독자들은, 기본적으로 그 책의 내용에 대해 큰 신뢰를 갖고 보는 경우가 많습니다. 요즘 책값도 만만치 않아서, 책을 한 권 사게 되면 본전을 뽑아야겠다는 생각에, 더더욱 꼼꼼하게 책을 들여다보게 되죠.
  만일 블로그에 써져 있는 글이라면, 오류에 대한 지적이 있을 시 바로 수정할 수 있겠지만, 책은 그렇게 할 수 없습니다. 정오표를 만들 수도 있겠지만, 그걸 찾아보는 독자보다는 그렇지 않은 독자가 더 많을 것입니다. 그만큼 책은, 정확한 내용을 책임감 있게 전달해야합니다.
  실제로 제 주변 지인 중에 R과 관련한 몇몇 책을 보고 공부하고 개념을 잘못 이해하고 있다가 선생님께 까이는 사고가 발생하고 말았습니다.(!) 사실 제가 평소에 그리 이타적인 편은 아니어서, 누가 무슨 책을 쓰던 그리 상관하지 않지만, 당장 주변에 이런 일이 생긴 것이 이런 리뷰를 쓰게 된 결정적인 계기가 되었습니다.

  저는 석사 때 통계학을 전공했고, 솔직히 당시에 전반적으로 뛰어난 학생은 아니었지만 나름 R은 누구보다도 자신있어하는 편이었습니다. 요즘은 전공도 달라졌고(현재 저는 컴퓨터학과에서 박사과정 초년차를 보내고 있습니다.) 통계학 보다는 다른 데에 집중하고 있고 R도 그만큼 안쓰고 있지만, 그래도 여전히 무언가 문제가 주어졌을 때 R을 이용해서 아무런 막힘없이 푸는 편이고, 여전히 석사 때 사귄 지인들은 제게 R 관련 질문을 던져오곤 합니다. 아, 제가 석사학위 논문과 연동하여 만든 R 패키지도 CRAN에 올라와있죠.


제가 리뷰할 책은 총 5권입니다. 오늘은 그 첫 번째입니다.
1. 박찬성, “통계와 R을 함께 배우는 R까기 2”, 느린생각, 2016년 1월 부분개정판
2. 사카마키 류지, 사토 요헤이, “비즈니스 활용 사례로 배우는 데이터분석: R”, 한빛미디어, 2015년 11월 초판
3. 양경숙, 김미경, “R 입문 및 기초 프로그래밍”, 자유아카데미, 2011년 2월 제1판2쇄
4. 김재희, “R을 이용한 통계 프로그래밍 기초”, 자유아카데미, 2010년 7월 제1판3쇄
5. 배현웅, 문호석, 방성완 “R 통계학 총서 시리즈”, 1~4권, 교우사




박찬성, “통계와 R을 함께 배우는 R까기 2”, 느린생각, 2016년 1월 부분개정판


  원래는 이 책을 1순위로 두고 있진 않았는데, R 관련 모 페이스북 그룹에 이 책의 일부를 사진 찍어 올렸더니 아주 난리가 났었습니다. 이슈화가 빨리 된 만큼, 리뷰를 빨리 써야겠다는 생각이 들어서, 이 책을 1순위로 소개하게 되었습니다.




  사실 이 책은 R 언어에 익숙하지 않은 사람들에게는 "R언어"의 입문서로서 나름 괜찮은 책입니다. 책이 전체적으로 컬러풀하여 가독성이 좋고, 나름 친절하게 설명하는 편이고, 실제로 저자도 친절해서 이 책의 전용 카페(http://cafe.naver.com/peelr)나 페이스북의 Korea R User Group, Korea R Study Group 등에서 저자가 직접 질문에 답도 적극적으로 달아주는 등 서비스가 돋보입니다. 실제로 저자는 어려운 증명이 아닌 개념을 심어주기 위해 노력하고 있다고 어필하는 편입니다.



  그런데 이 친절한 컨셉을 유지하는 것은 좋은데, 문제는 오타도 너무 많고, 너무 친절하게 하려다보니 전혀 근거없는 창조적인(?!) 설명을 한 부분도 많다는 것입니다. 무엇보다도 문제는 이게 책으로 발간되었다는 것입니다. 그리고 이 책의 가격은 무려 3만원을 훌쩍 넘죠.



  저자도 친절하겠다, 책도 깔끔하겠다 싶어 예상 외로 많은 독자들이 호평을 하는 책입니다만, 사실 책 내용을 자세히 살펴보면 정확하지 않은 내용이 의외로 많다는 것을 알 수 있습니다. 한두가지 사소한 오타나 실수 정도는 정오표 같은 걸로 수정이 될텐데, 이 책은 그걸 넘어서서 많은 챕터를 고쳐 써야하지 않을까 싶을 정도로 다양한 “실수”를 보여주고 있습니다. 저자는 내용을 분명히 알고 쓴 것인지, 제가 알기로 이 책은 여려 명의 테스터를 거친 것으로 알고 있는데 어린아이에게 테스트를 받은 것인지, 테스트가 잘 이루어졌다면 수용을 온전히 하긴 했는지 많은 의구심을 줍니다.


ㅁ 88페이지

  범주형 자료 분석 또한 수치형 데이터 분석 못지않게 매우 중요합니다. “범주형 자료 분석”이라는 분야가 따로 존재하죠. 아마 이 문구를 보면 Alan Agresti 선생님이 울고 가실 것 같습니다. 무슨 자신감으로 이런 막말을 내뱉은 것일까요?
비율척도 등등은 왜 없을까요? 그래도 나름 입문서인데 이런 것 정도는 소개해줘도 좋을텐데 말입니다.




  R에서는 data.frame도 중요하지만, matrix도 못지않게 중요합니다. data.frame은 다양한 type의 값을 한 번에 담을 수 있고, matrix는 한 종류의 type만 담을 수 있다는 차이가 있습니다. type dependency가 높은 분석을 할 때는, data.frame보다는 matrix를 사용할 때가 많죠. 간단하게 PCA를 할 때도, data.frame에 엉뚱한 type의 값이 들어있으면 eigenvalue를 추출할 수 없기 때문에 대체로 matrix로 입력을 시작합니다. matrix에 관한 이야기만 가지고도 한 시간 넘게 강의를 할 수 있는데, 이걸 137페이지에서 “그 외의 다른 객체” 정도로 치부하고 있습니다. 정말 기본이 되는 내용인데, 이걸 놓치고 있네요.


ㅁ 177페이지

  summary() 함수는, 범주형 변수도 관측값 별로 count를 해주는 좋은 기능이 있습니다. 저자가 이제 범주형 변수는 무시하고 넘어가기로 했나보네요.


ㅁ 202페이지

  자유도는 1/(n-1)이 아닌 n-1입니다.
  사실 이 리뷰를 쓰기 전에, 이걸 모 페이스북 그룹에 올렸더니 아주 난리가 났었습니다. 쩨쩨하게 오타 하나 난 것 같고 너무 뭐라 그러는거 아니냐는 식으로... 저자도 그 그룹에 계셨는데, 저자께서는 이걸 “오타”라고 말씀하셨죠.
  그러나 이 책에서는 오타뿐만이 아닌, 아주 창의적인 방법으로 설명하고 있네요. 표본분산을 모분산에 대한 “불편추정량”으로 만들어 주려먼 n-1로 나누어주어야 합니다. 불편추정량이라는 말이 어려워서 안 썼다고 쳐도, “마지막 하나는 모집단의 평균과 같게 만들기 위해”라기 보단 “평균을 구하는 과정에서 자유도가 1이 줄었다”는 표현이 더 자연스러울 것입니다. 문장 전체가 엉망입니다.


ㅁ 206페이지

  “다변량”일 때의 분산을 공분산이라 부르는 것이 아닌, 그냥 “2개”의 확률변수에 대한 상관정도를 나타내는 지표 중 하나가 공분산입니다. 여러 변수를 함께 다루는 “공분산 행렬”을 언급하고 싶었다면 그걸 언급해야할 텐데, 아쉽게도 “공분산 행렬”에 대한 이야기는 책에 없습니다. 저자께서는 3가지 확률변수의 공분산 하나를 구해주실 수 있나요?


ㅁ 207페이지

  공식에 관한 이야기를 하면서 공식은 보여주지 않고 있네요. 뭐 일부러 쉽게 전달하기 위해 그렇다 쳐도... 공분산을 표준화한 것이 상관계수이죠. 이 말이 그렇게 어렵진 않았을 텐데... 공분산과 상관계수의 관계는 빠질 수 없는 이야기인데 쏙 빼놓았군요.
“그냥 1에 가까운지” → “절대값이 1에 가까운지”.


ㅁ 244페이지

  확증적 자료 분석은 이론적인 배경이 있을 때, 그 모델에 대한 재현성을 평가하는 과정입니다. 반면 탐색적 자료 분석은 데이터로부터 미지의 특성을 파악해 나가는 과정이죠. 배경지식이 있으면 확증적 분석은 아주 명확하고 순식간에 딱! 딱! 이루어질 때가 많습니다. 확증적 자료분석이 “더 느리고”, “더 확실하다”는 말은 무엇을 근거로 나온 말일까요?


ㅁ 319~320, 327페이지 등등

  207페이지에서 저자는, “상관계수”가 어떤 “선형(linear)관계”를 갖고 있는지를 분석한다는 취지의 말을 합니다. 그런데 여기 이 그래프는 선형관계라기에는 무언가 굴곡이 져 보이네요. 이렇게 그래프를 그린 것만으로도 충분합니다.


  그런데 곧바로 이의 상관계수를 구해버리는 이상한 짓을 하고 있습니다. 물론 참고삼아 볼 수도 있지만, 보고서에 이대로 써넣으면 상사가 갈기갈기 찢어주실 겁니다.


그리고 대부분의 챕터에서 이런 실수(?)를 반복하여 주고 계십니다. 너무 많아서 다 싣지는 못했습니다.


ㅁ 404페이지

  저자가 무슨 말을 하는지 알아들을 수 있으신가요? 제가 확률실험을 더 쉽게 정리해드릴게요.
  확률실험이 되는 조건이란
     (1) 나타날 수 있는 가능한 모든 결과들을 미리 예상할 수 있다.
     (2) 나타난 결과를 실행 전에는 알 수 없다.
     (3) 예측할 수 있는 장기 모델이 존재한다.
     (4) 실험이 동일한 조건에서 반복될 수 있어야 한다.
  이 4가지 조건을 만족하면 확률실험이라고 합니다. 누가 더 알아듣기 쉬우신가요?

  저자도 같은 방식으로 4가지로 정리했군요.



  아... 너무 엉망입니다.


ㅁ 419페이지


  ㅎㅎㅎ
  (사실 오타 지적은 너무 짜잘한 것 같아서 대부분 넘어갔습니다만, 이건 좀 웃기네요.)



ㅁ 426페이지

  베이즈 정리는, “A1, A2, ..., An까지의 표본공간의 분할이 존재할 때”, 조건부에 대한 특정 사건 Ai의 사후확률을 구하는 방법이죠. “분할”이라는 표현을 썼기 때문에 각 A는 서로 배반사건이 되고요.
  이 책에서 소개한 것은 베이즈 정리도 아니고, 조건부 확률도 아니고... 하여튼 올바른 베이즈 정리가 아닙니다.



ㅁ 431페이지

  최소한 정규분포 수식은 틀리지 말아야죠. 이 책을 고등학생이 보면 어쩌려고...




ㅁ 435페이지

  표본이 정규분포를 따르게 되는 것이 아니라, “표본평균”이 정규분포에 근사하게 됩니다. 통계학에서 가장 중요한 정리이죠.
  틀린 말을 써놓고 당연하지 않냐고 묻고 있군요...




ㅁ 436~438페이지

  이산형 변수, 연속형 변수를 함께 다루기 시작했으면 끝까지 그렇게 하면 좋을텐데, 그렇지 않습니다. 연속형 확률변수의 기댓값 구하는 방식은 소개하면서, 이산형은 소개하지 않고 있군요. 이산형 변수도 버리기로 마음먹은 걸까요?




ㅁ 442페이지

  저자가 중심극한정리에 대해 잘못 이해하고 있다보니, 표집해서 얻게 되는 데이터가 반드시 정규분포여야 한다는 이상한 말을 하고 있습니다.

  그 아래 문단에 대해서도, 최소한 내 주변의 통계학을 공부한 많은 기라성 같은 학우나 선생님 중에 이런 말을 함부로 뱉은 분은 아무도 없었습니다. 오히려 수학적인 엄밀함에 너무 치우쳐 데이터가 실제로 무엇을 말하는지를 놓치는 일이 없어야한다고 주의를 당부하여 주시곤 했죠.




ㅁ 498페이지

  이 a절편을 구하는 식을 코드로 짜면 무한루프를 돌겠군요.




  더불어 이 책의 예제 코드들은 전반적으로 너무 패키지를 많이 불러와 사용하고 있습니다. 기본 함수들도 제대로 못다루는 입문자들을 대상으로 하면, 일단 기본 함수들부터 제대로 알려주는 것이 좋을 것 같은데 말이죠. 패키지가 업데이트될 때마다 책도 업데이트 하려는 걸까요? 그럼 그 때마다 독자들은 3만원이 넘는 책값을 지불하며 새 책을 사야겠군요. 오오...



  정말 뜯어고쳐야할 점이 많았는데, 크리티컬한 부분만 지적했습니다. 그렇지만 멋진 디자인과 저자의 친절함에 혹해, 사람들에게 잘못된 지식이 전해질까 우려되는 수준이네요. 왜 이런 책이 나타난걸까요. 슬픈 현실입니다.




  다음 리뷰도 기대해주세요. :)