Adjusted survival curves

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Adjusted survival curves

R help mailing list-2

For adjusted survival curves I took the sample code from here:
https://rpubs.com/daspringate/survival
and adapted for my date, but ... have a QUESTION.

library(survival)
library(survminer)
df<-read.csv("base.csv", header = TRUE, sep = ";")
head(df)
ID start stop censor sex age stage treatment
1 1 0 66 0 2 1 3 1
2 2 0 18 0 1 2 4 2
3 3 0 43 1 2 3 3 1
4 4 0 47 1 2 3 NA 2
5 5 0 26 0 1 4 3 NA

# THANKS, DAVID WINSEMIUS for remark!!! ("R regression functions allow you to use column names.")
model <- coxph( Surv(time = start,
time2 = stop,
event = censor) ~ treatment + age + sex + stage, data = df)

plot(survfit(model),
las=1,
xscale = 1.00,
xlab = "Months after diagnosis",
ylab = "Proportion survived",
main = "Baseline Hazard Curve")

#HOW TO EXPLAIN TO R, THAT treatment, age, sex and stage ARE FACTORS, AND NOT CONTINUOUS VAR?
treat <- with (df,
data.frame (
treatment = levels(treatment),
age = rep(levels(age)[1], 2),
sex = rep(levels(sex)[1], 2),
stage = rep(levels(stage)[1], 2)))

str(treat)
        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: Adjusted survival curves

jdnewmil-2
Change the columns into factors before you give them to the coxph function, e.g.

df$treatment <- factor( df$treatment )

--
Sent from my phone. Please excuse my brevity.

On October 7, 2017 5:01:19 PM GMT+01:00, "Ted Beginner (RStudio) via R-help" <[hidden email]> wrote:

>
>For adjusted survival curves I took the sample code from here:
>https://rpubs.com/daspringate/survival
>and adapted for my date, but ... have a QUESTION.
>
>library(survival)
>library(survminer)
>df<-read.csv("base.csv", header = TRUE, sep = ";")
>head(df)
>ID start stop censor sex age stage treatment
>1 1 0 66 0 2 1 3 1
>2 2 0 18 0 1 2 4 2
>3 3 0 43 1 2 3 3 1
>4 4 0 47 1 2 3 NA 2
>5 5 0 26 0 1 4 3 NA
>
># THANKS, DAVID WINSEMIUS for remark!!! ("R regression functions allow
>you to use column names.")
>model <- coxph( Surv(time = start,
>time2 = stop,
>event = censor) ~ treatment + age + sex + stage, data = df)
>
>plot(survfit(model),
>las=1,
>xscale = 1.00,
>xlab = "Months after diagnosis",
>ylab = "Proportion survived",
>main = "Baseline Hazard Curve")
>
>#HOW TO EXPLAIN TO R, THAT treatment, age, sex and stage ARE FACTORS,
>AND NOT CONTINUOUS VAR?
>treat <- with (df,
>data.frame (
>treatment = levels(treatment),
>age = rep(levels(age)[1], 2),
>sex = rep(levels(sex)[1], 2),
>stage = rep(levels(stage)[1], 2)))
>
>str(treat)
> [[alternative HTML version deleted]]
>
>______________________________________________
>[hidden email] mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
Reply | Threaded
Open this post in threaded view
|

Re: Adjusted survival curves

David Winsemius
In reply to this post by R help mailing list-2

