Question: I am now learning how to do survival analysis in R and using COX proportional hazards model, which can be referred to the 'coxph' function under package 'survival'. When I looked some online examples, eg, [here][1], I found sometimes the code looks like

Surv(time, censor) ~ factor(hercoc)

But I can also do

Surv(time, censor) ~ hercoc

I was wondering what is the difference between these two and when shall I use which one. And how should I interpret the result from the one used **'factor'**

[1]: http://www.ats.ucla.edu/stat/r/examples/asa/asa_ch5_r.htm

Answer: If your variable `hercoc` has only two levels then there is no difference. However, if it has 3 or more levels then there is a difference. You haven't provided any example data, and I am assuming that `hercoc` is numeric.

Using a more concrete example:

```
library(survival)

attach(lung)

head(lung)

# inst time status age sex ph.ecog ph.karno pat.karno meal.cal wt.loss
#1 3 306 2 74 1 1 90 100 1175 NA
#2 3 455 2 68 1 0 90 90 1225 15
#3 3 1010 1 56 1 0 90 90 NA 15
#4 5 210 2 57 1 1 90 60 1150 11
```

The variable `sex` has two levels but is coded as a numeric variable here (1 for male, 2 for female or vice versa).

```
summary(as.factor(sex))
1 2
138 90
```

There's only one coefficient fitted by the model regardless of how you write it:

```
coxph(Surv(time, status) ~ sex)

# Call:
coxph(formula = Surv(time, status) ~ sex)

coef exp(coef) se(coef) z p
sex -0.531 0.588 0.167 -3.18 0.0015

Likelihood ratio test=10.6 on 1 df, p=0.00111 n= 228, number of events= 165

coxph(Surv(time, status) ~ as.factor(sex))
Call:
coxph(formula = Surv(time, status) ~ as.factor(sex))

coef exp(coef) se(coef) z p
as.factor(sex)2 -0.531 0.588 0.167 -3.18 0.0015

Likelihood ratio test=10.6 on 1 df, p=0.00111 n= 228, number of events= 165
```

For the variable `ph.ecog` there are 4 levels

```
summary(as.factor(ph.ecog))
# 0 1 2 3 NA's
# 63 113 50 1 1
```

On fitting the survival model against `ph.ecog` it really does make a difference whether the variable enters as a numeric or a factor. If treated numerically, only a single coefficient is fitted (for a given individual, the value for ecog is multiplied by this coefficient before entering into the coxph calculation);

```
coxph(Surv(time, status) ~ ph.ecog)
Call:
coxph(formula = Surv(time, status) ~ ph.ecog)

coef exp(coef) se(coef) z p
ph.ecog 0.476 1.61 0.113 4.2 2.7e-05

Likelihood ratio test=17.6 on 1 df, p=2.77e-05 n= 227, number of events= 164
(1 observation deleted due to missingness)
```

However, treated as a factor, three different coefficients will be fitted, one for each non-reference level (ie, levels 1 2 and 3 each have a coefficient) and for a given individual you would look up the coefficient corresponding to the level of the `ecog` factor.

```
> coxph(Surv(time, status) ~ as.factor(ph.ecog))
Call:
coxph(formula = Surv(time, status) ~ as.factor(ph.ecog))

coef exp(coef) se(coef) z p
as.factor(ph.ecog)1 0.369 1.45 0.199 1.86 6.3e-02
as.factor(ph.ecog)2 0.916 2.50 0.225 4.08 4.5e-05
as.factor(ph.ecog)3 2.208 9.10 1.026 2.15 3.1e-02

Likelihood ratio test=18.4 on 3 df, p=0.000356 n= 227, number of events= 164
(1 observation deleted due to missingness)
```

Look into how the coefficients enter the survival model in a good Generalised linear model book (I really can't explain that quickly for you)