[R] What is wrong with this contrast matrix?

Christoph Scherber Christoph.Scherber at agr.uni-goettingen.de
Thu Jul 24 18:28:10 CEST 2008


Dear Ted,

Thanks for your help; is there any straightforward way to construct an orthogonal contrast matrix by 
hand? Of course

contrasts(as.factor(letters[1:6]))

would also do the job, but user-defined contrasts would make more sense.

Ideally, I would like to have a function that "tests" for me if my contrast matrix is orthogonal or 
not. Is there some built-in function in R for that?

Best wishes
Christoph.




> On 24-Jul-08 15:30:57, Christoph Scherber wrote:
>> Dear all,
>> I am fitting a multivariate linear model with 7 response variables and
>> 1 explanatory variable.
>>
>> The following matrix P:
>>
>> P <- cbind(
>> c(1,-1,0,0,0,0,0),
>> c(2,2,2,2,2,-5,-5),
>> c(1,0,0,-1,0,0,0),
>> c(-2,-2,0,-2,2,2,2),
>> c(-2,1,0,1,0,0,0),
>> c(0,-1,0,1,0,0,0))
>>
>> should consist of orthogonal elements (as can be shown using %*%
>> on the individual columns).
>> However, when I use
>>
>> linhyp=linear.hypothesis(model, "explanatory.variable", P=P)
>>
>> I get an error saying
>>
>> Error in linear.hypothesis.mlm(mult1, "logdiv", P = P) :
>> The error SSP matrix is apparently of deficient rank = 4 < 6
>>
>> Which I interpret as there are too many non-zero rows in the matrix, P.
>>
>> Is that correct? And how can I assess if the matrix is orthogonal
>> (given that it is non-symmetrical, 
>> hence det(P) and other matrix operations won?t work)
> 
> The matrix has rank 4 (not 6 as I suppose you intended):
> 
> svd(P)$d
> # [1] 9.123340e+00 3.280954e+00 3.000000e+00 1.732051e+00
> # [5] 2.754966e-16 1.315742e-16
> 
> The last two eigenvalues are effectively 0.
> 
> Also, as I see it the columns of P are not all orthognal to each
> other by pairs:
> 
> for(i in (1:5)){for(j in ((i+1):6)) print(c(i,j,sum(P[,i]*P[,j])))}
> # [1] 1 2   0
> # [1] 1 3   1
> # [1] 1 4   0
> # [1] 1 5  -3
> # [1] 1 6   1
> # [1] 2 3   0
> # [1] 2 4 -28
> # [1] 2 5   0
> # [1] 2 6   0
> # [1] 3 4   0
> # [1] 3 5  -3
> # [1] 3 6  -1
> # [1] 4 5   0
> # [1] 4 6   0
> # [1] 5 6   0
> 
> Am I using the right P?
> 
>  P
> #      [,1] [,2] [,3] [,4] [,5] [,6]
> # [1,]    1    2    1   -2   -2    0
> # [2,]   -1    2    0   -2    1   -1
> # [3,]    0    2    0    0    0    0
> # [4,]    0    2   -1   -2    1    1
> # [5,]    0    2    0    2    0    0
> # [6,]    0   -5    0    2    0    0
> # [7,]    0   -5    0    2    0    0
> 
> 
>> Many thanks for your help!
>>
>> Best wishes
>> Christoph.
> 
> --------------------------------------------------------------------
> E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
> Fax-to-email: +44 (0)870 094 0861
> Date: 24-Jul-08                                       Time: 17:16:41
> ------------------------------ XFMail ------------------------------
> 
> .
>



More information about the R-help mailing list