I. RStudio
The course notes for the statistics portion of this course will be contained in dynamic R Notebooks. While reading through the notes, you will be prompted to try executing R code snippets to see graphics and statistics. We will be using the software RStudio to work with R.
Download RStudio
Please follow the link to the RStudio Download page. Make sure you are selecting the free version and the correct operating system: Windows or MacOS. This is pretty easy as the webpage runs a system checker and suggests the correct package once you click the “download free version” button. Follows these steps:
- Install R first, using the STEP 1 link provided.
- Only after R has been installed, download RStudio.
- Run the installer - it will find all the R files it needs and connect the front end (RStudio) to the engine (R).
- Open RStudio.
RStudio: Working Directory
R saves everything to a working directory, and when you try to open or load files, it goes looking in the working directory. Let’s set it up now to avoid trouble later. In the main menu select Session and then \(\fbox{Set Working Directory}\). When RStudio was installed, it created a folder in MyDocuments called R. Use the browse option to surf to it and hit OK.
RStudio: Home Screen
The RStudio home screen is divided into four panels:
- Code Editor
- R Console
- Workspace and History
- Plots and Files
Most of our work will be in the Code Editor, the top-left panel. This is where we create reports and documents and run code blocks.
The R Console lets us see under the hood. These code lines show the input and output from the R engine. The remaining two areas have useful info for pros but are often left completely alone by beginners. You can resize all four windows to your own taste, but I suggest making the Code Editor very large since it will be our main work area.
RStudio: R Notebooks
To create a new notebook for your work, use the File menu and select \(\fbox{New File : R Notebook}\)
When you try to create a new R Notebook file, the Rstudio will ask if it can download and install the packages it needs. Click yes. R is a stripped down, open-source, fast and powerful statistical engine. This all comes at the cost of being a bit dense and difficult to work with, a problem we typically circumvent by loading packages and libraries to make our lives easier.
Once you can open the R Notebooks I have created for you and create new R Notebooks of your own, you have everything you need for the stats portion of the course working in RStudio.
RStudio: Mosaic
Designed by data scientists for introductory statistics students, the Mosaic library contains all the needed functions for basic stats. Better, the coding has been streamlined so the whole process is much more intuitive than in native R. Trust me, I’ve been using R since before there was an RStudio or Mosaic, and these are vast improvements.
We only have to install Mosaic once. Go to Tools menu at top where the first option is \(\fbox{Install Packages...}\). When you start typing “mosaic” (lower case letters), the auto-complete will pop up so you know you’re on the right track.
When you run this code on your machine the first time, RStudio will spit out a few dozen lines of red text in the console, and a download progress bar will keep popping up. This is normal, and you will never need to do it again (unless you install a different package).
Now that the Mosaic package is installed, we still need to load it. We have to do this in every new session we create in RStudio which is why I suggest quitting with the “save session” option on, so that all data and packages you had loaded will reload the next time you open RStudio.
library(mosaic)
II. Introduction to R
Let’s do some stats. We have everything setup properly, so let’s create some data and graphics. Why not flip a coin? Mosaic has a built coin flipper.
rflip()
Flipping 1 coin [ Prob(Heads) = 0.5 ] ...
T
Number of Heads: 0 [Proportion Heads: 0]
Interesting, but would it not be more interesting to flip 10 coins at once, and then do that same thing ten thousand times? Then we would have some data to plot, and you will have a glimpse into what RStudio can do.
rflip(10)
Flipping 10 coins [ Prob(Heads) = 0.5 ] ...
H T T T H T T H H H
Number of Heads: 5 [Proportion Heads: 0.5]
We can use the function do to repeat a process many times. The code below will flips 10 coins, record the results, then repeat the 10 coin flips 20 total times.
do(20) * rflip(10)
Tasks: Create a Variable
The next code block creates a variable flips to store all the data in. Once created, we can start plotting the data and making tables.
flips = do(10000) * rflip(10)
Notice there is no output. R has just computed the coin flips and stored the results in the variable flips. If we want to see what happened, we can print out the variable flips to see what’s in it.
flips
Tasks: Tables and Histograms
We want to visualize what’s happening with this data, so we need some kind of summary, either a table, or a graph, or both. We can count the number of heads that have appeared in each group of ten coin flips. The tally function counts all possible values from the batches of 10 flips, and summarizes how many of each outcome occurred in the ten thousand trials.
tally(~ heads, data = flips)
heads
0 1 2 3 4 5 6 7 8
6 111 424 1155 1998 2483 2059 1188 466
9 10
99 11
histogram(~ heads, data = flips)

