I am trying to use the survfit() function with the newdata argument to 
produce predicted survivor curves for a particular covariate profile.

The main purpose of the plot will be to visualise the effect of snp1, 
coded 0 and 1. In my Cox model I have stratified by one variable, edu, and 
so I know I will automatically get a separate curve for each strata. My 
problem is how to deal with the variable sitenew, which is a 3 level 
factor (coded 0,1,2).

coxsnps$edu <- as.factor(coxsnps$edu)
coxsnps$sitenew <- as.factor(coxsnps$sitenew)

test1 <- coxph(Surv(time,censor) ~ snp1 + sex + sitenew + geno + eth_self 
+ strata(edu), data=coxsnps)

                        coef exp(coef) se(coef)      z       p
        snp1             -0.4324     0.649   0.1073 -4.031 5.5e-05
        sex           0.0604     1.062   0.0915  0.660 5.1e-01
        sitenew1      0.5128     1.670   0.1381  3.712 2.1e-04
        sitenew2      0.2688     1.308   0.1313  2.047 4.1e-02
        geno          0.9702     2.639   0.0663 14.630 0.0e+00
        eth_self      0.0871     1.091   0.1088  0.801 4.2e-01


profile1 <- data.frame(snp1=factor(c(0,1), levels=c("0", "1")), sex=0, 
sitenew=0, geno=0, eth_self=0)
plot(survfit(test1, newdata=profile1))

Putting sitenew=0 in the dataframe produces the error 

        Error in x2 %*% coef : non-conformable arguments

implying the rows and columns of the matrices don't match up. This makes 
sense as R creates dummy variables for sitenew. I naively tried using 
sitenew1=0, sitenew2=0 in the dataframe instead, which produced the same 
error message.

Is there a way to produce curves by edu and snp1 but just one level of 
sitenew?

If not, what would be the procedure for producing curves for all of them 
(for reference)?

Many thanks,
Sally







-----------------------------------------------------------
This e-mail was sent by GlaxoSmithKline Services Unlimited 
(registered in England and Wales No. 1047315), which is a 
member of the GlaxoSmithKline group of companies. The 
registered address of GlaxoSmithKline Services Unlimited 
is 980 Great West Road, Brentford, Middlesex TW8 9GS.
-----------------------------------------------------------

	[[alternative HTML version deleted]]

