One way to do this generally is to make a copy of contr.sum, rename it, 
and set the dimnames appropriately.

I think contr.treatment is misleading (it labels contrasts of two levels 
by just one of them), and Christoph's labels are informative but 
impractically long.  But if you want to label each contrast by the level 
it contrasts with the rest,

        cont <- array(0, c(lenglev, lenglev - 1),
                       list(levels, levels[-lenglev]))

in a modified contr.sum will do it. E.g.

> z <- factor(letters[1:3])
> contr.treatment(z)
   b c
a 0 0
b 1 0
c 0 1
> contr.sum(z)
   [,1] [,2]
a    1    0
b    0    1
c   -1   -1
> mycontr.sum(z)
    a  b
a  1  0
b  0  1
c -1 -1




On Wed, 13 Jul 2005, Christoph Buser wrote:

> Dear Ghislain
>
> I do not know a general elegant solution, but for some
> applications the following example may be helpful:
>
> ## Artificial data for demonstration: group is fixed, species is random
> dat <- data.frame(group = c(rep("A",20),rep("B",17),rep("C",24)),
>                  species = c(rep("sp1", 4), rep("sp2",5),   rep("sp3",5),
>                    rep("sp4",6),  rep("sp5",2),  rep("sp6",5),  rep("sp7",3),
>                    rep("sp8",3), rep("sp9",4), rep("sp10",6),  rep("sp11",6),
>                    rep("sp12",6), rep("sp13",6)),
>                  area = rnorm(61))
>
> ## You can attach a contrast at your fixed factor of interest "group"
> ## Create the contrast you like to test (in our case contr.sum for 3
> ## levels)
> mat <- contr.sum(3)
> ## You can add the names you want to see in the output
> ## Be carefull that you give the correct names to the concerned
> ## column. Otherwise there is the big danger of misinterpretation.
> colnames(mat) <- c(": A against rest", ": B against rest")
> ## Attatch the contrast at your factor "group"
> dat[,"group"] <- C(dat[,"group"],mat)
> ## Now calculate the lme
> library(nlme)
> reg.lme <- lme(area ~ group, data = dat, random = ~ 1|species)
> summary(reg.lme)
>
> Maybe someone has a better idea how to do it generally.
>
> Hope this helps
>
> Christoph Buser
>
> --------------------------------------------------------------
> Christoph Buser <[EMAIL PROTECTED]>
> Seminar fuer Statistik, LEO C13
> ETH (Federal Inst. Technology)        8092 Zurich      SWITZERLAND
> phone: x-41-44-632-4673               fax: 632-1228
> http://stat.ethz.ch/~buser/
> --------------------------------------------------------------
>
>
> Ghislain Vieilledent writes:
> > Good morning,
> >
> > I used in R contr.sum for the contrast in a lme model:
> >
> > > options(contrasts=c("contr.sum","contr.poly"))
> > > Septo5.lme<-lme(Septo~Variete+DateSemi,Data4.Iso,random=~1|LieuDit)
> > > intervals(Septo5.lme)$fixed
> > lower est. upper
> > (Intercept) 17.0644033 23.106110 29.147816
> > Variete1 9.5819873 17.335324 25.088661
> > Variete2 -3.3794907 6.816101 17.011692
> > Variete3 -0.5636915 8.452890 17.469472
> > Variete4 -22.8923812 -10.914912 1.062558
> > Variete5 -10.7152821 -1.865884 6.983515
> > Variete6 0.2743390 9.492175 18.710012
> > Variete7 -23.7943250 -15.070737 -6.347148
> > Variete8 -21.7310554 -12.380475 -3.029895
> > Variete9 -27.9782575 -17.480555 -6.982852
> > DateSemi1 -5.7903419 -1.547875 2.694592
> > DateSemi2 3.6571596 8.428417 13.199675
> > attr(,"label")
> > [1] "Fixed effects:"
> >
> > How is it possible to obtain a return with the name of my factor's levels as
> > with contr.treatment ?
> >
> > Thanks for you help.
> >
> > --
> > Ghislain Vieilledent
> > 30, rue Bernard Ortet 31 500 TOULOUSE
> > 06 24 62 65 07
> >
> >     [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help@stat.math.ethz.ch mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-help
> > PLEASE do read the posting guide! 
> > http://www.R-project.org/posting-guide.html
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>

-- 
Brian D. Ripley,                  [EMAIL PROTECTED]
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to