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 <i...@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]] ______________________________________________ R-help@r-project.org 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.