The histogram looks a bit wonky because the default bin width is too large, so we have empty categories or bins. Let’s tell the histogram function we want bin widths of 1 centered at 5, so it will split the data into its integer values and force the center of the histogram to be at 5.
histogram(~ heads, data = flips, width = 1)

You should try different widths in the code above, to help you understand how its working. At least try \(\fbox{width = 2}\).
Great! Now you’ve done some statistics with RStudio.
LS0tDQp0aXRsZTogIlRvb2xzIGZvciBTdGF0aXN0aWNzOiBSU3R1ZGlvIGFuZCBNb3NhaWMiDQpzdWJ0aXRsZTogVU5HIE1BVEggMzM1MCAob25saW5lKQ0KYXV0aG9yOiBSb2JiIFNpbm4NCmRhdGU6IEp1bHkgMjAyMA0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+SS4gUlN0dWRpbzwvc3Bhbj4NCg0KVGhlIGNvdXJzZSBub3RlcyBmb3IgdGhlIHN0YXRpc3RpY3MgcG9ydGlvbiBvZiB0aGlzIGNvdXJzZSB3aWxsIGJlIGNvbnRhaW5lZCBpbiBkeW5hbWljIFIgTm90ZWJvb2tzLiBXaGlsZSByZWFkaW5nIHRocm91Z2ggdGhlIG5vdGVzLCB5b3Ugd2lsbCBiZSBwcm9tcHRlZCB0byB0cnkgZXhlY3V0aW5nIFIgY29kZSBzbmlwcGV0cyB0byBzZWUgZ3JhcGhpY3MgYW5kIHN0YXRpc3RpY3MuIFdlIHdpbGwgYmUgdXNpbmcgdGhlIHNvZnR3YXJlIFJTdHVkaW8gdG8gd29yayB3aXRoIFIuDQoNCiMjIERvd25sb2FkIFJTdHVkaW8NClBsZWFzZSBmb2xsb3cgdGhlIGxpbmsgdG8gdGhlIFtSU3R1ZGlvIERvd25sb2FkIHBhZ2VdKGh0dHBzOi8vcnN0dWRpby5jb20vcHJvZHVjdHMvcnN0dWRpby9kb3dubG9hZC8pLiBNYWtlIHN1cmUgeW91IGFyZSBzZWxlY3RpbmcgdGhlICoqZnJlZSoqIHZlcnNpb24gYW5kIHRoZSBjb3JyZWN0IG9wZXJhdGluZyBzeXN0ZW06IFdpbmRvd3Mgb3IgTWFjT1MuIFRoaXMgaXMgcHJldHR5IGVhc3kgYXMgdGhlIHdlYnBhZ2UgcnVucyBhIHN5c3RlbSBjaGVja2VyIGFuZCBzdWdnZXN0cyB0aGUgY29ycmVjdCBwYWNrYWdlIG9uY2UgeW91IGNsaWNrIHRoZSAiZG93bmxvYWQgZnJlZSB2ZXJzaW9uIiBidXR0b24uIEZvbGxvd3MgdGhlc2Ugc3RlcHM6DQoNCjEuIEluc3RhbGwgUiBmaXJzdCwgdXNpbmcgdGhlICoqU1RFUCAxKiogbGluayBwcm92aWRlZC4NCjIuIE9ubHkgKiphZnRlcioqIFIgaGFzIGJlZW4gKippbnN0YWxsZWQqKiwgZG93bmxvYWQgUlN0dWRpby4NCjMuIFJ1biB0aGUgaW5zdGFsbGVyIC0gaXQgd2lsbCBmaW5kIGFsbCB0aGUgUiBmaWxlcyBpdCBuZWVkcyBhbmQgY29ubmVjdCB0aGUgZnJvbnQgZW5kIChSU3R1ZGlvKSB0byB0aGUgZW5naW5lIChSKS4NCjQuIE9wZW4gUlN0dWRpby4NCg0KIyMjIFJTdHVkaW86IFdvcmtpbmcgRGlyZWN0b3J5DQpSIHNhdmVzIGV2ZXJ5dGhpbmcgdG8gYSB3b3JraW5nIGRpcmVjdG9yeSwgYW5kIHdoZW4geW91IHRyeSB0byBvcGVuIG9yIGxvYWQgZmlsZXMsIGl0IGdvZXMgbG9va2luZyBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkuIExldCdzIHNldCBpdCB1cCBub3cgdG8gYXZvaWQgdHJvdWJsZSBsYXRlci4gSW4gdGhlIG1haW4gbWVudSBzZWxlY3QgKipTZXNzaW9uKiogYW5kIHRoZW4gJFxmYm94e1NldCBXb3JraW5nIERpcmVjdG9yeX0kLiBXaGVuIFJTdHVkaW8gd2FzIGluc3RhbGxlZCwgaXQgY3JlYXRlZCBhIGZvbGRlciBpbiBNeURvY3VtZW50cyBjYWxsZWQgKipSKiouIFVzZSB0aGUgYnJvd3NlIG9wdGlvbiB0byBzdXJmIHRvIGl0IGFuZCBoaXQgT0suDQoNCiMjIyBSU3R1ZGlvOiBIb21lIFNjcmVlbg0KPGRpdiBzdHlsZT0gImZsb2F0OnJpZ2h0OyBwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMHB4OyBwYWRkaW5nOiAxMHB4Ij4NCiFbUlN0dWRpbyBXb3Jrc3BhY2VdKGltYWdlcy9TMF9TY3JlZW4uUE5HKQ0KPC9kaXY+DQpUaGUgUlN0dWRpbyBob21lIHNjcmVlbiBpcyBkaXZpZGVkIGludG8gZm91ciBwYW5lbHM6DQoNCjEuIENvZGUgRWRpdG9yDQoyLiBSIENvbnNvbGUNCjMuIFdvcmtzcGFjZSBhbmQgSGlzdG9yeQ0KNC4gUGxvdHMgYW5kIEZpbGVzDQoNCk1vc3Qgb2Ygb3VyIHdvcmsgd2lsbCBiZSBpbiB0aGUgQ29kZSBFZGl0b3IsIHRoZSB0b3AtbGVmdCBwYW5lbC4gVGhpcyBpcyB3aGVyZSB3ZSBjcmVhdGUgcmVwb3J0cyBhbmQgZG9jdW1lbnRzIGFuZCBydW4gY29kZSBibG9ja3MuDQoNClRoZSBSIENvbnNvbGUgbGV0cyB1cyBzZWUgdW5kZXIgdGhlIGhvb2QuIFRoZXNlIGNvZGUgbGluZXMgc2hvdyB0aGUgaW5wdXQgYW5kIG91dHB1dCBmcm9tIHRoZSBSIGVuZ2luZS4gVGhlIHJlbWFpbmluZyB0d28gYXJlYXMgaGF2ZSB1c2VmdWwgaW5mbyBmb3IgcHJvcyBidXQgYXJlIG9mdGVuIGxlZnQgY29tcGxldGVseSBhbG9uZSBieSBiZWdpbm5lcnMuIFlvdSBjYW4gcmVzaXplIGFsbCBmb3VyIHdpbmRvd3MgdG8geW91ciBvd24gdGFzdGUsIGJ1dCBJIHN1Z2dlc3QgbWFraW5nIHRoZSBDb2RlIEVkaXRvciB2ZXJ5IGxhcmdlIHNpbmNlIGl0IHdpbGwgYmUgb3VyIG1haW4gd29yayBhcmVhLg0KDQojIyMgUlN0dWRpbzogUiBOb3RlYm9va3MNCg0KVG8gY3JlYXRlIGEgbmV3IG5vdGVib29rIGZvciB5b3VyIHdvcmssIHVzZSB0aGUgRmlsZSBtZW51IGFuZCBzZWxlY3QgJFxmYm94e05ldyBGaWxlIDogUiBOb3RlYm9va30kDQoNCldoZW4geW91IHRyeSB0byBjcmVhdGUgYSBuZXcgUiBOb3RlYm9vayBmaWxlLCB0aGUgUnN0dWRpbyB3aWxsIGFzayBpZiBpdCBjYW4gZG93bmxvYWQgYW5kIGluc3RhbGwgdGhlIHBhY2thZ2VzIGl0IG5lZWRzLiBDbGljayB5ZXMuIFIgaXMgYSBzdHJpcHBlZCBkb3duLCBvcGVuLXNvdXJjZSwgZmFzdCBhbmQgcG93ZXJmdWwgc3RhdGlzdGljYWwgZW5naW5lLiBUaGlzIGFsbCBjb21lcyBhdCB0aGUgY29zdCBvZiBiZWluZyBhIGJpdCBkZW5zZSBhbmQgZGlmZmljdWx0IHRvIHdvcmsgd2l0aCwgYSBwcm9ibGVtIHdlIHR5cGljYWxseSBjaXJjdW12ZW50IGJ5IGxvYWRpbmcgcGFja2FnZXMgYW5kIGxpYnJhcmllcyB0byBtYWtlIG91ciBsaXZlcyBlYXNpZXIuDQoNCk9uY2UgeW91IGNhbiBvcGVuIHRoZSBSIE5vdGVib29rcyBJIGhhdmUgY3JlYXRlZCBmb3IgeW91IGFuZCBjcmVhdGUgbmV3IFIgTm90ZWJvb2tzIG9mIHlvdXIgb3duLCB5b3UgaGF2ZSBldmVyeXRoaW5nIHlvdSBuZWVkIGZvciB0aGUgc3RhdHMgcG9ydGlvbiBvZiB0aGUgY291cnNlIHdvcmtpbmcgaW4gUlN0dWRpby4NCg0KIyMjIFJTdHVkaW86IE1vc2FpYw0KDQpEZXNpZ25lZCBieSBkYXRhIHNjaWVudGlzdHMgZm9yIGludHJvZHVjdG9yeSBzdGF0aXN0aWNzIHN0dWRlbnRzLCB0aGUgKipNb3NhaWMqKiBsaWJyYXJ5IGNvbnRhaW5zIGFsbCB0aGUgbmVlZGVkIGZ1bmN0aW9ucyBmb3IgYmFzaWMgc3RhdHMuIEJldHRlciwgdGhlIGNvZGluZyBoYXMgYmVlbiBzdHJlYW1saW5lZCBzbyB0aGUgd2hvbGUgcHJvY2VzcyBpcyBtdWNoIG1vcmUgaW50dWl0aXZlIHRoYW4gaW4gbmF0aXZlIFIuIFRydXN0IG1lLCBJJ3ZlIGJlZW4gdXNpbmcgUiBzaW5jZSBiZWZvcmUgdGhlcmUgd2FzIGFuIFJTdHVkaW8gb3IgTW9zYWljLCBhbmQgdGhlc2UgYXJlIHZhc3QgaW1wcm92ZW1lbnRzLg0KDQpXZSBvbmx5IGhhdmUgdG8gaW5zdGFsbCBNb3NhaWMgb25jZS4gR28gdG8gKipUb29scyoqIG1lbnUgYXQgdG9wIHdoZXJlIHRoZSBmaXJzdCBvcHRpb24gaXMgJFxmYm94e0luc3RhbGwgUGFja2FnZXMuLi59JC4gV2hlbiB5b3Ugc3RhcnQgdHlwaW5nICJtb3NhaWMiIChsb3dlciBjYXNlIGxldHRlcnMpLCB0aGUgYXV0by1jb21wbGV0ZSB3aWxsIHBvcCB1cCBzbyB5b3Uga25vdyB5b3UncmUgb24gdGhlIHJpZ2h0IHRyYWNrLg0KDQpXaGVuIHlvdSBydW4gdGhpcyBjb2RlIG9uIHlvdXIgbWFjaGluZSB0aGUgZmlyc3QgdGltZSwgUlN0dWRpbyB3aWxsIHNwaXQgb3V0IGEgZmV3IGRvemVuIGxpbmVzIG9mIHJlZCB0ZXh0IGluIHRoZSBjb25zb2xlLCBhbmQgYSBkb3dubG9hZCBwcm9ncmVzcyBiYXIgd2lsbCBrZWVwIHBvcHBpbmcgdXAuIFRoaXMgaXMgbm9ybWFsLCBhbmQgeW91IHdpbGwgbmV2ZXIgbmVlZCB0byBkbyBpdCBhZ2FpbiAodW5sZXNzIHlvdSBpbnN0YWxsIGEgZGlmZmVyZW50IHBhY2thZ2UpLg0KDQpOb3cgdGhhdCB0aGUgTW9zYWljIHBhY2thZ2UgaXMgaW5zdGFsbGVkLCB3ZSBzdGlsbCBuZWVkIHRvIGxvYWQgaXQuIFdlIGhhdmUgdG8gZG8gdGhpcyBpbiBldmVyeSBuZXcgc2Vzc2lvbiB3ZSBjcmVhdGUgaW4gUlN0dWRpbyB3aGljaCBpcyB3aHkgSSBzdWdnZXN0IHF1aXR0aW5nIHdpdGggdGhlICJzYXZlIHNlc3Npb24iIG9wdGlvbiBvbiwgc28gdGhhdCBhbGwgZGF0YSBhbmQgcGFja2FnZXMgeW91IGhhZCBsb2FkZWQgd2lsbCByZWxvYWQgdGhlIG5leHQgdGltZSB5b3Ugb3BlbiBSU3R1ZGlvLg0KDQpgYGB7cn0NCmxpYnJhcnkobW9zYWljKQ0KYGBgDQoNCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+SUkuIEludHJvZHVjdGlvbiB0byBSPC9zcGFuPg0KDQpMZXQncyBkbyBzb21lIHN0YXRzLiBXZSBoYXZlIGV2ZXJ5dGhpbmcgc2V0dXAgcHJvcGVybHksIHNvIGxldCdzIGNyZWF0ZSBzb21lIGRhdGEgYW5kIGdyYXBoaWNzLiBXaHkgbm90IGZsaXAgYSBjb2luPyBNb3NhaWMgaGFzIGEgYnVpbHQgY29pbiBmbGlwcGVyLg0KYGBge3J9DQpyZmxpcCgpDQpgYGANCkludGVyZXN0aW5nLCBidXQgd291bGQgaXQgbm90IGJlIG1vcmUgaW50ZXJlc3RpbmcgdG8gZmxpcCAxMCBjb2lucyBhdCBvbmNlLCBhbmQgdGhlbiBkbyB0aGF0IHNhbWUgdGhpbmcgdGVuIHRob3VzYW5kIHRpbWVzPyBUaGVuIHdlIHdvdWxkIGhhdmUgc29tZSBkYXRhIHRvIHBsb3QsIGFuZCB5b3Ugd2lsbCBoYXZlIGEgZ2xpbXBzZSBpbnRvIHdoYXQgUlN0dWRpbyBjYW4gZG8uDQoNCmBgYHtyfQ0KcmZsaXAoMTApDQpgYGANCldlIGNhbiB1c2UgdGhlIGZ1bmN0aW9uICoqZG8qKiB0byByZXBlYXQgYSBwcm9jZXNzIG1hbnkgdGltZXMuIFRoZSBjb2RlIGJlbG93IHdpbGwgZmxpcHMgMTAgY29pbnMsIHJlY29yZCB0aGUgcmVzdWx0cywgdGhlbiByZXBlYXQgdGhlIDEwIGNvaW4gZmxpcHMgMjAgdG90YWwgdGltZXMuDQoNCmBgYHtyfQ0KZG8oMjApICogcmZsaXAoMTApDQpgYGANCg0KIyMgVGFza3M6IENyZWF0ZSBhIFZhcmlhYmxlDQoNClRoZSBuZXh0IGNvZGUgYmxvY2sgY3JlYXRlcyBhIHZhcmlhYmxlICoqZmxpcHMqKiB0byBzdG9yZSBhbGwgdGhlIGRhdGEgaW4uIE9uY2UgY3JlYXRlZCwgd2UgY2FuIHN0YXJ0IHBsb3R0aW5nIHRoZSBkYXRhIGFuZCBtYWtpbmcgdGFibGVzLg0KDQpgYGB7cn0NCmZsaXBzID0gZG8oMTAwMDApICogcmZsaXAoMTApDQpgYGANCk5vdGljZSB0aGVyZSBpcyBubyBvdXRwdXQuIFIgaGFzIGp1c3QgY29tcHV0ZWQgdGhlIGNvaW4gZmxpcHMgYW5kIHN0b3JlZCB0aGUgcmVzdWx0cyBpbiB0aGUgdmFyaWFibGUgKipmbGlwcyoqLiBJZiB3ZSB3YW50IHRvIHNlZSB3aGF0IGhhcHBlbmVkLCB3ZSBjYW4gcHJpbnQgb3V0IHRoZSB2YXJpYWJsZSAqKmZsaXBzKiogdG8gc2VlIHdoYXQncyBpbiBpdC4NCg0KYGBge3J9DQpmbGlwcw0KYGBgDQojIyAgVGFza3M6IFRhYmxlcyBhbmQgSGlzdG9ncmFtcw0KV2Ugd2FudCB0byB2aXN1YWxpemUgd2hhdCdzIGhhcHBlbmluZyB3aXRoIHRoaXMgZGF0YSwgc28gd2UgbmVlZCBzb21lIGtpbmQgb2Ygc3VtbWFyeSwgZWl0aGVyIGEgdGFibGUsIG9yIGEgZ3JhcGgsIG9yIGJvdGguIFdlIGNhbiBjb3VudCB0aGUgbnVtYmVyIG9mIGhlYWRzIHRoYXQgaGF2ZSBhcHBlYXJlZCBpbiBlYWNoIGdyb3VwIG9mIHRlbiBjb2luIGZsaXBzLiBUaGUgKip0YWxseSoqIGZ1bmN0aW9uIGNvdW50cyBhbGwgcG9zc2libGUgdmFsdWVzIGZyb20gdGhlIGJhdGNoZXMgb2YgMTAgZmxpcHMsIGFuZCBzdW1tYXJpemVzIGhvdyBtYW55IG9mIGVhY2ggb3V0Y29tZSBvY2N1cnJlZCBpbiB0aGUgdGVuIHRob3VzYW5kIHRyaWFscy4NCg0KYGBge3J9DQp0YWxseSh+IGhlYWRzLCBkYXRhID0gZmxpcHMpDQpgYGANCg0KYGBge3J9DQpoaXN0b2dyYW0ofiBoZWFkcywgZGF0YSA9IGZsaXBzKQ0KYGBgDQoNClRoZSBoaXN0b2dyYW0gbG9va3MgYSBiaXQgd29ua3kgYmVjYXVzZSB0aGUgZGVmYXVsdCBiaW4gd2lkdGggaXMgdG9vIGxhcmdlLCBzbyB3ZSBoYXZlIGVtcHR5IGNhdGVnb3JpZXMgb3IgYmlucy4gTGV0J3MgdGVsbCB0aGUgaGlzdG9ncmFtIGZ1bmN0aW9uIHdlIHdhbnQgYmluIHdpZHRocyBvZiAxIGNlbnRlcmVkIGF0IDUsIHNvIGl0IHdpbGwgc3BsaXQgdGhlIGRhdGEgaW50byBpdHMgaW50ZWdlciB2YWx1ZXMgYW5kIGZvcmNlIHRoZSBjZW50ZXIgb2YgdGhlIGhpc3RvZ3JhbSB0byBiZSBhdCA1Lg0KDQpgYGB7cn0NCmhpc3RvZ3JhbSh+IGhlYWRzLCBkYXRhID0gZmxpcHMsIHdpZHRoID0gMSkNCmBgYA0KWW91IHNob3VsZCB0cnkgZGlmZmVyZW50IHdpZHRocyBpbiB0aGUgY29kZSBhYm92ZSwgdG8gaGVscCB5b3UgdW5kZXJzdGFuZCBob3cgaXRzIHdvcmtpbmcuIEF0IGxlYXN0IHRyeSAkXGZib3h7d2lkdGggPSAyfSQuDQoNCkdyZWF0ISBOb3cgeW91J3ZlIGRvbmUgc29tZSBzdGF0aXN0aWNzIHdpdGggUlN0dWRpby4=