Up Next

This HTML version of is provided for convenience, but it is not the best format for the book. In particular, some of the symbols are not rendered correctly.

You might prefer to read the PDF version, or you can buy a hardcopy of the first edition at Amazon.

Chapter 0  서문

0.1  한국어판 서문

지금까지 경험한 것과 전혀 다른 미래가 오고 있습니다. 이런 변화 뒤에는 패러다임의 전환, 즉 사고체계의 변화가 있었습니다. 산업혁명의 토대가 된 수학적 사고(Logical Thinking), 20세기를 풍미한 통계적 사고(Experimental Thinking), 21세기에는 컴퓨팅 사고력(Computational Thinking)이라고 합니다. 그리고, 세상은 프로그래밍을 하는 사람과 프로그램 된 사람으로 나뉘어 양극화되어 가고 있습니다.

통계학과 컴퓨터 과학이 접목된 기계학습(Machine Learning)은 과학과 기술은 물론이고, 인문사회, 법, 예체능 등 거의 전분야에 영향을 미쳤으며 딥러닝(Deep Learning)으로 급격히 파급력을 높이고 있습니다.

나아가, 통계학과 전공자만 배울 줄만 알고서, 엑셀로만 어깨너머 배웠던 통계처리가 누구나 이해하고 당연히 할 줄 아는 기본기로 불과 일 이년 만에 바뀌었습니다. 이뿐 아니라 이제 컴퓨터는 3D 프린팅, 로봇, 사물인터넷, 인공지능과 결합하여 공장, 사무실, 가정 핸드폰 밖으로 걸어 나와 준비된 극소수 사람에게는 부와 권력과 영예를, 준비하지 못한 99% 사람에게는 암울한 미래를 제시하고 있습니다.

이렇게 급격히 변화되어 가는 환경에 여러분이 주도권을 되찾고, 기계와의 경쟁을 준비해야 합니다. 컴퓨팅 사고력을 갖추고 코딩 할 수 있는 능력, 데이터를 해독하고 활용하는 능력은 앞으로 읽기, 쓰기, 셈하기와 더불어 누구나 익혀야 되는 기본적인 기술입니다.

오픈 하드웨어, 리눅스 운영체제, 과학 컴퓨팅을 위한 오픈 소스 툴체인, 쉽고 생산성 높은 컴퓨터 언어 (파이썬), 검증된 글로벌 커뮤니티(Software Carpentry, OpenIntro Statistics)와 함께, 크리에이티브 커먼즈 라이선스와 오픈 소스 소프트웨어 라이선스에 따라 원본소스와 함께 누구나 자유로이 활용할 수 있는 자유가 주워져야 합니다.

기계와의 경쟁, 이제 주변친구, 동료, 가족과 함께 거인의 어깨 위에서 준비하세요. 지금 이 순간 엑스더블유무크(xwMOOC)가 함께 합니다.

0.2  서문

이책은 탐색적 자료 분석에 대한 실용적인 도구를 소개하고 있다. 이 책의 구성은 저자가 데이터셋을 가지고 작업할 때 사용하는 과정을 준수하고 있다:

  • 가져오기와 정제(importing and cleaning): 데이터가 어떤 형식이든지 관계없이, 통상 데이터를 불러와서, 정제하고 변환하고, 변역 과적을 통해서 모든 것이 손상되지 않고 온전하다는 것을 점검하는 데는 시간과 노력이 투여된다.
  • 단변량 탐색(Single variable explorations): 저자는 통상 한번 변수 하나만 면밀히 조사하고, 변수 평균을 알아내고, 값들에 대한 분포를 살펴보고, 적절한 요약 통계량을 고르면서 자료분석에 착수한다.
  • 짝지어 탐색(Pair-wise explorations): 변수 사이에 가능한 관계를 식별하는데, 표와 산점도를 살펴보고, 상관관계와 선형적합을 계산한다.
  • 다변량 분석(Multivariate analysis): 만약 변수 사이에 분명한 관계가 있다면, 통제 변수(control variable)를 다중 회귀에 추가해서 좀더 복잡한 관계를 조사한다.
  • 추정과 가설검정(Estimation and hypothesis testing): 통계 결과를 보고할 때, 다음 세가지 질문에 대답하는 것이 중요하다: 효과가 얼마나 큰가? 다시 동일한 측정을 실시한다면, 얼마나 많은 변동성이 예상되는가? 분명한 효과가 우연때문인지도 가능한가?
  • 시각화(Visualization): 탐색동안에, 시각화는 가능한 관계와 효과를 찾아내는데 있어 중요한 도구다. 그러면, 만약 분명한 효과가 면밀히 조사로 되면, 시각화는 결과를 의사소통하는 효과적인 방식이 된다.

