책 소개
요약
R의 기초부터 프로그래밍까지 소개하고, 다양한 통계학적 방법과 일상에서 사용할 수 있는 도구들을 소개한다. 2판에서는 새로운 내용을 추가해 최신 R 커뮤니티에 소개된 내용들을 망라하고 있다. 타이디버스(Tidyverse)를 활용해 데이터 다루기, R 마크다운, 샤이니에 대한 장들이 그런 예다. 예제로 사용되는 데이터 세트들은 누구나 사용할 수 있는 것을 사용했으며, 이를 잘 정리해 저자의 웹 사이트를 통해 접근할 수 있게 했다. 이 책은 실제로 존재하는 데이터와 재미있는 문제들로 독자의 흥미를 끝까지 유지하게 한다.
추천의 글
R은 최근 5년 동안 인기가 급상승했다. 이를 보면서 독자들은 R이 새롭게 주목 받는 언어라고 생각할 수도 있다. 그렇지만 놀랍게도 R은 1993년에 소개됐다. 그럼 왜 최근에 와서 갑자기 인기가 높아졌을까? 아마도 데이터 과학이 하나의 직업 및 연구 주제로 부상했기 때문이 아닐까 생각한다. 데이터 과학의 기초적인 내용은 수십 년 동안 이어져 내려왔다. 통계학, 선형 대수, 생산 관리 연구, 인공 지능, 머신 러닝 등은 각자 최근의 데이터 과학에 이바지한다. 하지만 대부분의 컴퓨터 언어들과 달리 R은 이런 모든 기능을 단 하나의 함수 호출을 통해 사용할 수 있도록 발전해왔다.
그래서 나는 저자가 인기 도서인 초판을 다시 다듬어 최근 R 커뮤니티에서 있었던 여러 가지 혁신적인 내용을 담은 2판을 낸다는 소식에 흥분했다. R은 여러 데이터 과학 업무에 있어서 필수불가결한 도구다. 예측과 분석을 위한 여러 가지 유용한 알고리즘을 단 몇 줄의 코드를 갖고 해결할 수 있으므로 최근 데이터와 관련된 도전적인 문제들을 해결하는 훌륭한 도구다. 데이터 과학은 하나의 영역으로서 단지 수학이나 통계학에 머물지 않으며, 하나의 프로그래밍이나 기반 시설도 아니다. 이 책은 일반 독자들에게 R 언어의 힘과 표현력을 소개하는 균형 잡힌 안내서다.
나는 이 책의 저자보다 나은 R 안내서를 제공하는 저자를 알지 못한다. 그와 나는 2009년 뉴욕 머신 러닝 커뮤니티(NYC machine learning community)에서 만났다. 당시 뉴욕 데이터 커뮤니티는 모두 합쳐도 하나의 콘퍼런스장에 다 들어갈 수 있을 정도로 작았으며, 다른 모임은 아직 형성되지도 않은 시점이었다. 지난 7년 동안 그는 부상하는 데이터 과학의 최전선에 있었다.
그는 통계학 모임, 강연, 컬럼비아 대학에서의 R 코스 교육 등을 통해 프로그래머, 데이터 과학자, 언론인, 통계학자 등을 가르치며 커뮤니티의 성장을 도왔다. 그의 활동은 교육에 국한되지 않았다. 일상적인 직업에서도 크고 작은 고객을 위한 컨설팅을 하면서 이런 도구들을 활용할 수 있도록 장려했다. 그는 이 책의 초판이 출간된 후 뉴욕 R 콘퍼런스를 구성하고 수많은 모임과 콘퍼런스에서 강연했고, R을 사용해 2016년 미국 프로 농구 드래프트를 평가하는 등 R 커뮤니티에서 많은 활동을 했다.
이 책은 R의 기초에서 프로그래밍까지 소개하고, 다양한 통계학적 방법과 일상에서 사용할 수 있는 다양한 도구들을 소개한다. 2판에서는 새로운 내용을 추가해 최신 R 커뮤니티에 소개된 내용들을 망라하고 있다. 타이디버스(Tidyverse)를 활용해 데이터 다루기, R 마크다운, 샤이니에 대한 장들이 그런 예다. 예제로 사용되는 데이터 세트는 누구나 사용할 수 있는 것을 사용했으며, 이를 잘 정리해 그의 웹 사이트를 통해 접근할 수 있게 했다. 이 책은 실제로 존재하는 데이터와 재미있는 문제들을 갖고 독자의 흥미를 끝까지 유지하게 한다.
폴 딕스(시리즈 편집자)
이 책에서 다루는 내용
■ R, RStudio, R 패키지 둘러보기
■ 계산에 사용되는 R: 변수 타입, 벡터, 함수 호출 등
■ 데이터 프레임, 매트릭스, 리스트 같은 데이터 구조 탐색
■ 여러 가지 유형의 데이터 읽기
■ 매혹적이고 직관적인 통계 그래프 만들기
■ 사용자 정의 함수 작성
■ if, ifesle 등을 사용한 프로그램 컨트롤과 복잡한 조건 만들기
■ 그룹별 데이터 조작
■ 복수의 데이터 세트를 결합하고 구조 바꾸기
■ R을 사용한 문자열 조작과 정규 표현식 다루기
■ 정규, 이항, 포아송 분포 만들기
■ 선형, 일반화 선형, 비선형 모형 만들기
■ 기초 요약 통계: 평균, 표준편차, t-검정
■ 머신 러닝 모형 학습
■ 모형의 질 평가와 변수 선택법
■ 일래스틱 넷과 베이즈 방법을 사용해 과대적합을 막고 변수 선택 실행하기
■ 일변량, 다변량 시계열 데이터 분석
■ K-평균, 계층적 군집화
■ 니터(knitr)를 사용해 레포트, 프리젠테이션, 웹 페이지 만들기
■ R 마크다운과 htmlwidgets을 사용한 인터랙티브 데이터 시각화
■ 샤이니(Shiny)로 대시보드 구현
■ devtools, Rcpp와 함께 R 패키지 만들기
이 책의 대상 독자
R 언어로 하는 데이터 과학의 전반적인 내용을 다루므로 데이터 과학 입문자에게 안성맞춤인 안내서다. 이 책을 다 읽고 나면, R 프로그램 작성뿐만 아니라 가장 많이 사용하는 통계 방법들을 모두 사용할 수 있게 될 것이다.
이 책의 구성
1장, ‘R 설치’에서는 R을 다운로드하고 설치하는 방법을 소개한다. 여러 가지 운영체제를 포함해 32비트와 64비트 버전의 차이도 설명한다. R을 설치할 장소에 대한 조언도 들어 있다.
2장, ‘R 환경’에서는 R 사용법에 대한 개론으로, RStudio에 사용하는 방법을 중점적으로 다룬다. RStudio의 프로젝트 기능, 버전 관리 도구인 깃을 사용하고 RStudio를 개별화하는 방법도 소개한다.
3장, ‘R 패키지’에서는 R 패키지를 찾는 방법, 설치하고 로딩하는 방법을 다룬다.
4장, ‘R의 기초’에서는 R을 갖고 수학 계산을 해본다. 숫자형(Numeric), 문자형(Character), 날짜(Date), 벡터 등과 같은 변수의 타입을 소개하고, 함수를 호출하고 함수에 대한 도움말 문서를 찾는 법을 소개한다.
5장, ‘고급 데이터 구조’에서는 가장 강력하면서 자주 사용되는 데이터 구조인 데이터 프레임과 함께 매트릭스, 리스트 등을 다룬다.
6장, ‘R로 데이터 읽어 오기’에서는 R로 데이터를 가져오는 방법을 소개한다. 데이터 분석 이전에 R로 먼저 가져와야 할 것이다. CSV 파일이나 데이터베이스 등의 데이터를 읽는 등 데이터를 갖고 오는 방법은 다양하다.
7장, ‘R 통계 그래프’에서는 왜 그래프가 데이터 분석의 초기 작업과 결과를 소통하는 데 핵심적인 역할을 하는지 분명하게 밝힌다. R의 강력한 플로팅 기능을 활용하면 아름다운 그래프를 만들 수 있다. 베이스 그래픽과 ggplot2를 소개하고 자세히 설명한다.
8장, ‘R 함수 작성’에서는 사용자 정의 함수를 사용해 반복되는 분석 과정을 쉽게 만드는 방법을 소개한다. 함수의 구조, 인자, 반환값 반환 규칙을 설명한다.
9장, ‘R 제어문’에서는 if, ifelse 같은 예약어로 프로그램의 흐름을 제어해 복잡한 일을 하게 만드는 방법을 다룬다.
10장, ’루프, R은 그다지 환영 받지 못하는 존재’에서는 for문, while문을 사용한 순회를 설명한다. R에서의 사용은 권장되지 않지만 알고 있는 것은 중요하다.
11장, ‘그룹별 데이터 조작’에서는 루프보다 나은 방법인 벡터화를 설명한다. 벡터화는 데이터를 일일이 순회시키지 않고 한꺼번에 일을 처리할 수 있게 해준다. apply 계열의 함수들이나 plyr 패키지와 함께 사용하면 효율을 더 높일 수 있다.
12장, ‘dplyr 패키지로 빠르게 그룹 단위로 데이터 다루기’에서는 그룹화된 데이터를 다루는 데 있어 더 발전한 dplyr 패키지를 소개한다. 이 패키지는 데이터 프레임과 함께 가장 잘 작동하도록 최적화돼 있고, 효율적인 코딩 작성과 읽기를 위해 파이프 기능을 적용할 수 있다.
13장, ‘purrr 패키지를 사용한 순회’에서는 purrr 패키지를 활용해 리스트나 벡터를 더 쉽게 순회할 수 있는 또 다른 방법을 다룬다. 이는 R의 함수형 언어 특징을 잘 활용하는 것이다.
14장, ‘데이터 재구조화’에서는 데이터의 구조를 바꾸는 작업에서 흔히 사용되는 스태킹, 조이닝 같이 여러 개의 데이터 세트를 합치는 방법을 소개한다. plyr, reshape2 같은 패키지들은 R 베이스에 있는 rbind, cbind, merge 함수와 함께 복잡한 작업을 쉽게 해주는 기능을 제공한다.
15장, ‘타이디버스로 데이터 재구조화’에서는 데이터 구조를 바꾸거나 결합할 때 plyr, reshape2 패키지를 대신해 더 쉽게 사용할 수 있는 plyr, tidy 패키지를 다룬다.
16장, ‘문자열 처리’는 텍스트에 대한 장이다. 많은 사람은 문자열 데이터와 통계를 잘 연결시켜 생각하지 못할 수도 있지만, 이는 데이터의 중요한 형태다. R은 문자열을 다루는 다양한 기능을 제공하는데, 문자열을 결합하거나 텍스트 안의 정보를 추출하는 등의 일을 할 수 있다. 더불어 정규 표현식도 설명한다.
17장, ‘확률 분포’에서는 정규 분포, 이항 분포, 포와송 분포를 간략히 소개한다. 여러 분포에 대한 수식과 함수들을 설명한다.
18장, ‘기초 통계학’에서는 흔히 배우는 기초 통계학을 다룬다. 평균, 표준편차-t, 검정 등을 소개한다.
19장, ‘선형 모형’에서는 통계학에서 가장 강력하고 흔히 사용되는 선형 모형을 자세히 설명한다.
20장, ‘일반화 선형 모형’에서는 선형 모형을 확장한 로지스틱, 포와송 회귀를 설명한다. 생존 분석도 다룬다.
21장, ‘모형 진단’에서는 모형의 질을 결정하는 방법과 잔차, AIC, 교차 타당성, 붓스트랩, 단계별 변수 선택과 같은 변수 선택 방법을 소개한다.
22장, ’정형화와 축소’에서는 일래스틱 넷과 베이즈 방법을 사용해 과대 적합을 예방하는 방법을 설명한다.
23장, ‘비선형 모형’에서는 선형 모형이 적절하지 않은 상황에서 사용할 수 있는 비선형 방법을 다룬다. 비선형 최소 제곱법, 스플라인, 일반화 가법 모형, 의사결정 나무, 부스팅 의사결정 나무, 랜덤 포리스트 등을 논의한다.
24장, ‘시계열과 자기상관’에서는 일변량, 다변량 시계열 데이터를 분석하는 방법을 다룬다.
25장, ‘군집화’ 데이터를 나누는 클러스터링 방법과 K-평균 군집화, 계층적 군집화를 소개한다.
26장, ‘Caret을 사용한 모형 적합’에서는 caret 패키지로 모형에 대한 자동 조율법을 소개한다. 이 패키지는 수백 개의 모형에 대한 단일 인터페이스를 제공해 모형 적합 작업을 쉽게 해준다.
27장, ‘니터를 활용한 재현성과 보고서’에서는 R 코드와 텍스트를 혼합해 보고서를 만드는 방법을 소개한다. 니터(knitr) 패키지와 레이텍을 사용하면 이 작업이 쉬워진다.
28장, ‘R 마크다운으로 다양한 포맷의 문서 만들기’ R과 R 마크다운을 사용해 재현 가능한 레포트, 슬라이드, 웹 페이지를 만드는 방법과 leaflet, dygraphs 패키지 같은 htmlwidgets을 사용해 사용자 인터랙션을 구현하는 방법을 소개한다.
29장, ‘샤이니로 인터랙티브 대시보드 만들기’에서는 샤이니(Shiny)를 사용한 인터랙티브 대시보드 만들기를 소개한다. 샤이니는 R을 백엔드에 두고 웹 기반의 대시보드를 만들 수 있는 기능을 제공한다.
30장, ‘R 패키지 개발’에서는 R 패키지 개발에 관한 내용을 소개한다. devtools, Rcpp 같은 패키지를 사용하면 패키지 개발이 매우 쉬워진다.
부록 A, ‘주변에서 찾을 수 있는 R 리소스’에서는 R 학습에 도움이 되는 리소스와 R 관련 커뮤니티를 소개한다.
부록 B, ‘용어 정리’에서는 이 책에서 사용한 용어들을 정리한다.
상세 이미지
목차
목차
- 1장. R 설치
- 1.1 R 다운로드하기
- 1.2 R 버전
- 1.3 32비트 대 64비트
- 1.4 설치
- 1.4.1 윈도우에서 설치하기
- 1.4.2 맥 OS X에 설치하기
- 1.4.3 리눅스에 설치하기
- 1.5 마이크로소프트 R 오픈
- 1.6 결론
- 2장. R 환경
- 2.1 커맨드라인 인터페이스
- 2.2 RStudio
- 2.2.1 RStudio 프로젝트
- 2.2.2 RStudio 툴
- 2.2.3 깃 통합
- 2.3 마이크로소프트 비주얼 스튜디오
- 2.4 결론
- 3장. R 패키지
- 3.1 패키지 인스톨
- 3.1.1 패키지 제거
- 3.2 패키지 로딩
- 3.2.1 패키지 언로딩
- 3.3 패키지 만들기
- 3.4 결론
- 3.1 패키지 인스톨
- 4장. R의 기초
- 4.1 기초 수학
- 4.2 변수
- 4.2.1 변수 할당
- 4.2.2 변수 제거
- 4.3 데이터 유형
- 4.3.1 숫자형 데이터
- 4.3.2 문자열 데이터
- 4.3.3 날짜
- 4.3.4 논리형
- 4.4 벡터
- 4.4.1 벡터 연산
- 4.4.2 팩터형 벡터
- 4.5 함수 호출하기
- 4.6 함수에 대한 도움말 문서
- 4.7 결측값
- 4.7.1 NA
- 4.7.2 NULL
- 4.8 파이프
- 4.9 결론
- 5장. 고급 데이터 구조
- 5.1 데이터 프레임
- 5.2 리스트
- 5.3 행렬
- 5.4 배열
- 5.5 결론
- 6장. R로 데이터 읽어 오기
- 6.1 CSV 파일 읽기
- 6.1.1 read_delim
- 6.1.2 fread
- 6.2 엑셀 데이터
- 6.3 데이터베이스에서 데이터 읽기
- 6.4 다른 통계 툴의 데이터
- 6.5 R 바이너리 파일
- 6.6 R에 포함돼 있는 데이터
- 6.7 웹 사이트에서 데이터 추출하기
- 6.8 JSON 데이터 읽기
- 6.9 결론
- 6.1 CSV 파일 읽기
- 7장. R 통계 그래프
- 7.1 기본 그래픽스
- 7.1.1 기본 히스토그램
- 7.1.2 기본 산점도
- 7.1.3 상자그림
- 7.2 ggplot2
- 7.2.1 ggplot2로 히스토그램과 밀도 곡선
- 7.2.2 ggplot2 산점도
- 7.2.3 ggplot2 상자그림과 바이올린 플롯
- 7.2.4 ggplot2 꺾은선그래프
- 7.2.5 테마
- 7.3 결론
- 7.1 기본 그래픽스
- 8장. R 함수 작성
- 8.1 헬로 월드
- 8.2 함수 인자
- 8.2.1 디폴트 인자
- 8.2.2 부가 인자들
- 8.3 Return Values
- 8.4 do.call
- 8.5 결론
- 9장. R 제어문
- 9.1 if와 else
- 9.2 switch
- 9.3 ifelse
- 9.4 복합 테스트
- 9.5 결론
- 10장. 루프, R에서는 그다지 환영받지 못하는 존재
- 10.1 for 루프
- 10.2 while 루프
- 10.3 루프 조절
- 10.4 결론
- 11장. 그룹별 데이터 조작
- 11.1 Apply 패밀리
- 11.1.1 apply 함수
- 11.1.2 lapply와 sapply 함수
- 11.1.3 mapply 함수
- 11.1.4 기타 apply 함수들
- 11.2 집계
- 11.3 plyr 패키지
- 11.3.2 llply
- 11.3.3 plyr 헬퍼 함수
- 11.3.4 속도 대 편이성
- 11.4 data.table
- 11.4.1 키
- 11.4.2 데이터 테이블 집계
- 11.5 결론
- 11.1 Apply 패밀리
- 12장. dplyr 패키지로 빠르게 그룹 단위로 데이터 다루기
- 12.1 파이프(Pipes)
- 12.2 tbl
- 12.3 select
- 12.4 filter
- 12.5 slice
- 12.6 mutate
- 12.7 summarize
- 12.8 group_by
- 12.9 arrange
- 12.10 do
- 12.11 데이터베이스와 dplyr 사용
- 12.12 결론
- 13장. purrr 패키지를 사용한 순회
- 13.1 map
- 13.2 반환값의 유형을 정의한 map 함수
- 13.3 데이터 프레임에서 순회하기
- 13.4 여러 입력값에 대해 map 사용하기
- 13.5 결론
- 14장. 데이터 재구조화
- 14.1 cbind와 rbind
- 14.2 조인
- 14.3 결론
- 15장. 타이디버스로 데이터 재구조화
- 15.1 행과 열을 붙이기
- 15.2 dplyr를 사용한 조인
- 15.3 데이터 포맷 변환
- 15.4 결론
- 16장. 문자열 처리
- 16.1 paste 함수
- 16.2 sprintf 함수
- 16.3 텍스트 추출
- 16.4 정규 표현식
- 16.5 결론
- 17장. 확률 분포
- 17.1 정규 분포
- 17.2 이항 분포(Binomial Distribution)
- 17.3 포아송 분포
- 17.4 기타 분포들
- 17.5 결론
- 18장. 기초 통계학
- 18.1 요약 통계
- 18.2 상관과 공분산(Correlation, Covariance)
- 18.3 t-검정
- 18.3 단일-표본 t 검정
- 18.4 ANOVA
- 18.5 결론
- 19장. 선형 모형
- 19.1 단순선형회귀
- 19.3 결론
- 20장. 일반화 선형 모형
- 20.1 로직스틱 회귀
- 20.2 포아송 회귀
- 20.3 기타 일반화 선형 모형들
- 20.4 생존 분석
- 20.5 결론
- 21장. 모형 진단
- 21.1 잔차(Residuals)
- 21.2 모형들을 비교하는 방법
- 21.3 교차 타당성 검증(Cross-Validation)
- 21.4 부트 스트랩
- 21.5 단계적 변수 선택
- 21.6 결론
- 22장. 정형화(Regularization)와 축소(Shrinkage)
- 22.2 베이즈 축소(Bayesian Shrinkage)
- 22.3 결론
- 23장. 비선형 모형
- 23.1 비선형 최소 제곱
- 23.2 스플라인(splines)
- 23.3 일반화 가법 모형(Generalized Additive Models)
- 23.4 의사결정 나무(decision trees)
- 23.5 부스팅 의사결정 나무(boosted tress)
- 23.6 랜덤 포리스트(Random Forests)
- 23.7 결론
- 24장. 시계열과 자기상관
- 24.1 자기회귀이동평균(Autoregressive Moving Average)
- 24.2 벡터자기회귀모형(VAR)
- 24.3 일반화 자동회귀 조건부 이분산 모형(GARCH)
- 24.4 결론
- 25장. 군집화
- 25.1 K-평균 군집화
- 25.2 PAM
- 25.3 계층적 군집화
- 25.4 결론
- 26장. Caret을 사용한 모형 적합
- 26.1 caret 패키지의 기초
- 26.2 Caret 옵션들
- 26.3 부스팅 의사결정 나무에 대한 조율
- 26.4 결론
- 27장. 니터(knitr)를 활용한 재현성과 보고서
- 271. 레이텍 프로그램 인스톨
- 27.2 레이텍의 기초
- 27.3 레이텍과 함께 니터 사용하기
- 27.4 결론
- 28장. R 마크다운으로 다양한 포맷의 문서 만들기
- 28.1 문서 컴파일
- 28.2 문서 헤더
- 28.3 마크다운의 기초
- 28.4 마크다운 코드 청크
- 28.5 htmlwidgets
- 28.6 R 마크다운 슬라이드 쇼
- 28.7 결론
- 29장. 샤이니로 인터랙티브 대시보드 만들기
- 29.1 R 마크다운 문서 안에서 샤이니 사용하기
- 29.2 샤이니에서의 반응성 표현식
- 29.3 서버와 UI
- 29.4 결론
- 30장. R 패키지 개발
- 30.1 폴더 구조
- 30.2 패키지 파일들
- 30.3 패키지 문서화
- 30.4 테스트
- 30.5 체킹, 빌딩, 인스톨링
- 30.6 CRAN에 패키지 제출하기
- 30.7 C++ 코드
- 30.8 결론
- 부록 A. 주변에서 찾을 수 있는 R 리소스
도서 오류 신고
정오표
정오표
수정 사항은 여기에서 내려받으세요.
[p.506 1행]
그림 26.2는
->
그림 25.6은
[p.508 아래에서 4행]
destfile = "data/worlmap
->
destfile = "data/worldmap