Lecture Series: An Introduction to the R Statistical Computing Environment
July 21-31, 2020, 5:30-7:30 PM
John Fox
Department of Sociology, McMaster University
Teaching Assistant: Allison Leanage
ICPSR Summer Program
Short URL: tinyurl.com/ICPSR-R-course
Please read the installation instructions for R and R Studio.
The R statistical computing environment has become the de-facto standard for writing statistical software among statisticians and is widely used in the social sciences and more generally – it is now possibly the most popular statistical software in the world. R is a free, open-source implementation (and extension) of the S language, which was originally developed at Bell Labs in the mid-1970s. R is available for Windows, macOS, and Unix/Linux systems.
The basic R system is developed and maintained by the R Core group, comprising 20 members, many of them eminent in the field of statistical computing. The R Project for Statistical Computing is a project of the R Foundation, whose membership includes most of the R Core group along with a number other individuals, and is also associated with the Free Software Foundation.
A statistical software package, such as SPSS, is primarily oriented toward combining instructions, possibly entered via a point-and-click interface, with rectangular case-by-variable datasets to produce (often voluminous) printed output. Although they may include limited programming capabilities, such packages make it easy to perform routine data analysis tasks, but they make it relatively difficult to do things that are innovative or nonstandard, or to extend the built-in capabilities of the package. Commercial statistical software can also be expensive.
In contrast, a good statistical computing environment makes routine data analysis easy but also supports convenient programming. R fulfills both of these requirements, and users can readily write programs that add to its already impressive facilities. R is also particularly capable in the area of statistical graphics.
More than 15,500 R add-on packages (as of April 2020), freely available on the internet in the Comprehensive R Archive Network (CRAN), and nearly 2000 others in the Bioconductor package archive, aimed primarily at researchers in bioinformatics, extend the capabilities of R to almost every area of statistical data analysis. R packages are also available from other, less curated, sources, including from Github (search for R).
These lectures provide a broad introduction to the R statistical computing environment. The first five lectures constitute a basic overview of and introduction to R, including to statistical modeling in R – in effect, using R as a statistical package. I assume here that the statistical content is more or less familiar and emphasize the implementation of the various methods in R. I will also show you how to use the R Commander, a simple graphical user ("point-and-click") interface ("GUI") for R, and RStudio, a sophisticated but easy to use interactive development environment (IDE) for R, which includes support for "literate programming" to create documents that mix R code with explanatory text, encouraging reproducible research. The sixth lecture briefly takes up data and data management in R, because managing data is a necessary prelude to statistical analysis.
Learning even a bit of R programming, however, will greatly increase your ability to manage and analyze data using R. The final three sessions are intended to provide the background required to use R more flexibly for data analysis and presentation, including an introduction to R programming and to the design of custom statistical graphs, unlocking the power in the R statistical programming environment. Participants are strongly encouraged to install R on their own computers and to follow along with me during the lectures.
The overall objective is to provide some facility in the use of R, to a level that enables participants to employ the software for assignments and projects in other Summer Program courses as well as in their own work, and to provide a foundation for learning more about R and statistical computing.
The lectures are based mostly on Fox and Weisberg,An R Companion to Applied Regression, Third Edition, and partly on materials prepared specifically for this lecture series. An outline of the lectures follows, with chapter references to Fox and Weisberg:
Topics
Day/Topic* | Reading |
Materials** |
1. Getting Started with R and the R Commander (July 21) | Ch. 1, Secs. 1.2-1.3, 1.5-1.7 | script, exercises (answers: MAD-exercise.R); data file: Duncan.txt; resources: getting help with R |
2. Workflow in R, with RStudio and R Markdown (July 22) | Ch. 1, Secs. 1.1, 1.4 | script, exercise (answers: States-exercise.Rmd, States-exercise.html); materials: RMarkdown-examples.Rmd, Duncan.Rmd; resources: Base R, Advanced R, RStudio, and R Markdown "cheat sheets", R Markdown reference |
3. Linear models in R, Part I (July 23) | Ch. 4 | script, exercise (do parts 1 and 2) |
4. Linear models in R, Part II (July 24) | Ch. 5, Secs. 8.1-8.5 | script, exercise (do parts 3-5) (answers: Burt-exercise.Rmd, Burt-exercise.html) |
5. Generalized linear models and mixed-effects models in R (July 27) | Chs. 6, 7, Sec. 8.6, 8.7 | script, exercises (answers: Powers-exercise.Rmd, Powers-exercise.html), data files: Powers.txt, Long.txt, Goldstein.txt (data management: Goldstein.R) |
6. Data and data management in R, including an introduction to the “tidyverse” (July 28) | Ch.2 | script, exercises (answers: merging-exercise.Rmd, merging-exercise.html), data files: Duncan.csv, Duncan.txt, Duncan.xlsx, flights14.csv, Prestige.xlsx |
7. R programming, part I (July 29) | Ch. 10 | script, exercise (answers: Fibonacci-exercise.Rmd, Fibonacci-exercise.html) |
8. R programming, part II (July 30) | script, exercises (answers: Least-squares-program-exercise.Rmd, Least-squares-program-exercise.html) | |
9. R Graphics (July 31) | Ch. 9 | script, exercise (answers: Anscombe-exercise.Rmd, Anscombe-exercise.html), symbols and colors demo |
*The division into days is approximate: Occasionally, material may spill over from one day to the next.
**I intend to do further work on the daily scripts as the lecture series progresses and so it's best to download each script on the day of the corresponding lecture. At the beginning of most lectures after the first, I'll briefly go over the solution to an exercise (marked by an asterisk in the daily exercises) from the preceding lecture. Answers to selected exercises (shown in parentheses) will be posted after exercises are taken up in the lectures.
The lectures are largely modular, so you should be able to attend those that interest you. Lectures 1 and 2 are basic, however, and necessary for much of the material in the other lectures. I'll also use a small number of PDF slides, which you can download as slides or as notes.
Selected Bibliography
Publishers of statistical texts have been producing a steady stream of books on R. Of particular note is Springer's Use R! series and Chapman and Hall/CRC’s The R Series. Books on R have proliferated to the extent that it's no longer possible to compile a comprehensive list of even the better books, so take the following as some of my personal recommendations.
Basic Text
The principal source for this workshop is J. Fox and S. Weisberg, An R Companion to Applied Regression, Third Edition, Sage (2019). Additional materials are available on the web site for the book, including several appendices (on multivariate linear models, survival analysis, Bayesian regression modeling, and more). The book is associated with the car, carData, and effects packages for R. It should not be necessary to read the book to understand the lectures.
Manuals
R is distributed with a set of manuals, which are accessible from RStudio, and which are also available at the CRAN web site.
The manual for S-PLUS Trellis Graphics is also useful for the lattice package in R.
A great deal of information about using the RStudio interactive development environment is available on the RStudio website.
Package Vignettes
Many R packages have "vignettes" -- long-form documentation -- in addition to the mandatory help pages. Enter the command help(package="package-name") and click the link User guides, package vignettes and other documentation if it appears on the main package help page. The command vignette() displays the names of all vignettes in packages residing in your library, while vignette(package="package-name") displays the names of vignettes (if any) in a particular package.
Programming in R
R. A.
Becker, J. M. Chambers, and A .R. Wilks, The
New S Language: A Programming Environment for Data Analysis and
Statistics.
J. M. Chambers, Programming with Data: A Guide to the S Language. New York: Springer, 1998. Describes the then-new features in S Version 4, including the newer formal object-oriented programming system (also incorporated in R), by the principal designer of the S language and a member of the R Core group of developers. Not an easy read. (The “Green Book.”)
J. M. Chambers, Software for Data Analysis: Programming with R. New York: Springer, 2008. Chambers’s newest book ranges quite widely, and emphasizes a deep understanding of the R language, along with object-oriented programming, and links between R and other software. Some topics are unusual, such as processing text data in R.
J. M. Chambers, Extending R. Boca Raton: CRC/Chapman & Hall, 2016. Chambers's newest book covers a variety of advanced topics, with an emphasis on object-oriented programming in R, including the relatively new system of "reference classes," and on interfacing R with other programming languages.
J. M.
Chambers and T.J. Hastie, eds., Statistical
Models in
D. Eddelbbuettel, Seamless R and C++ Integration with Rcpp. New York: Springer, 2013. Judicious use of compiled code written in C, C++, or Fortran can substantially improve the efficiency of some R programs. The Rcpp package and its cousins simplify the process of integrating C++ code in R. I recommend this book to those who already know C++.
R. Gentleman, R Programming for Bioinformatics, Boca Raton: Chapman and Hall, 2009. A thorough, though at points relatively difficult, treatment of programming in R, by one of the original co-developers of R and a founder of the related Bioconductor Project (which develops computing tools for the analysis of genomic data). Don’t let the title fool you: Most of the book is of general interest to R programmers.
G. Grolemund, Hands-On Programming with R, Sebastopol CA: O'Reilly, 2014. A readable, easy-to-follow, basic introduction to R programming, which also introduces RStudio.
R. Ihaka and R. Gentleman, “R: A language for data analysis and graphics.” Journal of Computational and Graphical Statistics, 5:299-314, 1996. The original published description of the R project, now quite out of date but still worth looking at.
W. N.
Venables and B. D. Ripley, S Programming.
H. Wickham, Advanced R, Second Edition. Boca Raton: Chapman and Hall/CRC, 2019. Hadley Wickham has contributed a number of widely used R packages (such as ggplot2 for graphics and the "tidyverse" suite of packages for data manipulation) and is associated with RStudio. As the name implies, you may (and should!) be interested in reading this book after you’ve learned the basics of R programming. A related volume by Wickham, R Packages, Sepastopol CA: O'Reilly, 2015, is (as its name implies) about how to write R packages. Wickham's approach to R programming and package-writing is sometimes idiosyncratic but always carefully considered and interesting. The websites for the Advanced R and R Packages books provide access to the texts (to the first edition, in the case of Advanced R).
Xie, Y., Dynamic Documents with R and knitr, Second Edition. Boca Raton: Chapman and Hall/CRC, 2016. Yihui Xie describes the use of his knitr package for creating LaTeX documents with embedded executable R code. This package also provides the basis for R Markdown in RStudio. The website for knitr also has as useful information.
Y. Xie, J. J. Allaire, and G. Grolemund, R Markdown: The Definitive Guide. Boca Raton: CRC/Chapman and Hall, 2019. Provides a more extensive treatment of R Markdown for a variety of purposes, including documents of various sorts and presentations.
Statistical Computing in R
The following three books treat traditional topics in statistical computing, such as optimization, simulation, probability calculations, and computational linear algebra, using R (although the coverage of particular topics in the books differs). All offer introductions to R programming. Of these books, Braun and Murdoch is the briefest and most accessible.
W. J. Braun and D. J. Murdoch, A First Course in Statistical Programming with R, Second Edition. Cambridge: Cambridge University Press, 2016.
O. Jones, R. Maillardet, and A. Robinson, Introduction to Scientific Programming and Simulation Using R, Second Edition. Boca Raton: Chapman and Hall, 2014.
M. L. Rizzo. Statistical Computing with R, Boca Raton: Chapman and Hall, 2008.
Graphics in
R
P. Murrell. R Graphics, Third Edition. New York: Chapman and Hall, 2019. A tour-de-force – the definitive reference on traditional R graphics and on the grid graphics system on which lattice graphics (the R implementation of William Cleveland’s Trellis graphics) and ggplot2 graphics are built. R code to produce the figures in the book are on Murrell’s web site.
P. Murrell and R. Ihaka, “An approach to providing mathematical annotation in plots.” Journal of Computational and Graphical Statistics, 9:582-599, 2000. One of the unusual and very useful features of R graphics is the ability to include mathematical notation. This article explains how.
D. Sarkar, Lattice: Multivariate Data Visualization with R. New York: Springer, 2008. Deepayan Sarkar is the developer of the powerful lattice package in R, which implements Trellis graphics. This book provides a fine introduction to and overview of lattice graphics. Figures from the book and the R code to produce them are available on the web.
H. Wickham, ggplot2: Elegant Graphics for Data Analysis, Second Edition. New York: Springer, 2016. A guide to Hadley Wickham's ggplot2 package, which provides an alternative graphics system for R based on an extension of Wilkinson's The Grammar of Graphics (Second Edition, Springer, 2005), which, in turn, provides a systematic basis for constructing statistical graphs. There's a website for the ggplot2 package that includes a link to R Markdown source code from which the book can be compiled.
Data
Management
P. Spector, Data Manipulation with R. New York: Springer, 2008. Data management is a dry subject, but the ability to carry it out is vital to the effective day-to-day use of R (or of any statistical software). Spector provides a reasonably broad and clear introduction to the subject.
H. Wickham and G. Grolemund. R for Data Science. Sebastopol CA: O'Reilly, 2017. This book (with an associated website) has quite a wide focus, touching on subjects such as statistical modeling, statistical graphics, and reproducible research with R Markdown, but its real strength is in data management using various R packages in the "tidyverse" created by Hadley Wickham and his colleagues at RStudio. A website for the book includes the text; also see the tidyverse website.
(Highly) Selected Statistical Methods Implemented in R
Also see the package listing on CRAN and the various CRAN "task views."
J. Adler, R in a Nutshell: A Desktop Quick Reference, Sebastopol CA: O’Reilly. Basic information about using R, including brief illustrations of many R commands. New users of R may find the information in this book useful.
R. S. Bivand, E. J. Pebesma, and V. Gómez-Rubio, Applied Spatial Data Analysis with R, Second Edition, New York: Springer, 2013. There is a strong community of researchers in spatial statistics developing R software, much of which is described in this book, including the basic sp package, which provides R classes for spatial data.
W. Bowman and A. Azzalini, Applied Smoothing Techniques for Data Analysis: The Kernel Approach with S-Plus Illustrations. Oxford: Oxford University Press, 1997. A good introduction to nonparametric density estimation and nonparametric regression, associated with the sm package (for both S-PLUS and R).
F. Bretz, T. Hothorn, and P. Westfall, Multiple Comparisons Using R. Boca Raton: Chapman and Hall, 2011. Covers methods for simultaneous statistical inference focusing on the flexible and general multcomp package.
C. Brunsdon and L. Comber, An Introduction to R for Spatial Analysis and Mapping. London: Sage, 2015. Overlaps somewhat with Bivand et al., but the presentation is at a more elementary level; particularly strong on drawing maps.
C. Davison and D. V. Hinkley, Bootstrap Methods and their Application. Cambridge: Cambridge University Press, 1997. A comprehensive introduction to bootstrap resampling, associated with the boot package (written by A. J. Canty). Somewhat more difficult than Efron and Tibshirani (immediately below).
B. Efron and R. J. Tibshirani, An Introduction to the Bootstrap. London: Chapman and Hall, 1993. Another extensive treatment of bootstrapping by its originator (Efron), also accompanied by an R package, bootstrap (but somewhat less usable than boot).
B. S. Everitt and T. Hothorn, A Handbook of Statistical Analyses Using R, Second Edition. Boca Raton: Chapman and Hall, 2010. Many worked-out, brief examples, illustrating a variety of statistical methods. New users of R may find this book useful.
J. Fox. Using the R Commander: A Point-and-Click Interface to R. Boca Raton: Chapman and Hall, 2017. Provides a detailed guide to installing and using the R Commander graphical user interface for R. There's a website for the book.
M. Friendly and D. Meyer, Discrete Data Analysis with R: Visualization and Modelling Techniques for Categorical and Count Data. Boca Raton: Chapman and Hall, 2016. A tour-de-force, wide-ranging treatment of the material clearly described by the title of the book. Visit the web site for the book for chapter summaries, illustrative graphs, and a variety of other information.
A. Gelman, J. B. Carlin, H. S. Stern, D. B. Dunson, A. Vehtari, and D. Rubin, Bayesian Data Analysis, Third Edition. Boca Raton: CRC/Chapman & Hall, 2013. More demanding than McElreath's text, described below, this is a tour-de-force exposition of Bayesian methods, including for mixed-effects models. An appendix to the text explains how to use R and Stan (via the rstan package) for Bayesian inference. Andrew Gelman and Aki Vehtari are among the developers of Stan.
A. Gelman and J. Hill, Data Analysis Using Regression and Multilevel/Hierarchical Models. Cambridge: Cambridge University Press, 2007. A wide-ranging yet deep treatment of hierarchical models and various related topics, predominantly but not exclusively from a Bayesian perspective, using both R and BUGS software.
F. E. Harrell, Jr., Regression Modeling Strategies, With Applications to Linear Models, Logistic Regression, and Survival Analysis, Second Edition. New York: Springer, 2015. Describes an interesting approach to statistical modeling, with frequent references to Harrell's Hmisc and rms packages
T. J. Hastie and R. J. Tibshirani, Generalized Additive Models. London: Chapman and Hall, 1990. An accessible treatment of generalized additive models, as implemented in the gam package, and of nonparametric regression analysis in general. [The gam function in the mgcv package in R takes a somewhat different approach; see Wood (2000), below.]
G. James, D. Witten, T. Hastie, and R. Tibshirani, An Introduction to Statistical Learning, with Applications in R. New York: Springer, 2013. A good, accessible introduction to so-called "machine-learning" methods for regression and classification that, in my opinion, clearly reveals the strengths and weaknesses of this area. For a more advanced treatment of essentially the same topics, see T. Hastie, R. Tibshirani, and J. Friedman, The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition, New York: Springer, 2017. Downloadable copies of both books are available on the web (James et al., Hastie et al.).
R. Koenker, Quantile Regression. Cambridge: Cambridge University Press, 2005. Describes a variety of methods for quantile regression by the leading figure in the area. The methods are implemented in Koenker's quantreg package for R.
C. Loader, Local Likelihood and Regression. New York: Springer, 1999. Another text on nonparametric regression and density estimation, using the locfit package. Although the text is less readable than Bowman and Azzalini, the locfit software in very capable.
T. Lumley, Complex Surveys: A Guide to Analysis Using R. Hoboken NJ, Wiley, 2010. A lucid introduction to the analysis of data from complex survey samples and to Lumley's highly capable survey package. Thomas Lumley is a member of the R Core group of developers.
P. Mair, Modern Psychometrics with R. Cham, Switzerland: Springer, 2018. Shows how to use R for a wide range of standard psychometric methods, such as classical test theory, item-response theory, factor analysis, and structural equation modeling. The book provides an overview of the topics covered that's broader than it is deep.
R. McElreath, Statistical Retrinking: A Bayesian Course with Examples in R and Stan, Second Edition. Boca Raton: CRC/Chapman and Hall, 2020. (Caveat: The second edition of the book is new and I haven't yet read it.) The title is reasonably descriptive of this very readable introduction to modern Bayesian methods. The use of R and Stan in the book is somewhat idiosyncratic, employing the author's rethinking package, which is freely available but not from CRAN. Stan implements state-of-art Hamiltonian Monte Carlo methods for drawing samples from posterior distributions, and may be accessed through R via the rstan package (which is on CRAN – see, e.g., the on-line appendix to Fox and Weisberg's R Companion on Bayesian regression in R).
G. P. Nason, Wavelet Methods in Statistics with R. New York: Springer, 2008. Describes the wavethresh package for wavelet smoothing, by one of the key figures in the development of wavelet methods in statistics.
J. C. Pinheiro and D. M. Bates, Mixed-Effects Models in S and S-PLUS. New York: Springer, 2000. An extensive treatment of linear and nonlinear mixed-effects models in S, focused on the authors' nlme package. Mixed models are appropriate for various kinds of non-independent (clustered) data, including hierarchical and longitudinal data. Does not cover Bates's newer lme4 package. Doug Bates is a member of the R Core group of developers. Ben Bolker maintains an extensive website on mixed-effects models in R.
T. M. Therneau and P. M. Grambsch, Modeling Survival Data: Extending the Cox Model. New York, Springer: 2000. An overview of both basic and advanced methods of survival analysis (event-history analysis), with reference to S and SAS software, the former implemented in Therneau's state-of-the-art survival package (and part of the standard R distribution), which has evolved since the publication of the book (see the vignettes included in the package).
S. van Buuren, Flexible Imputation of Missing Data, Boca Raton: CRC Press, 2012. There are several packages in R for multiple imputation of missing data; this book largely describes the mice (multiple imputation by chained equations) package. An HTML version of the book is available on-line.
W. N. Venables and B. D. Ripley. Modern Applied Statistics with S, Fourth Edition. New York: Springer, 2002. An influential and wide-ranging treatment of data analysis using S. Many of the methods described in the book are programmed in the associated (and indispensable) MASS, nnet, and spatial packages, which are included in the standard R distribution. This text is more advanced and has a broader focus than the R Companion. I once considered the MASS book the best moderately advanced reference on statistical data analysis in S and R. The book is still useful, but it is showing its age.
S. N. Wood, Generalized Additive Models: An Introduction with R, Second Edition. New York: Chapman and Hall, 2017. Describes the mgcv package in R, which contains a gam function for fitting generalized additive models based on smoothing splines. The initials "mgcv" stand for multiple generalized cross validation, the method by which Wood selects GAM smoothing parameters.
Other Sources (Many Free)
The home page of the R web site has links to a variety of resources.
The R Journal, the journal of the R Project for Statistical Computing, and its predecessor R News, are also good sources of information, as is the Journal of Statistical Software, a free-access, on-line, and "high-impact" American Statistical Association journal dominated by coverage of R packages.
Information about R packages in a number of application areas is available in various “CRAN task views’’. Also see the package listing on CRAN.
The RStudio web site is a good source of information both on using the RStudio IDE and on other topics, such as R Markdown (see the link for "Resources").