From 7674b1fd3870cd5da782eb460dbcbc792290eaef Mon Sep 17 00:00:00 2001 From: jaredsmurray Date: Tue, 5 Sep 2017 15:58:09 -0500 Subject: [PATCH 01/13] update heights for new interface --- heights/files/import_options_new.png | Bin 0 -> 68282 bytes heights/heights.html | 259 +++++++++++++++++++++++++++ heights/heights.md | 6 +- 3 files changed, 262 insertions(+), 3 deletions(-) create mode 100644 heights/files/import_options_new.png create mode 100644 heights/heights.html diff --git a/heights/files/import_options_new.png b/heights/files/import_options_new.png new file mode 100644 index 0000000000000000000000000000000000000000..2a645279d5be5ee47860afcb8f6a1c91353d5995 GIT binary patch literal 68282 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%0D%~|Kd0ye_? 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 literal 0 HcmV?d00001 diff --git a/heights/heights.html b/heights/heights.html new file mode 100644 index 0000000..a35c35f --- /dev/null +++ b/heights/heights.html @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/heights/heights.md b/heights/heights.md index 4a34c7d..2b9ddbf 100644 --- a/heights/heights.md +++ b/heights/heights.md @@ -57,17 +57,17 @@ Read in the heights.csv data set by clicking the Import Dataset button in RStudi ![](files/import_dataset.png) -When you click Import Dataset, choose the "From Text File..." option, and in the window that pops up, surf to wherever you've downloaded the heights.csv file. +When you click Import Dataset, choose the "From CSV File..." option, and in the window that pops up, surf to wherever you've downloaded the heights.csv file. ![](files/import_file_window.png) Select the heights.csv file and open it from this window. Now you should see a new window pop up, like this: -![](files/import_options.png) +![](files/import_options_new.png) Three common things that you'll want to double-check in this window: - What do you want the data set to be called within the R environment? By default, RStudio will name the data set after the file, so in this case the imported data frame will be stored as ``heights'' unless you provide an alternative in the "Name" field. -- Does the data file have a header row (i.e. is the first row the names of the variables)? If so, make sure the "Yes" button next to "Heading" is selection. In this case, we do have a header row providing the variable names (SHGT, MHGT, and FHGT). +- Does the data file have a header row (i.e. is the first row the names of the variables)? If so, make sure the "First Row as Names" option is checked. In this case, we do have a header row providing the variable names (SHGT, MHGT, and FHGT). - What separates the data fields? Comma-separated files (like this one) are common; so are tab-separated files. Usually RStudio does a good job at auto-detecting these features of the file. But sometimes it can get tripped up, so it's good to verify what the program thinks it is seeing in this window. From 0d842189e818a5797f31dea47f7e0f8b04c949fb Mon Sep 17 00:00:00 2001 From: jaredsmurray Date: Tue, 5 Sep 2017 16:02:55 -0500 Subject: [PATCH 02/13] remove heights.html --- heights/heights.html | 259 ------------------------------------------- 1 file changed, 259 deletions(-) delete mode 100644 heights/heights.html diff --git a/heights/heights.html b/heights/heights.html deleted file mode 100644 index a35c35f..0000000 --- a/heights/heights.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

This is a “hello world” walk-through intended as a gentle introduction to R.

-
-

Using R as a calculator

-

Let’s start with the simplest thing of all that you can do with R: use it as a scientific calculator.

-

Open up RStudio; on the left-hand side is the Console window with a little caret mark (>), where you can type in commands directly and see the results of computations (circled in red below).

-
- - -
-

Try typing some basic mathematical expressions directly into the console and verify that the output looks right. To execute any command, like 2+2, just type it into the console and hit Enter.

-
2 + 2
-3*7
-20/4
-2^3
-sqrt(16)
-log10(100)
-

R obeys the usual order of operations for mathematical expressions. Therefore use parentheses appropriately to convey your meaning:

-
4 + 2 * 3
-[1] 10
-
-(4 + 2) * 3
-[1] 18
-

You can also use R as a graphing calculator. Try typing the following command:

-
curve(sqrt(x), from=0, to=9)
-

You should get a plot of the square-root function from x=0 to x=9 that pops up on your screen.

-
-
-

