I need to use contr.sum and observe that some levels are not statistically different from the overall mean of zero. What is the proper way of forcing the zero estimate? It seems the column corresponding to that level should become a column of zeros. Is there a way to achieve that without me constructing the design matrix? Thank you. Stephen Bond [[alternative HTML version deleted]]
On Jul 7, 2010, at 3:13 PM, Bond, Stephen wrote:> I need to use contr.sum and observe that some levels are not > statistically different from the overall mean of zero. > What is the proper way of forcing the zero estimate? It seems the > column corresponding to that level should become a column of zeros. > Is there a way to achieve that without me constructing the design > matrix? > Thank you.lm( formula = z ~ x + y + 0, ...) _might_ do something close to what you want. David Winsemius, MD West Hartford, CT
Clarifying my question: options(contrasts = c("contr.sum", "contr.poly"))> contrasts(fixw$snconv)[,1] [,2] [,3] [,4] [,5] 01 1 0 0 0 0 03 0 1 0 0 0 05 0 0 1 0 0 06 0 0 0 1 0 07 0 0 0 0 1 09 -1 -1 -1 -1 -1 I need to force the coefficient on level 03 to be zero. Thank you. Stephen Bond -----Original Message----- From: David Winsemius [mailto:dwinsemius at comcast.net] Sent: Wednesday, July 07, 2010 3:44 PM To: Bond, Stephen Cc: r-help at r-project.org Subject: Re: [R] forcing a zero level in contr.sum On Jul 7, 2010, at 3:13 PM, Bond, Stephen wrote:> I need to use contr.sum and observe that some levels are not > statistically different from the overall mean of zero. > What is the proper way of forcing the zero estimate? It seems the > column corresponding to that level should become a column of zeros. > Is there a way to achieve that without me constructing the design > matrix? > Thank you.lm( formula = z ~ x + y + 0, ...) _might_ do something close to what you want. David Winsemius, MD West Hartford, CT
On Jul 7, 2010, at 4:04 PM, Bond, Stephen wrote:> Clarifying my question: > > options(contrasts = c("contr.sum", "contr.poly")) >> contrasts() > [,1] [,2] [,3] [,4] [,5] > 01 1 0 0 0 0 > 03 0 1 0 0 0 > 05 0 0 1 0 0 > 06 0 0 0 1 0 > 07 0 0 0 0 1 > 09 -1 -1 -1 -1 -1 > > I need to force the coefficient on level 03 to be zero.?factor ?relevel Perhaps worth a try: fixw$snconv <- relevel(fixw$snconv, ref="03") (But I wonder if using contr.sum will ever generally satisfy that goal, since contr.sum calculates the difference from a grand mean and this will only work if a) the GM=0 and b) there is only one term on the RHS of the model, and c) probably a bunch of other restrictions.) -- David.> > Thank you. > > Stephen Bond > -----Original Message----- > From: David Winsemius [mailto:dwinsemius at comcast.net] > Sent: Wednesday, July 07, 2010 3:44 PM > To: Bond, Stephen > Cc: r-help at r-project.org > Subject: Re: [R] forcing a zero level in contr.sum > > > On Jul 7, 2010, at 3:13 PM, Bond, Stephen wrote: > >> I need to use contr.sum and observe that some levels are not >> statistically different from the overall mean of zero. >> What is the proper way of forcing the zero estimate? It seems the >> column corresponding to that level should become a column of zeros. >> Is there a way to achieve that without me constructing the design >> matrix? >> Thank you. > > lm( formula = z ~ x + y + 0, ...) _might_ do something close to > what you want. > > > > > David Winsemius, MD > West Hartford, CT >David Winsemius, MD West Hartford, CT
Please, do not post if you do not know the answer. People will see this has answers and skip. I tried with mat1=contrasts(fixw$snconv) mat1=mat1[,-2] summary(frm2sum <- glm(resp.frm ~ C(snconv,contr=mat1)+mprime+mshape,data=fixw,family="quasibinomial")) the unwanted level is still there. Unbelievable. Stephen Bond -----Original Message----- From: David Winsemius [mailto:dwinsemius at comcast.net] Sent: Wednesday, July 07, 2010 4:15 PM To: Bond, Stephen Cc: r-help at r-project.org Subject: Re: [R] forcing a zero level in contr.sum On Jul 7, 2010, at 4:04 PM, Bond, Stephen wrote:> Clarifying my question: > > options(contrasts = c("contr.sum", "contr.poly")) >> contrasts() > [,1] [,2] [,3] [,4] [,5] > 01 1 0 0 0 0 > 03 0 1 0 0 0 > 05 0 0 1 0 0 > 06 0 0 0 1 0 > 07 0 0 0 0 1 > 09 -1 -1 -1 -1 -1 > > I need to force the coefficient on level 03 to be zero.?factor ?relevel Perhaps worth a try: fixw$snconv <- relevel(fixw$snconv, ref="03") (But I wonder if using contr.sum will ever generally satisfy that goal, since contr.sum calculates the difference from a grand mean and this will only work if a) the GM=0 and b) there is only one term on the RHS of the model, and c) probably a bunch of other restrictions.) -- David.> > Thank you. > > Stephen Bond > -----Original Message----- > From: David Winsemius [mailto:dwinsemius at comcast.net] > Sent: Wednesday, July 07, 2010 3:44 PM > To: Bond, Stephen > Cc: r-help at r-project.org > Subject: Re: [R] forcing a zero level in contr.sum > > > On Jul 7, 2010, at 3:13 PM, Bond, Stephen wrote: > >> I need to use contr.sum and observe that some levels are not >> statistically different from the overall mean of zero. >> What is the proper way of forcing the zero estimate? It seems the >> column corresponding to that level should become a column of zeros. >> Is there a way to achieve that without me constructing the design >> matrix? >> Thank you. > > lm( formula = z ~ x + y + 0, ...) _might_ do something close to > what you want. > > > > > David Winsemius, MD > West Hartford, CT >David Winsemius, MD West Hartford, CT
Please do not post with ambiguous questions lacking sufficient R code and data to represent the problem. On Jul 7, 2010, at 4:41 PM, Bond, Stephen wrote:> Please, do not post if you do not know the answer. People will see > this has answers and skip.More likely people will see that it has insufficient detail to answer ,,, and then also skip. You still have not provided any insight into the structure of "fixw".> > I tried with > mat1=contrasts(fixw$snconv) > mat1=mat1[,-2] > summary(frm2sum <- glm(resp.frm ~ C(snconv,contr=mat1)+mprime > +mshape,data=fixw,family="quasibinomial")) > > the unwanted level is still there.But did you try: summary(frm2sum <- glm(resp.frm ~ relevel(snconv, ref="03") + mprime + mshape, data=fixw, family="quasibinomial")) (The above obviously not tested on "fixw" in the absence of a reproducible example, but was an analog modulo the minimal information offered was tested on the quasipoisson example in help page of "family".) -- David.> Unbelievable.<snarky comment deleted>> > Stephen Bond > > -----Original Message----- > From: David Winsemius [mailto:dwinsemius at comcast.net] > Sent: Wednesday, July 07, 2010 4:15 PM > To: Bond, Stephen > Cc: r-help at r-project.org > Subject: Re: [R] forcing a zero level in contr.sum > > > On Jul 7, 2010, at 4:04 PM, Bond, Stephen wrote: > >> Clarifying my question: >> >> options(contrasts = c("contr.sum", "contr.poly")) >>> contrasts() >> [,1] [,2] [,3] [,4] [,5] >> 01 1 0 0 0 0 >> 03 0 1 0 0 0 >> 05 0 0 1 0 0 >> 06 0 0 0 1 0 >> 07 0 0 0 0 1 >> 09 -1 -1 -1 -1 -1 >> >> I need to force the coefficient on level 03 to be zero. > > ?factor > ?relevel > > > Perhaps worth a try: > > fixw$snconv <- relevel(fixw$snconv, ref="03") > > > (But I wonder if using contr.sum will ever generally satisfy that > goal, since contr.sum calculates the difference from a grand mean and > this will only work if a) the GM=0 and b) there is only one term on > the RHS of the model, and c) probably a bunch of other restrictions.) > > -- > David. >> >> Thank you. >> >> Stephen Bond >> -----Original Message----- >> From: David Winsemius [mailto:dwinsemius at comcast.net] >> Sent: Wednesday, July 07, 2010 3:44 PM >> To: Bond, Stephen >> Cc: r-help at r-project.org >> Subject: Re: [R] forcing a zero level in contr.sum >> >> >> On Jul 7, 2010, at 3:13 PM, Bond, Stephen wrote: >> >>> I need to use contr.sum and observe that some levels are not >>> statistically different from the overall mean of zero. >>> What is the proper way of forcing the zero estimate? It seems the >>> column corresponding to that level should become a column of zeros. >>> Is there a way to achieve that without me constructing the design >>> matrix? >>> Thank you. >> >> lm( formula = z ~ x + y + 0, ...) _might_ do something close to >> what you want. >> >> >> >> >> David Winsemius, MD >> West Hartford, CT >> > > David Winsemius, MD > West Hartford, CT > > ______________________________________________ > R-help at 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.David Winsemius, MD West Hartford, CT
Bond, Stephen wrote:> I need to use contr.sum and observe that some levels are not > statistically different from the overall mean of zero. What is the > proper way of forcing the zero estimate? It seems the column > corresponding to that level should become a column of zeros. Is there > a way to achieve that without me constructing the design matrix?As Berwin (indirectly) points out, you probably overlooked the how.many argument to C(). However, are you _sure_ that you want to do this? This is like testing that one treatment is exactly equal to the average of all other treatments, which is a rather strange hypothesis. -- Peter Dalgaard Center for Statistics, Copenhagen Business School Phone: (+45)38153501 Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com