[R] Model matrix using dummy regressors or deviation regressors

bluesky315 at gmail.com bluesky315 at gmail.com
Wed Feb 10 05:43:31 CET 2010


On Tue, Feb 9, 2010 at 6:09 PM, John Fox <jfox at mcmaster.ca> wrote:
> Dear bluesky315,
>
> There are several ways in R to determine regressors associated with factors.
> One way is to set the global contrasts option. To get "deviation"
> regressors, use options(contrasts=c("contr.sum", "contr.poly")), and see
> ?options and ?contrasts for details. Also see Section 11.1.1 of the
> Introduction to R manual that comes with R.

Instead of change the option globally, it is cleaner to pass the
contrast choice as an argument to aov(). It seems that 'contrasts.arg'
of model.matrix() can be used for this purpose.

I tried something like contrasts.args=c('contr.sum', 'contr.poly').
But it is not working. Would you please show me how to specify this
argument for the example that I gave in the original email?

> I hope this helps,
>  John
>
> --------------------------------
> John Fox
> Senator William McMaster
>  Professor of Social Statistics
> Department of Sociology
> McMaster University
> Hamilton, Ontario, Canada
> web: socserv.mcmaster.ca/jfox
>
>
>> -----Original Message-----
>> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org]
> On
>> Behalf Of bluesky315 at gmail.com
>> Sent: February-09-10 6:33 PM
>> To: r-help at stat.math.ethz.ch
>> Subject: [R] Model matrix using dummy regressors or deviation regressors
>>
>> The model matrix for the code at the end the email is shown below.
>> Since the model matrix doesn't have -1, I think that it is made of
>> dummy regressors rather than deviation regressors. I'm wondering how
>> to make a model matrix using deviation regressors. Could somebody let
>> me know?
>>
>> > model.matrix(aaov)
>>    (Intercept) A2 B2 B3 A2:B2 A2:B3
>> 1            1  0  0  0     0     0
>> 2            1  0  0  0     0     0
>> 3            1  0  0  0     0     0
>> 4            1  0  0  0     0     0
>> 5            1  1  0  0     0     0
>> 6            1  1  0  0     0     0
>> 7            1  1  0  0     0     0
>> 8            1  1  0  0     0     0
>> 9            1  0  1  0     0     0
>> 10           1  0  1  0     0     0
>> 11           1  0  1  0     0     0
>> 12           1  0  1  0     0     0
>> 13           1  1  1  0     1     0
>> 14           1  1  1  0     1     0
>> 15           1  1  1  0     1     0
>> 16           1  1  1  0     1     0
>> 17           1  0  0  1     0     0
>> 18           1  0  0  1     0     0
>> 19           1  0  0  1     0     0
>> 20           1  0  0  1     0     0
>> 21           1  1  0  1     0     1
>> 22           1  1  0  1     0     1
>> 23           1  1  0  1     0     1
>> 24           1  1  0  1     0     1
>> attr(,"assign")
>> [1] 0 1 2 2 3 3
>> attr(,"contrasts")
>> attr(,"contrasts")$A
>> [1] "contr.treatment"
>>
>> attr(,"contrasts")$B
>> [1] "contr.treatment"
>>
>>
>>
>> #############
>> a=2
>> b=3
>> n=4
>> A = rep(sapply(1:a,function(x){rep(x,n)}),b)
>> B = as.vector(sapply(sapply(1:b, function(x){rep(x,n)}),
>> function(x){rep(x,a)}))
>> Y = A + B + rnorm(a*b*n)
>>
>> fr = data.frame(Y=Y,A=as.factor(A),B=as.factor(B))
>> aaov=aov(Y ~ A * B,fr)
>> summary(aaov)
>> model.matrix(aaov)
>>
>> ______________________________________________
>> 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.
>
>
>



More information about the R-help mailing list