560 likes | 692 Views
Ann Arbor ASA ‘Up and Running’ Series R. Prepared by volunteers of the Ann A rbor C hapter of the American S tatistical A ssociation, in cooperation with the Department of Statistics and the Center for Statistical C onsultation and Research of the U niversity of Michigan.
E N D
Ann Arbor ASA ‘Up and Running’ SeriesR Prepared by volunteers of the Ann Arbor Chapter of the American Statistical Association, in cooperation with the Department of Statistics and the Center for Statistical Consultation and Research of the University of Michigan
Content • Introduction • Using R Help • Functions Available in R • Working with Data • Importing/Exporting Data • Graphs + Statistics • Practice Problems • Further Resources Ann Arbor ASA Up and Running Series: R
http://sites.google.com/site/annarborasa/ Presentation Materials R Class Materials Select files: furniture.csv furniture.txt R Workshop_PwrPt.pptx S hort-refcard.pdf Upload files to Desktop Ann Arbor ASA Up and Running Series: R
Introduction - What is R? • R is object-oriented programming • involves the S computer language • R is open source with code available to users • R is a commonly used for statistical analysis • R is a free software package • http://www.r-project.org Ann Arbor ASA Up and Running Series: R
Introduction - More About R • Statistical analysis is done using pre-defined functions in R. • These functions are available in many different packages. • Upon download of the ‘base’ package, you have access to many functions. • More advanced functions will require the of download other packages. Ann Arbor ASA Up and Running Series: R
Introduction – What can you do with R? • Topics in statistics are readily available • Linear modeling, linear mixed modeling, multivariate analysis, clustering, non-parametric methods, classification, among others. • R is well known to produce high quality graphics • Simple plots are easy and with a little more practice, users can produce publishable graphics! Ann Arbor ASA Up and Running Series: R
Introduction - Launch R • Start All Programs Math & Statistics R Ann Arbor ASA Up and Running Series: R
Introduction – Editor Window • File New script • editor window to type script Ann Arbor ASA Up and Running Series: R
Introduction - Data Objects in R • Users create different data objects in R • Data objects refer to variables, arrays of numbers, character strings, functions and other more complicated data manipulations • <- allows you to assign data objects • Type in your editor window: a <- 7 • Submit this command by highlighting it and pressing ctrl+r • Practice creating different data objects and submit them to the workspace Ann Arbor ASA Up and Running Series: R
Introduction - Data Objects in R • Type objects () • This allows you to see that you have created the objectaduring this R session • You can view previously submitted commands by using the up/down arrow • You can remove this object by typing rm(a) • Try removing some objects you created and then type objects() to see if they are listed Ann Arbor ASA Up and Running Series: R
Example • To set up a vector named x use the R command: • x <- c(5,4,3,6) • This is an assignment statement using the functionc() which creates a vector by concatenating its arguments • Perform vector/matrix arithmetic: • v <- 3*x - 5 Ann Arbor ASA Up and Running Series: R
Content • Introduction • Using R Help • Functions Available in R • Working with Data • Importing/Exporting Data • Graphs + Statistics • Practice Problems • Further Resources Ann Arbor ASA Up and Running Series: R
Using R Help • To get help on any specific function: • help(function.name) • ?(function.name) • To see a list of all of the functions that come with the base R package • library(help = “base”) • Two popular R resource websites: • Rseek.org • nabble.com • For help via the Internet submit • help.start() • opens up a web-based help system easy to navigate Ann Arbor ASA Up and Running Series: R
Content • Introduction • Using R Help • Functions Available in R • Working with Data • Importing/Exporting Data • Graphs + Statistics • Practice Problems • Further Resources Ann Arbor ASA Up and Running Series: R
R Reference Card*created by Tom Short • There are thousands of available functions in R, but this Reference Card provides a strong working knowledge • Let’s take a minute to look at the organization of the Reference Card and try out a few of the functions available! Ann Arbor ASA Up and Running Series: R
Generating SequencesReplicating Objects • Sequences: submit the following commands • seq(-5, 5, by=.2) • seq(length=51, from=-5, by=.2) • Both produce a sequence from -5 to 5 with a distance of .2 between objects • Replications: submit the following commands • rep(“x”, times=5) • rep(“x”, each=5) • Both produce x replicated 5 times Ann Arbor ASA Up and Running Series: R
Questions? Ann Arbor ASA Up and Running Series: R
Content • Introduction • Using R Help • Functions Available in R • Working with Data • Importing/Exporting Data • Graphs + Statistics • Practice Problems • Further Resources Ann Arbor ASA Up and Running Series: R
Working with Data • There are many data sets available for use in R • data() to see what’s available • We will work with the trees data set • data(trees) • This data set is now ready to use in R • The following are useful commands: • summary(trees) – summary of variables • dim(trees) – dimension of data set • names(trees) – see variable names • attach(trees) – attaches variable names Ann Arbor ASA Up and Running Series: R
Extracting Data • R has saved the data set trees as a data frame object • Check this by typing - class(trees) • R stores this data in matrix row/column format: data.frame[rows,columns] • trees[c(1:2),2] • first 2 rows and 2nd column • trees[3,c(“Height”, “Girth”)] • reference column names • trees[-c(10:20), “Height”] • skips rows 10-20 for variable Height Ann Arbor ASA Up and Running Series: R
Extracting Data • The subset() command is very useful to extract data in a logical manner, where the 1st argument is data, and the 2nd argument is logical subset requirement • subset(trees, Height>80) • subset where all tree heights >80 • subset(trees, Height<70 & Girth>10) • subset where all tree heights<70 AND tree girth>10 • subset(trees, Height <60 | Girth >11) • subset where all tree heights <60 OR Girth >11 Ann Arbor ASA Up and Running Series: R
Questions? Ann Arbor ASA Up and Running Series: R
Content • Introduction • Using R Help • Functions Available in R • Working with Data • Importing/Exporting Data • Graphs + Statistics • Practice Problems • Further Resources Ann Arbor ASA Up and Running Series: R
Importing Data • The most common (and easiest) file to import is a text file with the read.table() command • R needs to be told where the file is located • set the working directory setwd("C:\\Users\\akazanis\\Desktop") • tells R where all your files are located • OR point to working directory • File Change dir… and choosing the location of the files • OR include the physical location of your file in the read.table() command Ann Arbor ASA Up and Running Series: R
Using the read.table() command read.table("C:\\Users\\akazanis\\Desktop\\furniture.txt",header=TRUE,sep="") • Important to use double slashes \\ • rather than single slash \ • header=TRUE or header=FALSE • Tells R whether you have column names on data Ann Arbor ASA Up and Running Series: R
Using the read.table() command • Another way of specifying the file’s location is to set the working directory first and then read in the file • setwd(“C:\\Users\\akazanis\\Desktop”) • read.table(“furniture.txt”,header=TRUE,sep=“”) • OR point to the location File Change dir… pointing to the file’s location • Then, read in the data file read.table(“furniture.txt”,header=TRUE,sep=“”) Ann Arbor ASA Up and Running Series: R
read.table(), read.csv(), Missing Values • It is also popular to import csv files since excel files are easily converted to csv files • read.csv() and read.table() are very similar although they handle missing values differently • read.csv() automatically assign an ‘NA’ to missing values • read.table() will not load data with missing values, so you must assign NA to missing values before reading it into R Ann Arbor ASA Up and Running Series: R
read.table(), read.csv(), Missing Values • Let’s remove a data entry from both furniture.txt and furniture.csv • From the first row, erase 100 from the Area column • Now read in the data from these two files using read.table() and read.csv() • You should see that you cannot read the data in using the read.table() command unless you input an entry for the missing value Ann Arbor ASA Up and Running Series: R
Other Options for Importing Data • When you download R, you should have automatically obtained the foreignpackage • Submit library(foreign) • many more options for importing data: • read.xport(), read.spss(), read.dta(), read.mtp() • For more information on these options, submit help(read.xxxx) Ann Arbor ASA Up and Running Series: R
Exporting Data • You can export data by using the write.table() command • write.table(trees,“treesDATA.txt”,row.names=FALSE,sep=“,”) • Specifies that we want the trees data set exported • Type in name of file to be exported. • By default R will write the file to the working directory already specified unless you give a location. • row.names=FALSE • tells R that we do not wish to preserve the row names • sep=“,” • data set is comma delimited Ann Arbor ASA Up and Running Series: R
Questions? Ann Arbor ASA Up and Running Series: R
Content • Introduction • Using R Help • Functions Available in R • Working with Data • Importing/Exporting Data • Graphs + Statistics • Practice Problems • Further Resources Ann Arbor ASA Up and Running Series: R
Example - Furniture Data Set • Assign a name to the furniture data set, as we read it in, to do some analysis • furn<-read.table(“furniture.txt”,sep=“”,h=T) • To examine data set • dim(furn) • summary(furn) • names(furn) • attach(furn) • It is important to attach before subsequent steps with the data Ann Arbor ASA Up and Running Series: R
Graphs • R can produce both very simple and very complex graphs • Make a simple scatter plot of the Areaand Costvariables from our furniture data set • plot(Area,Cost,main=“Area vs Cost”,xlab=“Area”,ylab=“Cost”) • Puts Area on the x-axis, Cost on the y-axis and provides a title and labels the axes Ann Arbor ASA Up and Running Series: R
Graphs • Let’s look at the distribution of our variables using some different graphs in R • hist(Area) – histogram of Area • hist(Cost) – histogram of Cost • boxplot(Cost ~ Type) – boxplot of Cost by Type • We can make the boxplot much prettier • boxplot(Cost~Type,main=“Boxplot of Cost by Type”, col=c(“orange”,“green”,“blue”),xlab=“Type”, ylab=“Cost”) Ann Arbor ASA Up and Running Series: R
Graphs • We can also look at a scatter plot matrix of all variables in a data set by using the pairs() function • pairs(furn) • Or we can look at a correlation/covariance matrix of the numeric variables • cor(furn[,c(2:3)]) • cov(furn[,c(2:3)]) Ann Arbor ASA Up and Running Series: R
Graphs + Statistics • Simple linear regression using the furniture data • m1<-lm(Cost ~ Area) • summary(m1) • coef(m1) • fitted.values(m1) • residuals(m1) • Plot the residuals against the fitted values • plot(fitted.values(m1), residuals(m1)) Ann Arbor ASA Up and Running Series: R
Graphs + Statistics • Scatter plot of Area and Cost • plot(Area,Cost,main=“Cost Regression Example”,xlab=“Cost”, ylab=“Area”) • abline(lm(Cost~Area), col=3, lty=1) • lines( lowess(Cost~Area), col=3, lty=2) • Interactively add a legend • legend(locator(1),c(“Linear”,“Lowess”),lty=c(1,2),col=2) • You can point to your graph and place the legend where you wish! Ann Arbor ASA Up and Running Series: R
Graphs + Statistics • Identify different points on the graph • identify(Area, Cost, row.names(furn)) • Makes it easy to identify outliers • Use the locator() command to quantify differences between the regression fit and the loess line • locator(2) • Example - Compare predicted values of Cost when Area is equal to 50 Ann Arbor ASA Up and Running Series: R
Multivariate Analysis • Multivariate regression using both Area and Type as predictors and Cost as the response variable in the model • m2<-lm(Cost ~ Area + Type) • summary(m2) • Summary of regression results, including coefficients Ann Arbor ASA Up and Running Series: R
Multivariate Analysis • Now let’s see if our multivariate model is significantly better than the simple model by using ANOVA • anova(m1, m2) • The ANOVA table compares the two nested regression models by testing the null hypothesis that the Type predictor did not need to be in the model. • Result - Since the p-value<.05, we have evidence to conclude that Type is an important predictor Ann Arbor ASA Up and Running Series: R
Content • Introduction • Using R Help • Functions Available in R • Working with Data • Importing/Exporting Data • Graphs + Statistics • Practice Problems • Further Resources Ann Arbor ASA Up and Running Series: R
Practice Problem #1 • Create a sequence that starts at 0 and goes to 5 with a step of 0.5 • Replicate ‘a b c’ 3 times • Replicate ‘a’ 3 times, ‘b’ 3 times, ‘c’ 3 times in one command Ann Arbor ASA Up and Running Series: R
Practice Problem #2 • Make a histogram of the Girthvariable from the treesdata set. Include a title. • Make a boxplot of the Heightvariable from the treesdata set. Color it blue and label your axes. • Make a scatter plot of Girth and Height. Ann Arbor ASA Up and Running Series: R
Practice Problem #3 • Create a simple linear model with Girth as the predictor and Height as the response. Extract the coefficients. • Now add Volume to the model. How can we tell if this model is preferred to the simpler model? Ann Arbor ASA Up and Running Series: R
Solutions ##Problem 1 seq(0, 5, by=.5) seq(length=51,from=-5,by=.2) rep("a", times=3) rep("b", times=3) rep("c", times=3) Rep("a b c", each=3) ##Problem 2 data(trees) attach(trees) names(trees) dim(trees) hist(Girth,main="Histogram of Trees Girth") ##Problem 2 (cont) boxplot(Height,main="Boxplot of Height of Trees",col=c("blue"), xlab="Trees",ylab="Height") plot(Girth,Height,main="Girth vs Height of Trees",xlab="Height",ylab="Girth") ##Problem 3 m1<-lm(Height~Girth) summary(m1) m2<-lm(Height~Girth+Volume) summary(m2) anova(m1,m2) Ann Arbor ASA Up and Running Series: R
##Problem 1 rep("a", times=3)seq(0, 5, by=.5) rep("b", times=3)seq(length=51,from=-5,by=.2) rep("c", times=3) rep("a b c", each=3) ##Problem 2 data(trees) attach(trees) names(trees) hist(Girth,main="Histogram of Trees Girth") boxplot(Height,main="Boxplot of Height of Trees", col=c("blue"), xlab="Trees",ylab="Height") plot(Girth,Height,main="Girth vs Height of Trees", xlab="Height", ylab="Girth") ##Problem 3 m1<-lm(Height~Girth) summary(m1) m2<-lm(Height~Girth+Volume) summary(m2) anova(m1,m2) Ann Arbor ASA Up and Running Series: R
Questions? Ann Arbor ASA Up and Running Series: R
Content • Introduction • Using R Help • Functions Available in R • Working with Data • Importing/Exporting Data • Graphs + Statistics • Practice Problems • Further Resources Ann Arbor ASA Up and Running Series: R
How to Obtain R • R Project Web Page - http://www.r-project.org • Left hand side of the screen, • Click on the CRAN link: • Download, Packages CRAN (Comprehensive R Archive Network) • Choose one of the U.S. mirrors (http://cran.stat.ucla.edu/is recommended) Ann Arbor ASA Up and Running Series: R