Please take this discussion offlist. It is **not** about R. -- Bert
On Thu, Apr 25, 2013 at 5:59 AM, Paul Miller <pjmiller...@yahoo.com> wrote: > Hi Dr. Therneau, > > Thanks for your reply to my question. I'm aware that many on the list do not > like type III SS. I'm not particularly attached to the idea of using them but > often produce output for others who see value in type III SS. > > You mention the problems with type III SS when testing interactions. I don't > think we'll be doing that here though. So my type III SS could just as easily > be called type II SS I think. If the SS I'm calculating are essentially type > II SS, is that still problematic for a Cox model? > > People using type III SS generally want a measure of whether or not a > variable is contributing something to their model or if it could just as > easily be discarded. Is there a better way of addressing this question than > by using type III (or perhaps type II) SS? > > A series of model comparisons using a LRT might be the answer. If it is, is > there an efficient way of implementing this approach when there are many > predictors? Another approach might be to run models through step or stepAIC > in order to determine which predictors are useful and to discard the rest. Is > that likely to be any good? > > Thanks, > > Paul > > --- On Wed, 4/24/13, Terry Therneau <thern...@mayo.edu> wrote: > >> From: Terry Therneau <thern...@mayo.edu> >> Subject: Re: Trouble Computing Type III SS in a Cox Regression >> To: r-help@r-project.org, "Paul Miller" <pjmiller...@yahoo.com> >> Received: Wednesday, April 24, 2013, 5:55 PM >> I should hope that there is trouble, >> since "type III" is an undefined concept for a Cox >> model. Since SAS Inc fostered the cult of type III >> they have recently added it as an option for phreg, but I am >> not able to find any hints in the phreg documentation of >> what exactly they are doing when you invoke it. If you >> can unearth this information, then I will be happy to tell >> you whether >> a. using the test (whatever it is) makes >> any sense at all for your data set >> b. if "a" is true, how to get it out of R >> >> I use the word "cult" on purpose -- an entire generation of >> users who believe in the efficacy of this incantation >> without having any idea what it actually does. In many >> particular instances the SAS type III corresponds to a >> survey sampling question, i.e., reweight the data so that it >> is balanced wrt factor A and then test factor B in the new >> sample. The three biggest problems with type III are >> that >> 1: the particular test has been hyped as "better" when in >> fact it sometimes is sensible and sometimes not, 2: SAS >> implemented it as a computational algorithm which >> unfortunately often works even when the underlying rationale >> does not hold and >> 3: they explain it using a notation that completely obscures >> the actual question. This last leads to the nonsense >> phrase "test for main effects in the presence of >> interactions". >> >> There is a "survey reweighted" approach for Cox models, very >> closely related to the work on causal inference ("marginal >> structural models"), but I'd bet dollars to donuts that this >> is not what SAS is doing. >> >> (Per 2 -- type III was a particular order of operations of >> the sweep algorithm for linear models, and for backwards >> compatability that remains the core definition even as >> computational algorthims have left sweep behind. But >> Cox models can't be computed using the sweep algorithm). >> >> Terry Therneau >> >> >> On 04/24/2013 12:41 PM, r-help-requ...@r-project.org >> wrote: >> > Hello All, >> > >> > Am having some trouble computing Type III SS in a Cox >> Regression using either drop1 or Anova from the car package. >> Am hoping that people will take a look to see if they can >> tell what's going on. >> > >> > Here is my R code: >> > >> > cox3grp<- subset(survData, >> > Treatment %in% c("DC", "DA", "DO"), >> > c("PTNO", "Treatment", "PFS_CENSORED", "PFS_MONTHS", >> "AGE", "PS2")) >> > cox3grp<- droplevels(cox3grp) >> > str(cox3grp) >> > >> > coxCV<- coxph(Surv(PFS_MONTHS, PFS_CENSORED == 1) ~ >> AGE + PS2, data=cox3grp, method = "efron") >> > coxCV >> > >> > drop1(coxCV, test="Chisq") >> > >> > require(car) >> > Anova(coxCV, type="III") >> > >> > And here are my results: >> > >> > cox3grp<- subset(survData, >> > + >> Treatment %in% c("DC", "DA", >> "DO"), >> > + >> c("PTNO", "Treatment", >> "PFS_CENSORED", "PFS_MONTHS", "AGE", "PS2")) >> >> > cox3grp<- droplevels(cox3grp) >> >> > str(cox3grp) >> > 'data.frame': 227 obs. of 6 >> variables: >> > $ PTNO : >> int 1195997 104625 106646 1277507 220506 525343 789119 >> 817160 824224 82632 ... >> > $ Treatment : Factor >> w/ 3 levels "DC","DA","DO": 1 1 1 1 1 1 1 1 1 1 ... >> > $ PFS_CENSORED: int 1 1 1 0 1 1 >> 1 1 0 1 ... >> > $ PFS_MONTHS : num 1.12 >> 8.16 6.08 1.35 9.54 ... >> > $ AGE >> : num 72 71 80 65 72 60 63 61 71 70 >> ... >> > $ PS2 >> : Ord.factor w/ 2 levels "Yes"<"No": 2 >> 2 2 2 2 2 2 2 2 2 ... >> >> > > coxCV<- >> coxph(Surv(PFS_MONTHS, PFS_CENSORED == 1) ~ AGE + PS2, >> data=cox3grp, method = "efron") >> >> > coxCV >> > Call: >> > coxph(formula = Surv(PFS_MONTHS, PFS_CENSORED == 1) ~ >> AGE + PS2, >> > data = cox3grp, method = "efron") >> > >> > >> > coef exp(coef) >> se(coef) z p >> > AGE 0.00492 >> 1.005 0.00789 0.624 0.530 >> > PS2.L -0.34523 0.708 >> 0.14315 -2.412 0.016 >> > >> > Likelihood ratio test=5.66 on 2 df, >> p=0.0591 n= 227, number of events= 198 >> >> > > drop1(coxCV, test="Chisq") >> > Single term deletions >> > >> > Model: >> > Surv(PFS_MONTHS, PFS_CENSORED == 1) ~ AGE + PS2 >> > Df >> AIC LRT Pr(>Chi) >> > <none> 1755.2 >> > AGE 1 1753.6 0.3915 >> 0.53151 >> > PS2 1 1758.4 5.2364 >> 0.02212 * >> > --- >> > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 >> '.' 0.1 ' ' 1 >> >> > > require(car) >> >> > Anova(coxCV, type="III") >> > Analysis of Deviance Table (Type III tests) >> > LR Chisq Df Pr(>Chisq) >> > AGE 0.3915 1 >> 0.53151 >> > PS2 5.2364 1 >> 0.02212 * >> > --- >> > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 >> '.' 0.1 ' ' 1 >> >> > >> > Both drop1 and Anova give me a different p-value than I >> get from coxph for both my two-level ps2 variable and for >> age. This is not what I would expect based on experience >> using SAS to conduct similar analyses. Indeed SAS >> consistently produces the same p-values. Namely the ones I >> get from coxph. >> > >> > My sense is that I'm probably misusing R in some way >> but I'm not sure what I'm likely to be doing wrong. SAS >> prodcues Wald Chi-Square results for its type III tests. >> Maybe that has something to do with it. Ideally, I'd like to >> get type III values that match those from coxph. If anyone >> could help me understand better, that would be greatly >> appreciated. >> > >> > Thanks, >> > >> > Paul >> > > ______________________________________________ > R-help@r-project.org mailing list > 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. -- Bert Gunter Genentech Nonclinical Biostatistics Internal Contact Info: Phone: 467-7374 Website: http://pharmadevelopment.roche.com/index/pdb/pdb-functional-groups/pdb-biostatistics/pdb-ncb-home.htm ______________________________________________ R-help@r-project.org mailing list 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.