Defining variables

-

Another basic operation in R is to store the results of computations in new variables, whose names we get to choose. Try typing the following command:

-
foo = 10
-

This defines a variable called foo, which stores the number 10. When you execute this command, you won’t see any output in the console. But the variable foo is now available to be used in subsequent computations as if it were a number:

-
foo + 3
-[1] 13
-

This may not look all that impressive. But as you’ll soon learn, the ability to store the results of intermediate computations for future use is a source of great power as we start to do more sophisticated things with R.

-
-
-

A first look at data

-

For this part, you’ll need to download the following data file to your hard drive:
-* heights.csv

-

Let’s look at some data on the data on students’ heights versus their parents’ heights; this was from a survey taken in the first class that I ever taught at the University of Texas.

-

Read in the heights.csv data set by clicking the Import Dataset button in RStudio. This is under the Environment tab:

-
- - -
-

When you click Import Dataset, choose the “From CSV File…” option, and in the window that pops up, surf to wherever you’ve downloaded the heights.csv file.

-
- - -
-

Select the heights.csv file and open it from this window. Now you should see a new window pop up, like this:

-
- - -
-

Three common things that you’ll want to double-check in this window:
-- What do you want the data set to be called within the R environment? By default, RStudio will name the data set after the file, so in this case the imported data frame will be stored as ``heights’’ unless you provide an alternative in the “Name” field.
-- Does the data file have a header row (i.e. is the first row the names of the variables)? If so, make sure the “First Row as Names” option is checked. In this case, we do have a header row providing the variable names (SHGT, MHGT, and FHGT). - What separates the data fields? Comma-separated files (like this one) are common; so are tab-separated files.

-

Usually RStudio does a good job at auto-detecting these features of the file. But sometimes it can get tripped up, so it’s good to verify what the program thinks it is seeing in this window.

-

Once you’ve double-checked these details, click Import. You now have a data set called “heights”, which has three variables:
-* SHGT: student height in inches
-* MHGT: mother’s height in inches
-* FHGT: father’s height in inches

-

R has many functions for computing basic summary statistics. Meet three of the most basic by copying the following code to your console.

-
# Get a summary of each variable in the data set
-summary(heights)
-
-# Compute the mean and standard deviation of the SHGT variable
-mean(heights$SHGT)
-sd(heights$SHGT)
-

You should see the following output:

-
> summary(heights)
-      SHGT            MHGT            FHGT      
- Min.   :60.00   Min.   :54.00   Min.   :63.00  
- 1st Qu.:67.00   1st Qu.:62.00   1st Qu.:68.00  
- Median :70.00   Median :64.00   Median :70.00  
- Mean   :69.56   Mean   :64.05   Mean   :69.73  
- 3rd Qu.:72.00   3rd Qu.:65.50   3rd Qu.:72.00  
- Max.   :78.00   Max.   :71.00   Max.   :78.00  
-> 
-> # Compute the mean and standard deviation of the SHGT variable
-> mean(heights$SHGT)
-[1] 69.56311
-> sd(heights$SHGT)
-[1] 3.881631
-

Notice two things:
-1) Anything followed by a pound sign (#) is a comment and is ignored by R.
-2) When we say “heights$SHGT” we are asking R to access the SHGT variable inside the heights data frame. This is the basic way we access variables in R.

-

We can store information about the data set in variables whose names we get to choose. Try these commands:

-
mu = mean(heights$SHGT)
-sigma = sd(heights$SHGT)
-

In computer-science parlance, this is called “declaring variables.” We’re telling R to store the mean of the student height variable in a new variable called “mu” and to store the standard deviation in a new variable called “sigma”. As above, when you execute these commands you won’t see any output in the console. But now these variables are available to be used in subsequent computations. We can just refer to them by name:

-
> mu - 2*sigma
-[1] 61.79985
-> mu + 2*sigma
-[1] 77.32637
-

An important thing to remember is that R is case sensitive. If you use the wrong case, you’ll get an error:

-
> Mu + 2*sigma
-Error: object 'Mu' not found
-> mu + 2*Sigma
-Error: object 'Sigma' not found
-

All R commands have extensive documentation. You can get help about anything using the question mark:

