Re: [R] Help with contrasts

From: peter dalgaard <pdalgd_at_gmail.com>
Date: Wed, 11 May 2011 13:30:36 +0200

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.
Received on Wed 11 May 2011 - 11:33:54 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Wed 11 May 2011 - 20:30:06 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive