I looked at the nocenter and it says (-1,0,1) values but it seems that any three-level factor is included in that (represented as 1,2,3 in R) . Also, is the baseline curve now showing the reference level and not the fictional .428 sex? If I predict the risk for a new row, should I multiply the coefficient shown in the output by 1 for a sex=1? It used to be (1-.428)*coef. Thanks for clarifying. SB From: Therneau, Terry M., Ph.D. <therneau at mayo.edu> Sent: Friday, 3 September, 2021 12:37 To: Bond, Stephen <Stephen.Bond at cibc.com> Cc: R-help <r-help at R-project.org> Subject: Re: coxph means not equal to means of model matrix [EXTERNAL] ________________________________ See ?coxph, in particular the new "nocenter" option. Basically, the "mean" component is used to center later computations. This can be critical for continuous variables, avoiding overflow in the exp function, but is not necessary for 0/1 covariates. The fact that the default survival curve would be for a sex of .453, say, was off-putting to many. Terry T. On 9/3/21 11:01 AM, Bond, Stephen wrote: Hi, Please, help me understand what is happening with the means of a Cox model? I have: R version 4.0.2 (2020-06-22) -- "Taking Off Again" Copyright (C) 2020 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 (64-bit) getOption("contrasts") unordered ordered "contr.treatment" "contr.poly" According to the help coxph.object has a component holding the means of the X (model.matrix). This does not hold any more. ``` library(survival) test1 <- list(time=c(4,3,1,1,2,2,3), status=c(1,1,1,0,1,1,0), x=c(0,2,1,1,1,0,0), sex=factor(c(0,0,0,0,1,1,1))) m1 <- coxph(Surv(time, status) ~ x + sex, test1) m1$means ## x sex1 ## 0.7142857 0.0000000 colMeans(model.matrix(m1)) ## x sex1 ## 0.7142857 0.4285714 ``` Will new observations be scored using the zero mean from the object?? Is this just a reporting change where $means shows the reference level and no longer the mean of the model matrix?? Thanks everybody ATTENTION : This email originated outside your organization. Exercise caution before clicking links, opening attachments, or responding with personal information. ________________________________ [[alternative HTML version deleted]]
Therneau, Terry M., Ph.D.
2021-Sep-03 19:10 UTC
[R] coxph means not equal to means of model matrix
On 9/3/21 12:59 PM, Bond, Stephen wrote:> > I looked at the nocenter and it says (-1,0,1) values but it seems that any three-level > factor is included in that (represented as 1,2,3 in R) . >A factor is turned into a set of 0/1 dummy variable, so the nocenter applies.? I will add more clarification to the documentation.> Also, is the baseline curve now showing the reference level and not the fictional .428 > sex? If I predict the risk for a new row, should I multiply the coefficient shown in the > output by 1 for a sex=1? It used to be (1-.428)*coef. >Yes, the "mean" component is the reference level for predict and survfit.? If I could go back in time it would be labeled as "reference" instead of "mean".?? Another opportunity for me to make the documentation clearer. Good questions, ? Terry T> Thanks for clarifying. > > SB > > *From:* Therneau, Terry M., Ph.D. <therneau at mayo.edu> > *Sent:* Friday, 3 September, 2021 12:37 > *To:* Bond, Stephen <Stephen.Bond at cibc.com> > *Cc:* R-help <r-help at R-project.org> > *Subject:* Re: coxph means not equal to means of model matrix > > [EXTERNAL] > > ------------------------------------------------------------------------------------------ > > See ?coxph, in particular the new "nocenter" option. > > Basically, the "mean" component is used to center later computations.? This can be > critical for continuous variables, avoiding overflow in the exp function, but is not > necessary for 0/1 covariates.?? The fact that the default survival curve would be for a > sex of .453, say, was off-putting to many. > > Terry T. > > On 9/3/21 11:01 AM, Bond, Stephen wrote: > > Hi, > > Please, help me understand what is happening with the means of a Cox model? > > I have: > > R version 4.0.2 (2020-06-22) -- "Taking Off Again" > > Copyright (C) 2020 The R Foundation for Statistical Computing > > Platform: x86_64-w64-mingw32/x64 (64-bit) > > getOption("contrasts") > > ??????? unordered ordered > > "contr.treatment" "contr.poly" > > According to the help ?coxph.object has a component holding the means of the X > (model.matrix). This does not hold any more. > > ``` > > library(survival) > > test1 <- list(time=c(4,3,1,1,2,2,3), > > ???????????????????status=c(1,1,1,0,1,1,0), > > ???????????????????x=c(0,2,1,1,1,0,0), > > ???????????????????sex=factor(c(0,0,0,0,1,1,1))) > > m1 <- coxph(Surv(time, status) ~ x + sex, test1) > > m1$means > > ##??????? x????? sex1 > > ## 0.7142857 0.0000000 > > colMeans(model.matrix(m1)) > > ##???????? x????? sex1 > > ## 0.7142857 0.4285714 > > ``` > > Will new observations be scored using the zero mean from the object?? Is this just a > reporting change where $means shows the reference level and no longer the mean of > the model matrix?? > > Thanks everybody > > ATTENTION : This email originated outside your organization. Exercise caution before > clicking links, opening attachments, or responding with personal information. > > ------------------------------------------------------------------------------------------[[alternative HTML version deleted]]