-
?mean
-?sd
-?median
-?range
-
- - - - -
- - - - - - - - From 06bd511a3fef7198b7fac44d437008fb9e5ef6cd Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Sat, 28 Dec 2019 16:52:45 -0500 Subject: [PATCH 03/13] Update citytemps.md --- citytemps/citytemps.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/citytemps/citytemps.md b/citytemps/citytemps.md index 0eefeee..b0e10f0 100644 --- a/citytemps/citytemps.md +++ b/citytemps/citytemps.md @@ -3,6 +3,28 @@ dispersion of a single quantitative variable. You will also learn how to change some of the default plot settings in R, like changing the axis labels or the number of breaks in a histogram. +###Learning Objectives + +**Core Skills** +1. Reading a histogram +1. Measuring dispersion (spread) of a single variable via standard deviation and quantiles +2. Standardization via Z-scores as a measure of ``surprise'' + +**R Skills** +In this walkthrough you will practice: +1. Loading packages +2. Drawing histograms +2. Computing cumulative probabilities and quantiles for a single variable +3. Changing arguments to R functions + +**Reflection Problems** +1. Sketch the histogram of a variable for which its standard deviation is a good measure of spread. +2. Sketch the histogram of a variable for which its standard deviation is a poor measure of spread. +3. True or false: When an a data point from a sample is below the sample median, +its Z-score is always negative. + +---------- + Data files: \* [citytemps.csv](http://jgscott.github.io/teaching/data/citytemps.csv): @@ -184,7 +206,7 @@ San Diego is actually more extreme than a 10-degree day in Rapid City! As this example suggests, z-scores are useful for comparing numbers that come from different distributions, with different statistical properties. It tells you how extreme a number is, relative to other -numbers from that some distribution. +numbers from that same distribution. ### Fancier histograms From 52567c1aafe0f1e3fa430b378741cd7685698978 Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Sat, 28 Dec 2019 17:21:42 -0500 Subject: [PATCH 04/13] Update citytemps.md --- citytemps/citytemps.md | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/citytemps/citytemps.md b/citytemps/citytemps.md index b0e10f0..9d28765 100644 --- a/citytemps/citytemps.md +++ b/citytemps/citytemps.md @@ -6,11 +6,14 @@ labels or the number of breaks in a histogram. ###Learning Objectives **Core Skills** + 1. Reading a histogram 1. Measuring dispersion (spread) of a single variable via standard deviation and quantiles +2. Computing *coverage* (a.k.a. *prediction* intervals) 2. Standardization via Z-scores as a measure of ``surprise'' **R Skills** + In this walkthrough you will practice: 1. Loading packages 2. Drawing histograms @@ -18,10 +21,19 @@ In this walkthrough you will practice: 3. Changing arguments to R functions **Reflection Problems** + 1. Sketch the histogram of a variable for which its standard deviation is a good measure of spread. 2. Sketch the histogram of a variable for which its standard deviation is a poor measure of spread. -3. True or false: When an a data point from a sample is below the sample median, -its Z-score is always negative. +4. In the section on standardization, when discussing coverage/prediction intervals we wrote +"If we were to repeatedly sample single observations +from this dataset completely at random, about 50% of the time they would fall into this interval +by construction. This usually isn't so useful by itself, but if we think about trying to predict the +temperature on some random day in the future, we might expect the temperature on that future +day to lie in the same interval with probability 0.50." Give one reason why we might *not* expect that to be the case. +5. Visit www.zillow.com and pull up any house for sale in Austin. Find Zillow's predicted sale price for that house +(the "Zestimate") and its range. These are coverage/prediction intervals, although Zillow is a little coy about the +probability attached to them. Let's assume they are 90% intervals. Would a 90% coverage interval for the sale price of +a randomly selected Austin house be wider or narrower than Zillow's interval for your house? Why? ---------- @@ -121,11 +133,17 @@ distribution: the standard deviation. ## [1] 5.698457 -Another measure of dispersion is the coverage interval: that is, an +Another measure of dispersion is the *coverage* or *prediction* interval: that is, an interval covering a specified fraction of the observations. For example, to get a central 50% coverage interval, we'd need the 25th and 75 percentiles of the distribution. By definition, 50% of the observations -are between these two numbers. You can get these from the `qdata` +are between these two numbers. If we were to repeatedly sample single observations +from this dataset completely at random, about 50% of the time they would fall into this interval +by construction. This usually isn't so useful by itself, but if we think about trying to predict the +temperature on some random day in the future, we might expect the temperature on that future +day to lie in the same interval with probability 0.50. + +You can get these from the `qdata` function. qdata(citytemps$Temp.SanDiego) From 0fafe35435b66c87980298e77fa3a3a881311395 Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Sat, 28 Dec 2019 17:22:09 -0500 Subject: [PATCH 05/13] Update citytemps.md --- citytemps/citytemps.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/citytemps/citytemps.md b/citytemps/citytemps.md index 9d28765..7ddbe9b 100644 --- a/citytemps/citytemps.md +++ b/citytemps/citytemps.md @@ -3,7 +3,7 @@ dispersion of a single quantitative variable. You will also learn how to change some of the default plot settings in R, like changing the axis labels or the number of breaks in a histogram. -###Learning Objectives +### Learning Objectives **Core Skills** From 881f834ed98cf76be6ecf8fc5204887c2ac5477a Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Sat, 28 Dec 2019 17:28:14 -0500 Subject: [PATCH 06/13] Update citytemps.md --- citytemps/citytemps.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/citytemps/citytemps.md b/citytemps/citytemps.md index 7ddbe9b..156ff73 100644 --- a/citytemps/citytemps.md +++ b/citytemps/citytemps.md @@ -137,11 +137,13 @@ Another measure of dispersion is the *coverage* or *prediction* interval: that i interval covering a specified fraction of the observations. For example, to get a central 50% coverage interval, we'd need the 25th and 75 percentiles of the distribution. By definition, 50% of the observations -are between these two numbers. If we were to repeatedly sample single observations +are between these two numbers. So if we were to repeatedly sample single observations from this dataset completely at random, about 50% of the time they would fall into this interval by construction. This usually isn't so useful by itself, but if we think about trying to predict the temperature on some random day in the future, we might expect the temperature on that future -day to lie in the same interval with probability 0.50. +day to lie in the same interval with probability 0.50. That's why these kinds of intervals are +most commonly called *prediction* rather than *coverage* intervals, since they're trying +to bracket the value of a future data point. You can get these from the `qdata` function. From 886bdbe53a25c6578f150b8903bc961a8068a78e Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Sat, 28 Dec 2019 17:43:04 -0500 Subject: [PATCH 07/13] Update citytemps.md --- citytemps/citytemps.md | 20 +++----------------- 1 file changed, 3 insertions(+), 17 deletions(-) diff --git a/citytemps/citytemps.md b/citytemps/citytemps.md index 156ff73..52d1827 100644 --- a/citytemps/citytemps.md +++ b/citytemps/citytemps.md @@ -1,25 +1,11 @@ + +### Learning Objectives + In this walk-through, you'll learn how to measure and visualize dispersion of a single quantitative variable. You will also learn how to change some of the default plot settings in R, like changing the axis labels or the number of breaks in a histogram. -### Learning Objectives - -**Core Skills** - -1. Reading a histogram -1. Measuring dispersion (spread) of a single variable via standard deviation and quantiles -2. Computing *coverage* (a.k.a. *prediction* intervals) -2. Standardization via Z-scores as a measure of ``surprise'' - -**R Skills** - -In this walkthrough you will practice: -1. Loading packages -2. Drawing histograms -2. Computing cumulative probabilities and quantiles for a single variable -3. Changing arguments to R functions - **Reflection Problems** 1. Sketch the histogram of a variable for which its standard deviation is a good measure of spread. From 5eab675dffa18d8e1382fde88c65c4bd637267be Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Sat, 28 Dec 2019 18:03:44 -0500 Subject: [PATCH 08/13] Update sat.md --- sat/sat.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sat/sat.md b/sat/sat.md index 10a7eb9..21bff6d 100644 --- a/sat/sat.md +++ b/sat/sat.md @@ -5,6 +5,7 @@ layout: page Test scores and GPA for UT graduates ------------------------------------ +### Learning Objectives In this walk-through, you'll learn how to summarize and visualize the following kinds of relationships: - between a numerical variable and a categorical variable, via @@ -16,6 +17,11 @@ coefficients. You will also learn how to change more of the default plot settings in R plots. +**Reflection Problems** +1. Below, you computed the standard deviation of QSAT by college, and examined the spread of the college average QSAT scores themselves (the "between" and "within" group variation in QSAT scores, respectively). Without computing it directly, do you expect the standard deviation of QSAT scores *across all colleges* (i.e., the standard deviation of QSAT across all UT undegrads, ignoring college) to be larger, smaller, or about the same as the standard deviations computed within colleges? Why? (Hint: Given the results below, is knowing a student's college informative about their GPA?) + +------------------------------------ + You'll need this data file: \* [ut2000.csv](http://jgscott.github.io/teaching/data/ut2000.csv): data on SAT scores and graduating GPA for every student who entered the From 904c63489e720d78419caa0adda1fb6bc24c6408 Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Sun, 2 Feb 2020 23:40:59 -0600 Subject: [PATCH 09/13] Update sat.md --- sat/sat.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/sat/sat.md b/sat/sat.md index 21bff6d..475f644 100644 --- a/sat/sat.md +++ b/sat/sat.md @@ -17,9 +17,6 @@ coefficients. You will also learn how to change more of the default plot settings in R plots. -**Reflection Problems** -1. Below, you computed the standard deviation of QSAT by college, and examined the spread of the college average QSAT scores themselves (the "between" and "within" group variation in QSAT scores, respectively). Without computing it directly, do you expect the standard deviation of QSAT scores *across all colleges* (i.e., the standard deviation of QSAT across all UT undegrads, ignoring college) to be larger, smaller, or about the same as the standard deviations computed within colleges? Why? (Hint: Given the results below, is knowing a student's college informative about their GPA?) - ------------------------------------ You'll need this data file: From 23c44844e0d31bf250c540bdcf73b73875ffb2d1 Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Sun, 2 Feb 2020 23:42:32 -0600 Subject: [PATCH 10/13] Update citytemps.md --- citytemps/citytemps.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/citytemps/citytemps.md b/citytemps/citytemps.md index 52d1827..ae9e23e 100644 --- a/citytemps/citytemps.md +++ b/citytemps/citytemps.md @@ -5,22 +5,6 @@ In this walk-through, you'll learn how to measure and visualize dispersion of a single quantitative variable. You will also learn how to change some of the default plot settings in R, like changing the axis labels or the number of breaks in a histogram. - -**Reflection Problems** - -1. Sketch the histogram of a variable for which its standard deviation is a good measure of spread. -2. Sketch the histogram of a variable for which its standard deviation is a poor measure of spread. -4. In the section on standardization, when discussing coverage/prediction intervals we wrote -"If we were to repeatedly sample single observations -from this dataset completely at random, about 50% of the time they would fall into this interval -by construction. This usually isn't so useful by itself, but if we think about trying to predict the -temperature on some random day in the future, we might expect the temperature on that future -day to lie in the same interval with probability 0.50." Give one reason why we might *not* expect that to be the case. -5. Visit www.zillow.com and pull up any house for sale in Austin. Find Zillow's predicted sale price for that house -(the "Zestimate") and its range. These are coverage/prediction intervals, although Zillow is a little coy about the -probability attached to them. Let's assume they are 90% intervals. Would a 90% coverage interval for the sale price of -a randomly selected Austin house be wider or narrower than Zillow's interval for your house? Why? - ---------- Data files: From 869354d954b618e677e2e75ae818ec8ff2d3ebb7 Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Sun, 28 Feb 2021 11:08:19 -0600 Subject: [PATCH 11/13] Update gonefishing.md --- gonefishing/gonefishing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gonefishing/gonefishing.md b/gonefishing/gonefishing.md index cd710c2..3b40879 100644 --- a/gonefishing/gonefishing.md +++ b/gonefishing/gonefishing.md @@ -8,7 +8,7 @@ Sampling distributions In this walk-through, you'll learn about sampling distributions. Data files: -\* [gonefishing.csv](gonefishing.csv): fictional data on fictional fish +\* [gonefishing.csv](https://raw.githubusercontent.com/jaredsmurray/learnR/master/gonefishing/gonefishing.csv): fictional data on fictional fish in a fictional lake. As usual, load the mosaic library. From b492de63bb8a8ce9930a09ea935c2baf9ae7b49c Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Mon, 22 Mar 2021 10:40:37 -0500 Subject: [PATCH 12/13] Update titanic_permtest.md --- titanic/titanic_permtest.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/titanic/titanic_permtest.md b/titanic/titanic_permtest.md index 1a4706e..d933ec6 100644 --- a/titanic/titanic_permtest.md +++ b/titanic/titanic_permtest.md @@ -28,8 +28,8 @@ they survived, along with their age, sex, and cabin class. ### Relative risk in 2x2 tables -One of the very first contingency tables we made looked at survival -status stratified by sex: +We can use the `xtabs` (short for crosstabulations) and `prop.table` (to compute proportions/frequencies from a +table of counts) commands to compute the survival probability for men and women: t1 = xtabs(~sex + survived, data=TitanicSurvival) prop.table(t1, margin=1) @@ -38,8 +38,12 @@ status stratified by sex: ## sex no yes ## female 0.2725322 0.7274678 ## male 0.8090154 0.1909846 + +Without the `margin=1` command, `prop.table` would compute a table +of joint proababilities. Adding that command computes conditional probabilities +of survival for men and women. -This seems to suggest a strong association between survival status and +The data seem to suggest a strong association between survival status and sex. A natural *test statistic* to quantify this association between the rows and columns of this table is the [relative risk](http://en.wikipedia.org/wiki/Relative_risk) of dying: that is, the @@ -242,6 +246,6 @@ Again, it is zero, up to Monte Carlo accuracy. There are advantages and disadvantages to chi-square as a test statistic. The relative risk is certainly a lot easier to understand and interpret, especially for non-experts. On the other hand, relative risk -only makes sense 2x2 tables, while the chi-squared statistic generalizes +only makes sense in 2x2 tables, while the chi-squared statistic generalizes quite readily to tables with more than two rows or more than two columns. From dad01e1f51e06e1ce909849819f49ca9f4f80b68 Mon Sep 17 00:00:00 2001 From: jaredsmurray <30992825+jaredsmurray@users.noreply.github.com> Date: Mon, 22 Mar 2021 13:35:02 -0500 Subject: [PATCH 13/13] Update titanic_permtest.md --- titanic/titanic_permtest.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/titanic/titanic_permtest.md b/titanic/titanic_permtest.md index d933ec6..61f0219 100644 --- a/titanic/titanic_permtest.md +++ b/titanic/titanic_permtest.md @@ -5,7 +5,7 @@ permutation tests in the context of a 2x2 contingency table. Data files: \* -[TitanicSurvival.csv](http://jgscott.github.io/teaching/data/TitanicSurvival.csv) +[TitanicSurvival.csv](https://github.com/jgscott/ECO394D/raw/master/data/TitanicSurvival.csv) (right click the link and use "Save As") First download the TitanicSurvival.csv file and read it in. You can use RStudio's Import Dataset button, or the read.csv command:
+ + + + + + + + + + + + + + +

