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.