session8 deanfollmann,petergilbert,betzhalloran ... · surrogate evaluation in r session8...
TRANSCRIPT
![Page 1: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/1.jpg)
Surrogate Evaluation in RSession 8
Dean Follmann, Peter Gilbert, Betz Halloran, Erin Gabriel,Michael Sachs
July 19, 2016
![Page 2: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/2.jpg)
About R
I R is a programming language for and by statisticiansI Open-source, freeI Design features (for statisticians) and quirks (by statisticians)
aimed at data analysis
Download and stay up to dateI R: https://cran.r-project.orgI Rstudio: https:
//www.rstudio.com/products/rstudio/download/
![Page 3: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/3.jpg)
Packages
![Page 4: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/4.jpg)
Packages
I Groups of functions/data are organized into packagesI Some packages come with base RI External sources:
I CRAN: https://cran.r-project.org/web/packagesI RForge: https://r-forge.r-project.org/I Bioconductor: https://www.bioconductor.org/I Github: https://github.comI Personal websitesI . . .
![Page 5: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/5.jpg)
Disclaimer
I Packages are community-developed (base R excepted)I CRAN only verifies code is organized correctly and doesn’t do
anything harmfulI Does not check validity!I Bioconductor has a few more requirements
I “How do I do x in R?”I Is the package written by someone you know and trust?I Is it peer-reviewed in R Journal or JSS?I Is it current, and actively updated?I When in doubt, view the source, or contact the author. . .
Ultimately it is the users responsibility to verify the validity of theiranalysis.
![Page 6: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/6.jpg)
Installation
From CRAN:
install.packages("pseval")
From Source:
install.packages("download.zip", repos = NULL, type = "source")
From Github:
devtools::install_github("sachsmc/pseval")
![Page 7: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/7.jpg)
Loading
Functions defined in a package can be referenced bypackagename::functionnameThis can get cumbersome, so we often “attach” the package to thenamespace:
pseval::psdesignsurvival::Surv
library("pseval")library("survival")
Then any function can be called directly (without the ::)
psdesignSurv
![Page 8: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/8.jpg)
Objects and environments
![Page 9: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/9.jpg)
Everything is an object
I Objects live in an environmentI A group of objects in memoryI “Global environment” is what we generally work in
I Objects are generally created by functionsI Functions take objects as input, do something, then output
other objectsI Objects have one or more class
I The class determines how functions and operators interact withthe object
![Page 10: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/10.jpg)
Types of objects
I Vectors
1:5
## [1] 1 2 3 4 5
LETTERS[1:5]
## [1] "A" "B" "C" "D" "E"
c(TRUE, FALSE, FALSE)
## [1] TRUE FALSE FALSE
![Page 11: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/11.jpg)
Objects
I Matrices
matrix(1:9, nrow = 3)
## [,1] [,2] [,3]## [1,] 1 4 7## [2,] 2 5 8## [3,] 3 6 9
matrix(letters[1:9], nrow = 3)
## [,1] [,2] [,3]## [1,] "a" "d" "g"## [2,] "b" "e" "h"## [3,] "c" "f" "i"
![Page 12: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/12.jpg)
Objects
I Data frames
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
![Page 13: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/13.jpg)
Other
I ListsI FunctionsI . . .
![Page 14: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/14.jpg)
Data framesI A data frame is a collection of vectors of objects, where each
vector is the same lengthI Rows = observations, columns = variablesI Variables can be different types
df <- data.frame(X = 1:3, Y = letters[1:3], Z = c(TRUE, FALSE, TRUE))
I Can refer to variables by name
df$X
## [1] 1 2 3
df$Y
## [1] a b c## Levels: a b c
I “Look for object X in df”
![Page 15: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/15.jpg)
Operators and assignment
![Page 16: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/16.jpg)
Operators
I Special functionsI One (unary) or two (binary) inputs
?data.framehelp(data.frame)
-1
## [1] -1
`-`(1)
## [1] -1
![Page 17: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/17.jpg)
Binary
1 + 2
## [1] 3
`+`(1, 2)
## [1] 3
2 < 1
## [1] FALSE
`<`(2, 1)
## [1] FALSE
![Page 18: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/18.jpg)
What other kinds of objects can you add or compare?
1:5 + 1
## [1] 2 3 4 5 6
1:5 + 1:5
## [1] 2 4 6 8 10
1:3 < 2:4
## [1] TRUE TRUE TRUE
"a" < "b"
## [1] TRUE
![Page 19: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/19.jpg)
Assignment
I Special assignment operator: <-
x <- 1.0`<-`(x, 1.0)
“Store 1.0 in the environment and call it ‘x’ ”
df$N <- LETTERS[1:3]
![Page 20: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/20.jpg)
Functions
![Page 21: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/21.jpg)
Functions
Calling a function
function_name(arg1.name = arg1.value, arg2.name = arg2.value, ...)
1. Function name is always unquoted2. Don’t forget open and close parentheses
![Page 22: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/22.jpg)
Arguments
Arguments are key=value pairs separated by commas
function_name(arg1.name = arg1.value, arg2.name = arg2.value, ...)
1. Arguments are matched by name or position2. Argument names are always unquoted3. A function may not have any arguments4. Optional or unnamed arguments ...5. Sometimes arguments have defaults6. All specified in a function’s help file
![Page 23: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/23.jpg)
Return
I Most functions return an objectI Details in the “Value” section of the help file
Functions may behave differently based on what objects are given asarguments
![Page 24: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/24.jpg)
Formulas
![Page 25: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/25.jpg)
Formulas
I Special way to describe relationships between variables
Y ~ X + Y + Z + Y:Z
1. Outcome to the left of ~, predictors to the right2. Linear combinations separated by +3. Interactions with :4. Y * Z expands to Y + Z + Y:Z
![Page 26: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/26.jpg)
Some details
I Variables in a formula are names of objects in a data frame orenvironment
I How does R know where to find the objects?
lm(mpg ~ wt)lm(mpg ~ wt, data = mtcars)
I Use functions in a formula
lm(mpg ~ log(wt), data = mtcars)lm(mpg ~ wt^2, data = mtcars)
![Page 27: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/27.jpg)
Loading Data
![Page 28: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/28.jpg)
Lots of options
I Base R functionsI read.table, read.csv
I PackagesI foreign, readxl
I Easy way
install.packages("rio")rio::import("data.csv")rio::import("data.xlsx")
![Page 29: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/29.jpg)
Getting Help
![Page 30: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/30.jpg)
How not to ask for help
It doesn’t work, what do I do?
Before asking for helpDo your homework:
I Read the error or warning messageI Read help files, documentationI Make sure all software is up to dateI Search first:
https://stackoverflow.com/questions/tagged/r
![Page 31: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/31.jpg)
How to ask for help
1. State what you are trying to do2. Find the minimal reproducible example that produces the
error/problem3. Describe or write the code that you used4. Describe what you expected the result to be5. Describe how the actual result differs from your expectation
![Page 32: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/32.jpg)
Exercises
![Page 33: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/33.jpg)
Install
Install the pseval package:I https://cran.r-project.org/package=pseval
Read about and download one of the example data sets:I https://sachsmc.github.io/pseval-course
![Page 34: Session8 DeanFollmann,PeterGilbert,BetzHalloran ... · Surrogate Evaluation in R Session8 DeanFollmann,PeterGilbert,BetzHalloran,ErinGabriel, Michael Sachs July19,2016](https://reader035.vdocuments.net/reader035/viewer/2022071212/60248c3019bfea0f6a0bb951/html5/thumbnails/34.jpg)
Exercises
1. Create psdesign object appropriate to the study design2. Add integration model to the object3. Add risk model appropriate to the study and outcome4. Fit the model with EML5. Bootstrap using starting values from step 4.6. Create a plot of the CEP that is of interest7. Extract the appropriate statistics for tests of WEM from the
model fit8. Use a different integration model to see if it affects the results9. Write up results in a way suitable for a clinical journal,
including a plot10. Bonus: make a plot using ggplot2