이 책은 컴퓨터적 접근법(computational approach)를 취하는데 수학적 접근법에 대해서 몇가지 장점이 있다:

  • 저자는 수학적 표기법 보다는 대부분의 아이디어를 파이썬 코드로 제시한다. 일반적으로, 파이썬 코드는 좀더 가독성이 있다; 또한, 실행가능하기 때문에, 독자가 다운로드하고, 실행하고, 변형해 볼 수 있다.
  • 각 장은 연습문제가 포함되어서 독자가 학습한 내용을 더 개발하고 강화할 수 있다. 프로그램을 작성할 때, 코드로 이해한 것을 표현한다; 프로그램을 디버깅하는 동안에, 이해한 것도 고칠 수 있다.
  • 일부 연습문제는 실험과 연관되어 통계적 행동을 테스트할 수 있따. 예를 들어, 임의 표본을 생성하고 합을 계산함으로써 중심극한정리(Central Limit Theorem, CTL)를 탐색할 수 있다. 결과를 시각화해서 왜 CLT이 동작하고, 언제 동작하지 않는지 시연한다.
  • 수학적으로 이해하기 어려운 일부 아이디어를 모의시험을 통해서 이해하기 쉽다. 예를 들어, P-값을 임의 모의시험을 실행해서 극사화하는데, 이것이 P-값 의미를 이해하는데 보강하는 의미가 있다.
  • 이 책이 범용 프로그래밍 언어(파이썬)에 기반하고 있어서, 독자는 데이터를 거의 모든 곳에서 가져올 수 있다. 통계 도구에 맞춰 정제되고 형식을 맞춘 데이터셋에 제한을 받지 않는다.

이 책은 프로젝트에 기반한 접근법을 취하고 있다. 저자 수업에서, 학생들이 한학기 프로젝트로 작업한다. 한학기 동안 통계적 질문을 제시하고, 질문을 다룰 수 있는 데이터셋을 찾고, 학습한 각기법을 본인 데이터에 적용한다.

