I am unable to get the basehaz function to apply a proportional
hazards model to a new data frame. I replicated my specific situation
with the example for coxph in the help, where I changed the x value of
the first record from 0 to 1. Is there something incorrect in the
syntax that I am using? Thanks in advance!
test1 <- list(time= c(4, 3,1,1,2,2,3),
status=c(1,NA,1,0,1,1,0),
x= c(0, 2,1,1,1,0,0),
sex= c(0, 0,0,0,1,1,1))
test2 <- list(time= c(4, 3,1,1,2,2,3),
status=c(1,NA,1,0,1,1,0),
x= c(1, 2,1,1,1,0,0),
sex= c(0, 0,0,0,1,1,1))
f1 <- coxph( Surv(time, status) ~ x + strata(sex), data=test1)
#stratified model
f2 <- coxph( Surv(time, status) ~ x + strata(sex), data=test2)
#stratified model
f1
Call:
coxph(formula = Surv(time, status) ~ x + strata(sex), data = test1)
coef exp(coef) se(coef) z p
x 1.17 3.22 1.29 0.907 0.36
Likelihood ratio test=0.87 on 1 df, p=0.351 n=6 (1 observation
deleted due to missingness)> f2
Call:
coxph(formula = Surv(time, status) ~ x + strata(sex), data = test2)
coef exp(coef) se(coef) z p
x 0.896 2.45 1.42 0.63 0.53
Likelihood ratio test=0.38 on 1 df, p=0.535 n=6 (1 observation
deleted due to missingness)>
> basehaz(f1, newdata=test2)
Error in basehaz(f1, newdata = test2) :
unused argument(s) (newdata = list(time = c(4, 3, 1, 1, 2, 2, 3),
status = c(1, NA, 1, 0, 1, 1, 0), x = c(1, 2, 1, 1, 1, 0, 0), sex c(0, 0, 0, 0,
1, 1, 1)))>
Hi, just looked at it briefly and I don't know if it is the real cause for your problems. But 'data' as well as 'newdata' require a data.frame and not a list as input. Does this help? Best, Roland mah wrote:> I am unable to get the basehaz function to apply a proportional > hazards model to a new data frame. I replicated my specific situation > with the example for coxph in the help, where I changed the x value of > the first record from 0 to 1. Is there something incorrect in the > syntax that I am using? Thanks in advance! > > test1 <- list(time= c(4, 3,1,1,2,2,3), > status=c(1,NA,1,0,1,1,0), > x= c(0, 2,1,1,1,0,0), > sex= c(0, 0,0,0,1,1,1)) > test2 <- list(time= c(4, 3,1,1,2,2,3), > status=c(1,NA,1,0,1,1,0), > x= c(1, 2,1,1,1,0,0), > sex= c(0, 0,0,0,1,1,1)) > f1 <- coxph( Surv(time, status) ~ x + strata(sex), data=test1) > #stratified model > f2 <- coxph( Surv(time, status) ~ x + strata(sex), data=test2) > #stratified model > f1 > Call: > coxph(formula = Surv(time, status) ~ x + strata(sex), data = test1) > > > coef exp(coef) se(coef) z p > x 1.17 3.22 1.29 0.907 0.36 > > Likelihood ratio test=0.87 on 1 df, p=0.351 n=6 (1 observation > deleted due to missingness) >> f2 > Call: > coxph(formula = Surv(time, status) ~ x + strata(sex), data = test2) > > > coef exp(coef) se(coef) z p > x 0.896 2.45 1.42 0.63 0.53 > > Likelihood ratio test=0.38 on 1 df, p=0.535 n=6 (1 observation > deleted due to missingness) >> basehaz(f1, newdata=test2) > Error in basehaz(f1, newdata = test2) : > unused argument(s) (newdata = list(time = c(4, 3, 1, 1, 2, 2, 3), > status = c(1, NA, 1, 0, 1, 1, 0), x = c(1, 2, 1, 1, 1, 0, 0), sex > c(0, 0, 0, 0, 1, 1, 1))) > > ______________________________________________ > R-help at r-project.org mailing list > 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. >
The 'basehaz' function is just a wrapper for survfit, and includes only some of the arguments of the former. It's main reason for existence is that another more well known (but inferior :-) package uses that term. I don't understand the final comment in the exchange, however:> I had been hoping the tedious > alignment of the baseline curve with the value of the variables in the > new data set would be [somehow] handled for me.Terry Therneau