> On Oct 7, 2017, at 9:01 AM, Ted Beginner (RStudio) via R-help <[hidden email]> wrote:
>
>
> For adjusted survival curves I took the sample code from here:
> https://rpubs.com/daspringate/survival
> and adapted for my date, but ... have a QUESTION.
>
> library(survival)
> library(survminer)
> df<-read.csv("base.csv", header = TRUE, sep = ";")
> head(df)
> ID start stop censor sex age stage treatment
> 1 1 0 66 0 2 1 3 1
> 2 2 0 18 0 1 2 4 2
> 3 3 0 43 1 2 3 3 1
> 4 4 0 47 1 2 3 NA 2
> 5 5 0 26 0 1 4 3 NA
>
> # THANKS, DAVID WINSEMIUS for remark!!! ("R regression functions allow you to use column names.")
> model <- coxph( Surv(time = start,
> time2 = stop,
> event = censor) ~ treatment + age + sex + stage, data = df)
>
> plot(survfit(model),
> las=1,
> xscale = 1.00,
> xlab = "Months after diagnosis",
> ylab = "Proportion survived",
> main = "Baseline Hazard Curve")
>
> #HOW TO EXPLAIN TO R, THAT treatment, age, sex and stage ARE FACTORS, AND NOT CONTINUOUS VAR?
> treat <- with (df,
> data.frame (
> treatment = levels(treatment),
> age = rep(levels(age)[1], 2),
> sex = rep(levels(sex)[1], 2),
> stage = rep(levels(stage)[1], 2)))

Perhaps:

treat2 <- treat
treat2[,c('treatment', 'age', 'sex', 'stage')] <- lapply( treat2[,c('treatment', 'age', 'sex', 'stage')], factor)


> treat2
  ID start stop censor sex age stage treatment
1  1     0   66      0   2   1     3         1
2  2     0   18      0   1   2     4         2
3  3     0   43      1   2   3     3         1
4  4     0   47      1   2   3  <NA>         2
5  5     0   26      0   1   4     3      <NA>
> str(treat2)
'data.frame': 5 obs. of  8 variables:
 $ ID       : int  1 2 3 4 5
 $ start    : int  0 0 0 0 0
 $ stop     : int  66 18 43 47 26
 $ censor   : int  0 0 1 1 0
 $ sex      : Factor w/ 2 levels "1","2": 2 1 2 2 1
 $ age      : Factor w/ 4 levels "1","2","3","4": 1 2 3 3 4
 $ stage    : Factor w/ 2 levels "3","4": 1 2 1 NA 1

I saw Peter Dalgaard's reply and I'm guessing that your 'age' was grouped into some categorical  variable, perhaps decades?

>
> str(treat)
> [[alternative HTML version deleted]]

You should learn to post in plain text and use dput to present your data structures. At your console do this

dput(treat)

# and this will appear. Copy it to your plain-text message:

structure(list(ID = 1:5, start = c(0L, 0L, 0L, 0L, 0L), stop = c(66L,
18L, 43L, 47L, 26L), censor = c(0L, 0L, 1L, 1L, 0L), sex = c(2L,
1L, 2L, 2L, 1L), age = c(1L, 2L, 3L, 3L, 4L), stage = c(3L, 4L,
3L, NA, 3L), treatment = c(1L, 2L, 1L, 2L, NA)), .Names = c("ID",
"start", "stop", "censor", "sex", "age", "stage", "treatment"
), class = "data.frame", row.names = c("1", "2", "3", "4", "5"
)):



Then we can just do this:

 treat <- structure(list(ID = 1:5, start = c(0L, 0L, 0L, 0L, 0L), stop = c(66L,
18L, 43L, 47L, 26L), censor = c(0L, 0L, 1L, 1L, 0L), sex = c(2L,
1L, 2L, 2L, 1L), age = c(1L, 2L, 3L, 3L, 4L), stage = c(3L, 4L,
3L, NA, 3L), treatment = c(1L, 2L, 1L, 2L, NA)), .Names = c("ID",
"start", "stop", "censor", "sex", "age", "stage", "treatment"
), class = "data.frame", row.names = c("1", "2", "3", "4", "5"
))

--
David Winsemius
Alameda, CA, USA

'Any technology distinguishable from magic is insufficiently advanced.'   -Gehm's Corollary to Clarke's Third Law

______________________________________________
[hidden email] mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.