[R] Help with contrasts

Guelman, Leo leo.guelman at rbc.com
Wed May 11 22:06:57 CEST 2011


Or alternatively (though very similar to Peter's idea) you can do

ci <- contrasts
formals(ci)$contrasts <- FALSE
dd <- data.frame(a = gl(3,4), b = gl(4,1,12))
mm <- model.matrix(~ a + b, dd, contrasts = list(a=ci(dd$a),
b=ci(dd$b))) 

Best,
Leo.

-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
On Behalf Of peter dalgaard
Sent: 2011, May, 11 7:31 AM
To: Lars Bishop
Cc: R-help at r-project.org Help
Subject: Re: [R] Help with contrasts


On May 11, 2011, at 12:51 , Lars Bishop wrote:

> Hi,
> 
> I need to build a function to generate one column for each level of a 
> factor in the model matrix created on an arbitrary formula (instead of

> using the available contrasts options such as contr.treatment,
contr.SAS, etc).
> 
> My approach to this was first to use the built-in function for 
> contr.treatment but changing the default value of the contrasts 
> argument to FALSE (I named this function "contr.identity" and it shown

> at the bottom of the email for reference).
> 
> So this function works fine,
> 
>> contr.identity(4)
> 
>  1 2 3 4
> 1 1 0 0 0
> 2 0 1 0 0
> 3 0 0 1 0
> 4 0 0 0 1
> 
>> contr.treatment(4)
>  2 3 4
> 1 0 0 0
> 2 1 0 0
> 3 0 1 0
> 4 0 0 1
> 
> However, when I try to create a model matrix using contr.identity 
> specified in options(), it actually uses the contr.treatment option. 
> Why is that? Any hint on how can I do this?


It's not actually using contr.treatment, it's just calling
contr.identity with contrasts=TRUE...

I don't think there's a painless way to avoid this. The closest I can
think of is

cI <- contr.treatment
formals(cI)$contrasts <- FALSE
dd <- data.frame(a = gl(3,4), b = gl(4,1,12)) model.matrix(~ C(a,cI,3) +
C(b,cI,4), dd)



--
Peter Dalgaard
Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000
Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com

______________________________________________
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.
_______________________________________________________________________

This e-mail may be privileged and/or confidential, and the sender does not waive
any related rights and obligations. Any distribution, use or copying of this e-mail or the information
it contains by other than an intended recipient is unauthorized.
If you received this e-mail in error, please advise me (by return e-mail or otherwise) immediately.

Ce courriel peut contenir des renseignements protégés et confidentiels.
L’expéditeur ne renonce pas aux droits et obligations qui s’y rapportent.
Toute diffusion, utilisation ou copie de ce courriel ou des renseignements qu’il contient
par une personne autre que le destinataire désigné est interdite.
Si vous recevez ce courriel par erreur, veuillez m’en aviser immédiatement, 
par retour de courriel ou par un autre moyen.


More information about the R-help mailing list