This is a “hello world” walk-through intended as a gentle introduction to R.

+
+

Using R as a calculator

+

Let’s start with the simplest thing of all that you can do with R: use it as a scientific calculator.

+

Open up RStudio; on the left-hand side is the Console window with a little caret mark (>), where you can type in commands directly and see the results of computations (circled in red below).

+
+ + +
+

Try typing some basic mathematical expressions directly into the console and verify that the output looks right. To execute any command, like 2+2, just type it into the console and hit Enter.

+
2 + 2
+3*7
+20/4
+2^3
+sqrt(16)
+log10(100)
+

R obeys the usual order of operations for mathematical expressions. Therefore use parentheses appropriately to convey your meaning:

+
4 + 2 * 3
+[1] 10
+
+(4 + 2) * 3
+[1] 18
+

You can also use R as a graphing calculator. Try typing the following command:

+
curve(sqrt(x), from=0, to=9)
+

You should get a plot of the square-root function from x=0 to x=9 that pops up on your screen.

+
+
+

Defining variables

+

Another basic operation in R is to store the results of computations in new variables, whose names we get to choose. Try typing the following command:

+
foo = 10
+

This defines a variable called foo, which stores the number 10. When you execute this command, you won’t see any output in the console. But the variable foo is now available to be used in subsequent computations as if it were a number:

