[R] Getting HR from Cox model in R

Ruzan Udumyan ruzudumyan at gmail.com
Wed Dec 24 23:09:58 CET 2014


Dear Michael,

Thank you very much for your reply. The more complete information is as
follows:

I want to do a mediation analysis following the below-mentioned syntax
from:
http://www.biomedcentral.com/content/supplementary/1471-2288-14-9-s1.pdf

I did not define categorical variables as logical variables. I modelled
them as *factor.X, factor.Xstar*, etc. the X variable has 3 levels.

It is all sorted but I am not sure about the last bit: to return the
values. For example, I could not figure out what unname stands for, and
whether it is correct to use when variables are modelled as factor.X.

I wrote the syntax as:

 TE2 = exp(sum(coef(cox)[c('factor(X)2', 'factor(Xstar)2')]))   # level 2
vs level 1(ref)
 TE3 = exp(sum(coef(cox)[c('factor(X)3', 'factor(Xstar)3')]))   # level 3
vs level 1(ref)


  DE2 = exp(unname(coef(cox)['factor(X)2']))
  DE3 = exp(unname(coef(cox)['factor(X)3']))


  IE2 = exp(sum(coef(cox)['factor(Xstar)2']))
  IE3 = exp(sum(coef(cox)['factor(Xstar)3']))

  PM2 = log(IE2) / log(TE2)
  PM3 = log(IE3) / log(TE3)


Thank you very much for your help.

Wishing you happy holidays,
Ruzan


*The script from the link:*
doEffectDecomp = function(d)
{
 # Step 1: Replicate exposure variable, predict mediator
 d$TrialTemp = d$Trial
 MOpti = glm(Opti ~ TrialTemp + Age5 + ECOG + Ascit + Comorb + Histo +
 Grade, family=binomial(), data=d)

# Step 2: Replicate data with different exposures for the mediator
 d1 = d2 = d
 d1$Med = d1$Trial
 d2$Med = !d2$Trial
 newd = rbind(d1, d2)

# Step 3: Compute weights for the mediator
 newd$TrialTemp = newd$Trial
 w = predict(MOpti, newdata=newd, type='response')
 direct = ifelse(newd$Opti, w, 1-w)
 newd$TrialTemp = newd$Med
 w = predict(MOpti, newdata=newd, type='response')
 indirect = ifelse(newd$Opti, w, 1-w)
 newd$W = indirect/direct

# Step 4: Weighted Cox Model
 cox = coxph(Surv(OS, Status) ~ Trial + Med + Age5 + ECOG + Ascit +
 Comorb + Histo + Grade, weight=W, data=newd)

# Return value: Estimates for total, direct, indirect effect
 TE = exp(sum(coef(cox)[c('TrialTRUE', 'MedTRUE')]))
 DE = exp(unname(coef(cox)['TrialTRUE']))
 IE = exp(sum(coef(cox)['MedTRUE']))
 PM = log(IE) / log(TE)
 return(c(exp(coef(cox)), TE=TE, DE=DE, IE=IE, PM=PM))
}

On Tue, Dec 23, 2014 at 6:21 PM, Michael Dewey <info at aghmed.fsnet.co.uk>
wrote:

> Inline comments
>
> On 23/12/2014 09:42, Ruzan Udumyan wrote:
>
>> Dear All,
>>
>> I am not familiar with R language well. Could you please help me interpret
>> these commands?:
>>
>>
>>   TE = exp(sum(coef(cox)[c('aTRUE', 'bTRUE')]))   - does it mean
>> exp(coef(a
>> variable) + coef(b variable)) ?
>>
>
> You have not given us much to go on here.
> I assume if you go
> coef(cox)
> you will find elements labelled aTRUE and bTRUE which implies the
> existence of a logical covariate with values TRUE and FALSE. The author of
> the code is trying to do what you suggest.
>
>    DE = exp(unname(coef(cox)['aTRUE']))  - what is unname for ?
>>
>>
> ?unname
>
>  Thank you very much beforehand for your help.
>>
>> Wishing you happy holidays,
>> Ruzan
>>
>>         [[alternative HTML version deleted]]
>> > PLEASE do read the posting guide http://www.R-project.org/
>> posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
> If you post again please do read the message above.
>
>
>
>> -----
>> No virus found in this message.
>> Checked by AVG - www.avg.com
>> Version: 2015.0.5577 / Virus Database: 4257/8792 - Release Date: 12/23/14
>>
>>
>>
> --
> Michael
> http://www.dewey.myzen.co.uk
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list