On Nov 8, 2011, at 12:36 PM, array chip wrote:

Sure it does, but still struggling with what is going on...

Have you considered redefining the implicit base level for "treat" so it does not create the missing crossed-category?

> test$treat2_ <- factor(test$treat, levels=c(2:7, 1) )
> lm(y~treat2_*factor(group),test)

Call:
lm(formula = y ~ treat2_ * factor(group), data = test)

Coefficients:
(Intercept) treat2_3 treat2_4 0.9292256 -0.1470106 -0.7047343 treat2_5 treat2_6 treat2_7 -0.3579398 -0.4558269 -0.5077571 treat2_1 factor(group)2 treat2_3:factor(group)2 -0.4999820 -0.5466405 0.0135963 treat2_4:factor(group)2 treat2_5:factor(group)2 treat2_6:factor(group)2 1.0087628 0.4362479 0.5402821
treat2_7:factor(group)2  treat2_1:factor(group)2
              0.2087338                       NA

All the "group-less" coefficients are for group1 , so now get a prediction for group=1:treat=2 == "Intercept", group=1:treat=3 , .... a total of 7 values.

And there are 6 predictions for group2.

The onus is obviously on you to check the predictions against the data. 'aggregate' is a good function for that purpose.


--
david.




Thanks

John

From: David Winsemius <dwinsem...@comcast.net>
To: David Winsemius <dwinsem...@comcast.net>
Cc: array chip <arrayprof...@yahoo.com>; "r-help@r-project.org" <r-help@r-project.org >
Sent: Monday, November 7, 2011 10:27 PM
Subject: Re: [R] why NA coefficients

But this output suggests there may be alligators in the swamp:

> predict(lmod, newdata=data.frame(treat=1, group=2))
        1
0.09133691
Warning message:
In predict.lm(lmod, newdata = data.frame(treat = 1, group = 2)) :
  prediction from a rank-deficient fit may be misleading

--David.
>
> --David.
>>
>> Thanks
>>
>> John
>>
>>
>> From: David Winsemius <dwinsem...@comcast.net>
>> To: array chip <arrayprof...@yahoo.com>
>> Cc: "r-help@r-project.org" <r-help@r-project.org>
>> Sent: Monday, November 7, 2011 5:13 PM
>> Subject: Re: [R] why NA coefficients
>>
>>
>> On Nov 7, 2011, at 7:33 PM, array chip wrote:
>>
>> > Hi, I am trying to run ANOVA with an interaction term on 2 factors (treat has 7 levels, group has 2 levels). I found the coefficient for the last interaction term is always 0, see attached dataset and the code below:
>> >
>> >> test<-read.table("test.txt",sep='\t',header=T,row.names=NULL)
>> >> lm(y~factor(treat)*factor(group),test)
>> >
>> > Call:
>> > lm(formula = y ~ factor(treat) * factor(group), data = test)
>> >
>> > Coefficients:
>> > (Intercept) factor(treat)2 factor(treat)3 >> > 0.429244 0.499982 0.352971 >> > factor(treat)4 factor(treat)5 factor(treat)6 >> > -0.204752 0.142042 0.044155 >> > factor(treat)7 factor(group)2 factor(treat)2:factor(group)2 >> > -0.007775 -0.337907 -0.208734 >> > factor(treat)3:factor(group)2 factor(treat)4:factor(group)2 factor(treat)5:factor(group)2 >> > -0.195138 0.800029 0.227514
>> > factor(treat)6:factor(group)2  factor(treat)7:factor(group)2
>> >                      0.331548                            NA
>> >
>> >
>> > I guess this is due to model matrix being singular or collinearity among the matrix columns? But I can't figure out how the matrix is singular in this case? Can someone show me why this is the case?
>>
>> Because you have no cases in one of the crossed categories.
>>
>> --David Winsemius, MD
>> West Hartford, CT
>>
>>
>>
>
> David Winsemius, MD
> West Hartford, CT
>
> ______________________________________________
> R-help@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.

David Winsemius, MD
West Hartford, CT




David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@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.

Reply via email to