+
foo + 3
+[1] 13
+

This may not look all that impressive. But as you’ll soon learn, the ability to store the results of intermediate computations for future use is a source of great power as we start to do more sophisticated things with R.

+
+
+

A first look at data

+

For this part, you’ll need to download the following data file to your hard drive:
+*
heights.csv

+

Let’s look at some data on the data on students’ heights versus their parents’ heights; this was from a survey taken in the first class that I ever taught at the University of Texas.

+

Read in the heights.csv data set by clicking the Import Dataset button in RStudio. This is under the Environment tab:

+
+ + +
+

When you click Import Dataset, choose the “From CSV File…” option, and in the window that pops up, surf to wherever you’ve downloaded the heights.csv file.

+
+ + +
+

Select the heights.csv file and open it from this window. Now you should see a new window pop up, like this:

+
+ + +
+

Three common things that you’ll want to double-check in this window:
+- What do you want the data set to be called within the R environment? By default, RStudio will name the data set after the file, so in this case the imported data frame will be stored as ``heights’’ unless you provide an alternative in the “Name” field.
+- Does the data file have a header row (i.e. is the first row the names of the variables)? If so, make sure the “First Row as Names” option is checked. In this case, we do have a header row providing the variable names (SHGT, MHGT, and FHGT). - What separates the data fields? Comma-separated files (like this one) are common; so are tab-separated files.

