contrasts in lm~-1+(numeric.variable)/(factor) (PR#2037)

hosking@watson.ibm.com hosking@watson.ibm.com
Wed, 18 Sep 2002 23:06:14 +0200 (MET DST)


Full_Name: J. R. M. Hosking
Version: 1.5
OS: Windows 2000
Submission from: (NULL) (198.81.209.17)


Here is a test case:

# Some arbitrary data
#
v1<-1:12
v2<-cumsum(v1)
v3<-cumsum(v2)
f<-factor(rep(c("a","b","c"),4))
y<-c(1,4,2,7,5,8,7,9,6,10,12,10)
print(cbind(y,f,v1,v2,v3))
#
# Fit a regression model with no intercept, and different slopes
# for each value of the factor
#
ans<-lm( y ~ -1 + v1/f + v2/f + v3/f, contrasts=list(f=contr.sum))
print(as.matrix(ans$coefficients))

And its output:

> # Some arbitrary data
> #
> v1<-1:12
> v2<-cumsum(v1)
> v3<-cumsum(v2)
> f<-factor(rep(c("a","b","c"),4))
> y<-c(1,4,2,7,5,8,7,9,6,10,12,10)
> print(cbind(y,f,v1,v2,v3))
       y f v1 v2  v3
 [1,]  1 1  1  1   1
 [2,]  4 2  2  3   4
 [3,]  2 3  3  6  10
 [4,]  7 1  4 10  20
 [5,]  5 2  5 15  35
 [6,]  8 3  6 21  56
 [7,]  7 1  7 28  84
 [8,]  9 2  8 36 120
 [9,]  6 3  9 45 165
[10,] 10 1 10 55 220
[11,] 12 2 11 66 286
[12,] 10 3 12 78 364

> #
> # Fit a regression model with no intercept, and different slopes
> # for each value of the factor
> #
> ans<-lm( y ~ -1 + v1/f + v2/f + v3/f, contrasts=list(f=contr.sum))
> print(as.matrix(ans$coefficients))
               [,1]
v1     1.5927715155
v2    -0.5228148121
v3     0.0718702660
v1:fa  1.3916372272
v1:fb  0.5747198574
v1:fc            NA
f1:v2 -0.2937603407
f2:v2  0.0328886311
f1:v3  0.0414907636
f2:v3  0.0003204578

Though I asked for "sum" contrasts, the v1 coefficients came back
with "treatment" contrasts.  I don't see any technical reason why
"sum" contrasts can't be computed.  Is it a bug?

Also, why should the order of the variables be reversed (f1:v2 where
I would have expected v2:f1, etc.)?

By the way, S-plus refuses to fit this model at all ("Problem in
model.matrix.default(Terms, m, contrasts): Internal error: predicted 2
columns for f %in% v1, got 3).


Version information:
         _              
platform i386-pc-mingw32
arch     i386           
os       mingw32        
system   i386, mingw32  
status                  
major    1              
minor    5.1            
year     2002           
month    06             
day      17             
language R 

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._