0% found this document useful (0 votes)
20 views20 pages

Introduction to R and RStudio Basics

Uploaded by

Dino Omondi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views20 pages

Introduction to R and RStudio Basics

Uploaded by

Dino Omondi
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

Introduction to R and RStudio

Jeff Witmer

9 March 2016
R is
A software package for statistical computing and graphics
A collection of 6,700 packages (as of June 2015, so more now)
A (not ideal) programming language

A work environment

Widely used

Powerful

Free
Some history
S was developed at Bell Labs, starting in the 1970s

R was created in the 1990s by Ross Ihaka and Robert Gentleman


R was based on S, with code written in C

S largely was used to make good graphs – not an easy thing


in 1975. R, like S, is quite good for graphing.

For lots of examples, see [Link]


or [Link]

See [Link]

(Or for more detail, see [Link]


A few simple graphs using the ggplot2 package
An example of graphing using the GGally package in R
Who uses R?
RStudio is
An Integrated Development Environment (IDE) for R
A gift, from J.J. Allaire (Macalester College, ‘91) to the world

An easy (easier) way to use R

Available as a desktop product or, as used at OC, run


off of a file server.
Free – unless you want the newest version, with more
bells and whistles, and you are not eligible for the
educational discount (= free)

R supports rpubs – see [Link]


RStudio screen shot
R is object-oriented
e.g., MyModel <- lm(wt ~ ht, data = mydata)
then hist(MyModel$residuals)

Note: lm(wt ~ ht*age + log(bp), data = mydata) regresses


wt on ht, age, the ht-by-age interaction, and log(bp).
There is no need to create the interaction or the lob(bp)
variable outside of the lm() command.

Comparing nested models:


mod1 <- lm(wt ~ ht*age + log(bp), data = mydata)

mod2 <- lm(wt ~ ht + log(bp), data = mydata)

anova(mod2, mod1) gives a nested F-test


R as a programming language

If you want R to be (relatively) fast, take advantage of


vector operations; e.g., use the replicate command
(rather than a loop) or the tapply function.
E.g., replicate(k=25,addingLines(n=10)) calls the
addingLines function (something I wrote) 25 times.

> with(Dabbs, tapply(testosterone, occupation, mean))


Actor MD Minister Prof
12.7 11.6 8.4 10.6
If you want to know how to do something in R

See the “Minimal [Link]” handout

Go to the [Link] page ([Link]

Google “How do I do xxx in R?”

A standing joke among R users is that the answer


is always “There are many ways to do that in R.”

See [Link]

See [Link]
Speaking of many ways to do something in R…

(1) mean(mydata$ht)

(2) with(mydata, mean(ht))

(3) mean(ht, data=mydata)

However

(1) plot(mydata$ht,mydata$wt) works

(2) with(mydata, plot(ht,wt)) works

(3) plot(ht, wt, data=mydata) does not work

(3a) plot(wt~ht, data=mydata) works


The mosaic package (Kaplan, Pruim, Horton) was created
to make R easy to use for intro stats.

mosaic package syntax:


goal(y ~ x|z, data=mydata)

E.g.: tally(~sex, data=HELPrct)

E.g.: test(age ~ sex, data=HELPrct)

E.g.: [Link](age ~ sex, data=HELPrct)$[Link]

E.g.: favstats(age ~ substance|sex, data=HELPrct)

See [Link]
The mosaic package mPlot() command makes graphing easy.
mPlot(SaratogaHouses)
The openintro package edaPlot() command makes exploring
data graphically easy to do. edaPlot(SaratogaHouses)
The mosaic tidyr and dplyr packages handle SQL-ytpe
work: merging files, extracting subsets, etc.
data(NCHS) #loads in the NCHS data frame

newNCHS <- NCHS %>% sample_n(size=5000)


%>% filter(age > 18) #takes a sample of size 5000,
extracts only the rows for which age > 18, and
saves the result in newNCHS

See [Link]
I use R, and the do() command in the mosaic package, for
simulations.
data(FirstYearGPA) #loads in the data frame
FY <- FirstYearGPA) #rename the data frame

lm(GPA ~ SATM, data=FY) #gives 0.0012 as slope


lm(GPA ~ SATM, data=FY)$coeff[2] #just look at the slope
do(3)*lm(GPA ~ shuffle(SATM), data=FY)$coeff[2] #break link b/w GPA and
SATM
[Link] <- do(1000)*lm(GPA ~ shuffle(SATM), data=FY)$coeff[2] #1000
random slopes
histogram([Link]$SATM, v=0.0012) #look at the 1000 slopes
with([Link], tally(abs(SATM.)>=0.0012)) #How many are far from zero?
with([Link], tally(abs(SATM.)>=0.0012, format='prop')) #What proportion are
far from zero?
Using [Link] to show Pr(win) as SaveDiff varies,
for a fixed set of values for sixother predictors.
plot(jitter(Win,amount=.05)~SaveDiff,data=LaXdata)
[Link](modelDiff,[Link]="SaveDiff",DrawDiff=-11, ShotDiff=6,
TODiff=-3, ClearPctDiff=0.0952, ShotGoalDiff=1, GroundDiff=5,
add=TRUE,[Link]=list(col='blue')) #OCWLaX game vs BW

You might also like