저자의 접근법을 통계분석에 시연하기 위해서, 책 전체를 관통하는 사례가 이 책에 제시되어 있다. 두군데 자료출처에서 데이터를 사용한다:

  • 미국 질병 통제 예방센터(Centers for Disease Control and Prevention, CDC)가 수행한 “가족 생활, 결혼 및 이혼, 임신, 출산, 피임, 그리고 남녀 건강에 대한 정보”를 수집한 가족성장 국가조사(National Survey of Family Growth, NSFG) 데이터. (http://cdc.gov/nchs/nsfg.htm 참조)
  • 미국 질병 통제 예방센터(Centers for Disease Control and Prevention, CDC)가 수행한 행동 위험 요인 감시 시스템 조사 자료(Behavioral Risk Factor Surveillance System Survey Data)로 “미국에서 건강 조건과 위험 행동을 추적”한다. (http://cdc.gov/BRFSS/ 참조.)

다른 예제는 IRS(미국 국세청), 미국 인구통계, 보스톤 마라톤에서 나온 데이터를 사용한다. Think Stats 두번째 판은 첫번째 판에 나온 일부 장을 포함하고 있지만, 상당히 많이 개작되었고, 회귀분석, 시계열 분석, 생존분석, 해석적 방법에 대한 새로운 장이 추가되었다. 이전 판은 pandas, SciPy, StatsModels 를 사용하지 않는다. 그래서 이 모든 교재가 새 것이다.

0.3  저자가 이책을 저작한 방식

새책을 집필할 때, 보통 이전 교과서를 읽고 시작한다. 결과적으로, 대부분의 책은 거의 같은 순서로 같은 교재를 담게된다.

저자는 이전 방법을 택하지 않았다. 사실, 저자는 책을 집필할 때 거의 어떤 출력된 교재를 사용하지 않았다:

  • 저자의 목표는 이 교재에 새로운 접근법을 모색하고자 했다. 그래서, 기존 접근법에 상당히 노출되지 않길 원했다.
  • 저자는 이 책을 자유 라이선스로 이용가능하게 만들려고, 저작권 제한에 의해서 지장을 받고 싶지 않도록 확실히 하고자 했다.
  • 이책의 많은 독자는 출판된 교재를 갖춘 도서관에 접근할 수 없다. 그래서, 인터넷에 자유로이 이용가능한 자원에 대해 참조하려고 노력했다.
  • 과거 매체를 지지하는 일부 사람은 전자정보만 전용으로 사용하는 것이 게으르고 신뢰가 떨어질 수 있다고 생각한다. 첫번째 점에서는 맞울 수 있지만, 두번째 점에 관해서는 틀리다고 생각한다. 그래서 저자는 저자의 이론을 테스트하고자 했다.

저자가 다른 어떤 것보다도 더 사용한 원천 자원은 위키피디아다. 일반적으로, 통계 주제에 관해서 저자가 읽은 기사는 매우 훌륭했다(저자는 줄곧 일부 작은 변경을 했지만). 저자는 이책 전반적으로 위키피디아 페이지 참조를 포함해서, 독자가 링크를 따라 가길 권장한다; 많은 경우에, 위키피디아 페이지가 저자 기술이 멈춘 곳을 이어받는다. 이책에 사용된 용어와 표기법은 따르지 않을 합리적 사유가 없다면 위키피이아와 일관성을 맞췄다. 저자가 발견한 다른 유용한 교재는 울프램 수학세상(Wolfram MathWorld)과 레딧 통계 포럼(Reddit statistics forum, http://www.reddit.com/r/statistics)이다.

0.4  코드 사용

이 책에서 사용되는 데이터와 코드는 https://github.com/AllenDowney/ThinkStats2 사이트에서 이용가능하다. Git은 버젼제어시스템으로 프로젝트를 구성하는 파일을 추적할 수 있게 한다. Git 제어 아래있는 파일 모음을 저장소(repository)라고 부른다. GitHub은 Git 저장소에 대한 저장공간과 편리한 웹인터페이스를 제공하는 호스팅 서비스다.

저자 저장소의 GitHub 홈페이를 통해 코드를 작업하는 몇가지 방법이 제공된다:

  • 포크(Fork) 버튼을 눌러 저자의 GitHub 저장소에 대한 사본을 생성한다. 만약 GitHub 계정이 없다면, 계정을 하나 생성한다. 포킹한 후에, 이 책으로 작업하면서 작성한 코드를 추적할 수 있는 본인의 저장소를 GitHub에 갖게 된다. 그리고 나서, 저장소를 복제할 수 있는데, 이는 본인 로컬 컴퓨터에 파일 사본을 생성할 수 있다는 것을 의미한다.
  • 혹은 저자의 저장소를 복제할 수 있다. 복제하는데 GitHub 계정이 필요하지는 않지만, GitHub에 변경사항을 다시 반영할 수는 없다.
  • 만약 Git을 전혀 사용하고 싶지 않다면, GitHub 페이지 오른쪽 하단에 위치한 버튼을 사용해서 압축된 Zip 파일을 다운로드할 수 있다.

모든 코드는 변환작업 없이 파이썬 2와 파이썬 3에 동작하도록 작성됐다.

Continuum Analytics에서 개발된 아나콘다(Anaconda)를 사용해서 이 책을 개발했는데, 아나콘다는 코드를 실행(그리고 그 이상)하는데 필요한 모든 팩키지를 포함하고 있는 무료 파이썬 배포판이다. 저자는 아나콘다가 설치하기 쉽다고 판단한다. 기본설정으로 시스템 수준이 아닌 사용자 수준에서 설치할 수 있다. 그래서 관리자 권한이 필요없다. 그리고 아나콘다는 파이썬 2와 파이썬 3를 모두 지원한다. 아나콘다를 http://continuum.io/downloads 웹사이트에서 다운로드할 수 있다.

만약 아나콘다를 사용하기 원치 않는다면, 다음 팩키지가 필요하다:

  • 데이터를 표현하고 분석하는 pandas, http://pandas.pydata.org/;
  • 기본적인 수치 계산을 위한 NumPy, http://www.numpy.org/;
  • 통계를 포함한 과학 계산을 위한 SciPy, http://www.scipy.org/;
  • 회귀분석과 다른 통계적 분석을 위한 StatsModels, http://statsmodels.sourceforge.net/;
  • 시각화를 위한 matplotlib, http://matplotlib.org/.

이들 팩키지가 흔히 사용되고 있지만, 모든 파이썬 설치 배포판에 포함된 것은 아니다. 그리고 일부 환경에서는 설치하기 까다롭다. 만약 설치에 어려움을 겪는다면, 저자는 강력하게 아나콘다 혹은 이들 팩키지가 포함된 다른 파이썬 배포판 사용을 추천한다.

저장소를 복제하거나 압축파일을 푼 다음에 ThinkStats2/code 폴더에 nsfg.py 파일이 있어야 된다. 만약 nsfg.py 파일을 실행시키면, 데이터 파일을 읽고, 테스트를 실행하고 “All tests passed.” 같은 메시지를 화면에 출력한다. 만약 가져오기 오류가 있다면, 아마도 설치될 필요가 있는 팩키지가 있음을 의미한다.

대부분의 연습은 파이썬 스크립트를 사용하지만, 일부는 IPython 노트북을 사용한다. 만약 IPython 노트북을 이전에 사용하지 않았다면, http://ipython.org/ipython-doc/stable/notebook/notebook.html 나온 문서에서 시작해 보는 것을 제안한다.

객체지향 기능을 포함한 핵심 파이썬 언어에 친숙하지만, pandas, NumPy, SciPy 는 잘 모르는 독자를 가정하고 책을 저술했다. 만약 이런 모듈에 이미 친숙하다면, 일부 절을 건너뛸 수도 있다.

독자가 예를 들어 합산과 알고리즘을 포함한 기본 수학을 알고 있다고 가정한다. 일부 장소에서 미적분학 개념을 저자가 언급하지만, 미적분학을 직접 할 필요는 없다.

만약 통계를 결코 공부한 적이 없다면, 이 책이 여정을 시작하는 좋은 시발점이 될 것으로 생각한다. 그리고 만약 전통적인 통계학 수업을 들었다면, 이 책이 손상된 부분을 수리하는데 도움이 되길 희망한다.

Allen B. Downey 는 올린 공대 컴퓨터 과학과 교수다.

기여자 목록

만약 제안이나 수정사항이 있다면, 저자에게 전자우편을 downey@allendowney.com 주소로 보내주세요. 만약 보내주신 피드백에 수정을 하게 되면, (빼달라는 요청이 특별히 없다면) 기여자 목록에 추가시켜드릴 것입니다.

만약 오류가 나타난 문장의 일부를 적어도 포함한다면, 저자가 검색하기 수월할 것이다. 페이지와 절 번호도 좋지만, 작업하기는 그다지 쉽지 않다. 감사합니다.

  • Lisa Downey and June Downey read an early draft and made many corrections and suggestions.
  • Steven Zhang found several errors.
  • Andy Pethan and Molly Farison helped debug some of the solutions, and Molly spotted several typos.
  • Andrew Heine found an error in my error function.
  • Dr. Nikolas Akerblom knows how big a Hyracotherium is.
  • Alex Morrow clarified one of the code examples.
  • Jonathan Street caught an error in the nick of time.
  • Gábor Lipták found a typo in the book and the relay race solution.
  • Many thanks to Kevin Smith and Tim Arnold for their work on plasTeX, which I used to convert this book to DocBook.
  • George Caplan sent several suggestions for improving clarity.
  • Julian Ceipek found an error and a number of typos.
  • Stijn Debrouwere, Leo Marihart III, Jonathan Hammler, and Kent Johnson found errors in the first print edition.
  • Dan Kearney found a typo.
  • Jeff Pickhardt found a broken link and a typo.
  • Jörg Beyer found typos in the book and made many corrections in the docstrings of the accompanying code.
  • Tommie Gannert sent a patch file with a number of corrections.
  • Alexander Gryzlov suggested a clarification in an exercise.
  • Martin Veillette reported an error in one of the formulas for Pearson’s correlation.
  • Christoph Lendenmann submitted several errata.
  • Haitao Ma noticed a typo and and sent me a note.
  • Michael Kearney sent me many excellent suggestions.
  • Alex Birch made a number of helpful suggestions.
  • Lindsey Vanderlyn, Griffin Tschurwald, and Ben Small read an early version of this book and found many errors.
  • John Roth, Carol Willing, and Carol Novitsky performed technical reviews of the book. They found many errors and made many helpful suggestions.
  • Rohit Deshpande found a typesetting error.
  • David Palmer sent many helpful suggestions and corrections.
  • Erik Kulyk found many typos.
  • Nir Soffer sent several excellent pull requests for both the book and the supporting code.
  • Joanne Pratt found a number that was off by a factor of 10.

Are you using one of our books in a class?

We'd like to know about it. Please consider filling out this short survey.



Up Next