Practical Data Science with R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
brief contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
contents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19
about this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
What is data science? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
Roadmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
What is not in this book? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Code conventions and downloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .24
Working with this book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
Book forum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26
about the authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
about the foreword authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .28
about the cover illustration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
Part 1 Introduction to data science . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
1 The data science process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33
1.1 The roles in a data science project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
1.1.1 Project roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
1.2 Stages of a data science project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
1.2.1 Defining the goal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37
1.2.2 Data collection and management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
1.2.3 Modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .40
1.2.4 Model evaluation and critique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
1.2.5 Presentation and documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .44
1.2.6 Model deployment and maintenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .45
1.3 Setting expectations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
1.3.1 Determining lower bounds on model performance . . . . . . . . . . . . . . . . . . . . . . . . . . . .46
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
2 Starting with R and data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
2.1 Starting with R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
2.1.1 Installing R, tools, and examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
2.1.2 R programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50
2.2 Working with data from files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .59
2.2.1 Working with well-structured data from files or URLs . . . . . . . . . . . . . . . . . . . . .59
2.2.2 Using R with less-structured data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .64
2.3 Working with relational databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .67
2.3.1 A production-size example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .68
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .79
3 Exploring data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
3.1 Using summary statistics to spot problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .83
3.1.1 Typical problems revealed by data summaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .84
3.2 Spotting problems using graphics and visualization . . . . . . . . . . . . . . . . . . . . . . . . .88
3.2.1 Visually checking distributions for a single variable . . . . . . . . . . . . . . . . . . . .90
3.2.2 Visually checking relationships between two variables . . . . . . . . . . . . . . . . . . .100
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .116
4 Managing data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
4.1 Cleaning data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118
4.1.1 Domain-specific data cleaning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119
4.1.2 Treating missing values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .121
4.1.3 The vtreat package for automatically treating missing variables . . . . . . . . .125
4.2 Data transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .128
4.2.1 Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129
4.2.2 Centering and scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131
4.2.3 Log transformations for skewed and wide distributions . . . . . . . . . . . . . . . . . . .134
4.3 Sampling for modeling and validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .137
4.3.1 Test and training splits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .138
4.3.2 Creating a sample group column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139
4.3.3 Record grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .140
4.3.4 Data provenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .142
5 Data engineering and data shaping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .143
5.1 Data selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
5.1.1 Subsetting rows and columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .146
5.1.2 Removing records with incomplete data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
5.1.3 Ordering rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .154
5.2 Basic data transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158
5.2.1 Adding new columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158
5.2.2 Other simple operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163
5.3 Aggregating transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
5.3.1 Combining many rows into summary rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
5.4 Multitable data transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167
5.4.1 Combining two or more ordered data frames quickly . . . . . . . . . . . . . . . . . . . . . . .167
5.4.2 Principal methods to combine data from multiple tables . . . . . . . . . . . . . . . . . .173
5.5 Reshaping transforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
5.5.1 Moving data from wide to tall form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .179
5.5.2 Moving data from tall to wide form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183
5.5.3 Data coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .188
Part 2 Modeling methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .191
6 Choosing and evaluating models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .193
6.1 Mapping problems to machine learning tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194
6.1.1 Classification problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195
6.1.2 Scoring problems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196
6.1.3 Grouping: working without known targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197
6.1.4 Problem-to-method mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199
6.2 Evaluating models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200
6.2.1 Overfitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .200
6.2.2 Measures of model performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .204
6.2.3 Evaluating classification models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .205
6.2.4 Evaluating scoring models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .215
6.2.5 Evaluating probability models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217
6.3 Local interpretable model-agnostic explanations (LIME) for explaining model predictions .225
6.3.1 LIME: Automated sanity checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
6.3.2 Walking through LIME: A small example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .227
6.3.3 LIME for text classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .234
6.3.4 Training the text classifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .238
6.3.5 Explaining the classifier’s predictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .239
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244
7 Linear and logistic regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245
7.1 Using linear regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
7.1.1 Understanding linear regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .247
Equation 7.1 The expression for a linear regression model . . . . . . . . . . . . . . . . . . . . .248
7.1.2 Building a linear regression model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251
7.1.3 Making predictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252
7.1.4 Finding relations and extracting advice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258
7.1.5 Reading the model summary and characterizing coefficient quality . . . . . . . .260
7.1.6 Linear regression takeaways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
7.2 Using logistic regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
7.2.1 Understanding logistic regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .267
Equation 7.2 The expression for a logistic regression model . . . . . . . . . . . . . . . . . . .270
7.2.2 Building a logistic regression model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .272
7.2.3 Making predictions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .273
7.2.4 Finding relations and extracting advice from logistic models . . . . . . . . . . . .278
7.2.5 Reading the model summary and characterizing coefficients . . . . . . . . . . . . . . .279
7.2.6 Logistic regression takeaways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .286
7.3 Regularization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287
7.3.1 An example of quasi-separation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .287
7.3.2 The types of regularized regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .292
7.3.3 Regularized regression with glmnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .293
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .303
8 Advanced data preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .304
8.1 The purpose of the vtreat package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .305
8.2 KDD and KDD Cup 2009 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307
8.2.1 Getting started with KDD Cup 2009 data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .308
8.2.2 The bull-in-the-china-shop approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .310
8.3 Basic data preparation for classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .312
8.3.1 The variable score frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .314
8.3.2 Properly using the treatment plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .318
8.4 Advanced data preparation for classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .320
8.4.1 Using mkCrossFrameCExperiment() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .320
8.4.2 Building a model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .322
8.5 Preparing data for regression modeling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327
8.6 Mastering the vtreat package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
8.6.1 The vtreat phases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
8.6.2 Missing values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331
8.6.3 Indicator variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .332
8.6.4 Impact coding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
8.6.5 The treatment plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335
8.6.6 The cross-frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .335
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .339
9 Unsupervised methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .341
9.1 Cluster analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342
9.1.1 Distances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343
9.1.2 Preparing the data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .346
9.1.3 Hierarchical clustering with hclust . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .349
9.1.4 The k-means algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
9.1.5 Assigning new points to clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .368
9.1.6 Clustering takeaways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .370
9.2 Association rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .370
9.2.1 Overview of association rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .370
9.2.2 The example problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372
9.2.3 Mining association rules with the arules package . . . . . . . . . . . . . . . . . . . . . . . .373
9.2.4 Association rule takeaways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .381
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .382
10 Exploring advanced methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .383
10.1 Tree-based methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .385
10.1.1 A basic decision tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .386
10.1.2 Using bagging to improve prediction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .389
10.1.3 Using random forests to further improve prediction . . . . . . . . . . . . . . . . . . . . .391
10.1.4 Gradient-boosted trees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .398
10.1.5 Tree-based model takeaways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .406
10.2 Using generalized additive models (GAMs) to learn non-monotone relationships .406
10.2.1 Understanding GAMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .406
10.2.2 A one-dimensional regression example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .408
10.2.3 Extracting the non-linear relationships . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .412
10.2.4 Using GAM on actual data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414
10.2.5 Using GAM for logistic regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .417
10.2.6 GAM takeaways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .418
10.3 Solving “inseparable” problems using support vector machines . . . . . . . . . . . . .419
10.3.1 Using an SVM to solve a problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .420
10.3.2 Understanding support vector machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .425
10.3.3 Understanding kernel functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .427
10.3.4 Support vector machine and kernel methods takeaways . . . . . . . . . . . . . . . . . . . .429
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .430
Part 3 Working in the real world . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .431
11 Documentation and deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433
11.1 Predicting buzz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .435
11.2 Using R markdown to produce milestone documentation . . . . . . . . . . . . . . . . . . . . . .436
11.2.1 What is R markdown? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .437
11.2.2 knitr technical details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .439
11.2.3 Using knitr to document the Buzz data and produce the model . . . . . . . . . . . .441
11.3 Using comments and version control for running documentation . . . . . . . . . . . . .444
11.3.1 Writing effective comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .444
11.3.2 Using version control to record history . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .446
11.3.3 Using version control to explore your project . . . . . . . . . . . . . . . . . . . . . . . . . .452
11.3.4 Using version control to share work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .454
11.4 Deploying models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .458
11.4.1 Deploying demonstrations using Shiny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .460
11.4.2 Deploying models as HTTP services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .461
11.4.3 Deploying models by export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .463
11.4.4 What to take away . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .465
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .466
12 Producing effective presentations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .467
12.1 Presenting your results to the project sponsor . . . . . . . . . . . . . . . . . . . . . . . . . . .469
12.1.1 Summarizing the project’s goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .470
12.1.2 Stating the project’s results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .472
12.1.3 Filling in the details . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .474
12.1.4 Making recommendations and discussing future work . . . . . . . . . . . . . . . . . . . . . .476
12.1.5 Project sponsor presentation takeaways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .476
12.2 Presenting your model to end users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .477
12.2.1 Summarizing the project goals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .477
12.2.2 Showing how the model fits user workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .478
12.2.3 Showing how to use the model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .480
12.2.4 End user presentation takeaways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .482
12.3 Presenting your work to other data scientists . . . . . . . . . . . . . . . . . . . . . . . . . . . .482
12.3.1 Introducing the problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .482
12.3.2 Discussing related work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .483
12.3.3 Discussing your approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .484
12.3.4 Discussing results and future work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .485
12.3.5 Peer presentation takeaways . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .487
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .487
appendix A Starting with R and other tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489
A.1 Installing the tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489
A.1.1 Installing Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .489
A.1.2 The R package system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .494
A.1.3 Installing Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .494
A.1.4 Installing RStudio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .495
A.1.5 R resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .495
A.2 Starting with R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .496
A.2.1 Primary features of R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .498
A.2.2 Primary R data types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .501
A.3 Using databases with R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .507
A.3.1 Running database queries using a query generator . . . . . . . . . . . . . . . . . . . . . . . .507
A.3.2 How to think relationally about data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .511
A.4 The takeaway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .513
appendix B Important statistical concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .514
B.1 Distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .515
B.1.1 Normal distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .515
B.1.2 Summarizing R’s distribution naming conventions . . . . . . . . . . . . . . . . . . . . . . . . .520
B.1.3 Lognormal distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .520
B.1.4 Binomial distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .524
B.1.5 More R tools for distributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .529
B.2 Statistical theory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .529
B.2.1 Statistical philosophy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .529
B.2.2 A/B tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .532
B.2.3 Power of tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .536
B.2.4 Specialized statistical tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .538
B.3 Examples of the statistical view of data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .540
B.3.1 Sampling bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .540
B.3.2 Omitted variable bias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .543
B.4 The takeaway . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .548
appendix C Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .549
index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .553
Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .553
A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .553
B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .553
C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .554
D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .555
E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .557
F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .557
G . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .557
H . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .558
I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .558
J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .559
K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .559
L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .559
M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .560
N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .561
O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .561
P . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .561
Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .562
R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .562
S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .563
T . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .565
U . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .565
V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .566
W . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .566
X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .566
Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .566
Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .566
Practical Data Science with R, Second Edition takes a practice-oriented approach to explaining basic principles in the ever expanding field of data science. You’ll jump right to real-world use cases as you apply the R programming language and statistical analysis techniques to carefully explained examples based in marketing, business intelligence, and decision support.
Evidence-based decisions are crucial to success. Applying the right data analysis techniques to your carefully curated business data helps you make accurate predictions, identify trends, and spot trouble in advance. The R data analysis platform provides the tools you need to tackle day-to-day data analysis and machine learning tasks efficiently and effectively.
Practical Data Science with R, Second Edition is a task-based tutorial that leads readers through dozens of useful, data analysis practices using the R language. By concentrating on the most important tasks you’ll face on the job, this friendly guide is comfortable both for business analysts and data scientists. Because data is only useful if it can be understood, you’ll also find fantastic tips for organizing and presenting data in tables, as well as snappy visualizations.
You’ll need to be comfortable with basic statistics and have an introductory knowledge of R or another high-level programming language.