+

Usually RStudio does a good job at auto-detecting these features of the file. But sometimes it can get tripped up, so it’s good to verify what the program thinks it is seeing in this window.

+

Once you’ve double-checked these details, click Import. You now have a data set called “heights”, which has three variables:
+* SHGT: student height in inches
+* MHGT: mother’s height in inches
+* FHGT: father’s height in inches

+

R has many functions for computing basic summary statistics. Meet three of the most basic by copying the following code to your console.

+
# Get a summary of each variable in the data set
+summary(heights)
+
+# Compute the mean and standard deviation of the SHGT variable
+mean(heights$SHGT)
+sd(heights$SHGT)
+

You should see the following output:

+
> summary(heights)
+      SHGT            MHGT            FHGT      
+ Min.   :60.00   Min.   :54.00   Min.   :63.00  
+ 1st Qu.:67.00   1st Qu.:62.00   1st Qu.:68.00  
+ Median :70.00   Median :64.00   Median :70.00  
+ Mean   :69.56   Mean   :64.05   Mean   :69.73  
+ 3rd Qu.:72.00   3rd Qu.:65.50   3rd Qu.:72.00  
+ Max.   :78.00   Max.   :71.00   Max.   :78.00  
+> 
+> # Compute the mean and standard deviation of the SHGT variable
+> mean(heights$SHGT)
+[1] 69.56311
+> sd(heights$SHGT)
+[1] 3.881631
+

Notice two things:
+1) Anything followed by a pound sign (#) is a comment and is ignored by R.
+2) When we say “heights$SHGT” we are asking R to access the SHGT variable inside the heights data frame. This is the basic way we access variables in R.

+

We can store information about the data set in variables whose names we get to choose. Try these commands:

+
mu = mean(heights$SHGT)
+sigma = sd(heights$SHGT)
+

In computer-science parlance, this is called “declaring variables.” We’re telling R to store the mean of the student height variable in a new variable called “mu” and to store the standard deviation in a new variable called “sigma”. As above, when you execute these commands you won’t see any output in the console. But now these variables are available to be used in subsequent computations. We can just refer to them by name:

+
> mu - 2*sigma
+[1] 61.79985
+> mu + 2*sigma
+[1] 77.32637
+

An important thing to remember is that R is case sensitive. If you use the wrong case, you’ll get an error:

+
> Mu + 2*sigma
+Error: object 'Mu' not found
+> mu + 2*Sigma
+Error: object 'Sigma' not found
+

All R commands have extensive documentation. You can get help about anything using the question mark:

+
?mean
+?sd
+?median
+?range
+
+ + + + +