简而言之-您无法拟合您要拟合的模型……至少如果我正确理解您的数据的话。我的理解是你有类似的东西:
dat <- data.frame(size = rnorm(27), 基因型 = gl(9,3), class = gl(3, 9))
> dat <- data.frame(size = rnorm(27), genotype = gl(9,3), class = gl(3, 9))
> dat
size genotype class
1 1.44189249 1 1
2 1.05766532 1 1
3 0.08133568 1 1
4 0.36642288 2 1
5 0.93266571 2 1
6 -0.64031787 2 1
7 0.33361892 3 1
8 0.53315507 3 1
9 0.26851394 3 1
10 0.05062280 4 2
11 -0.30924511 4 2
12 -0.61460429 4 2
13 -0.18901238 5 2
14 0.58881858 5 2
15 0.58625502 5 2
16 0.52002793 6 2
17 1.23862937 6 2
18 -2.02333160 6 2
19 -0.09918607 7 3
20 0.65947932 7 3
21 -0.65440238 7 3
22 0.10923036 8 3
23 0.76845484 8 3
24 -0.24804574 8 3
25 -0.30890950 9 3
26 -2.82056870 9 3
27 0.56828147 9 3
(我主要关注的是基因型和类别之间的关系——不是每个基因型*类别组合的大小的实际值或样本大小)
如果每个基因型完全包含在单个类中,那么您无法将基因型效应与类效应分开。希望这对你有意义——如果不是让我用一个更小的例子来说明的话。首先——因为每个基因型完全属于一个类别,我们无法适应交互——这根本没有意义。如果基因型可以是至少两个类别的一部分,那么这种相互作用将很有用,因为它允许我们根据观察的类别为基因型赋予不同的效果。但是由于每个基因型都只属于一个类别......用相互作用拟合模型已经过时了。
现在看看为什么我们不能适应类效应,只需考虑包含基因型 1-3 的类 1。需要认识到的是,对于线性模型(ANOVA 只是线性模型的一个特例),我们建模的是不同组中的条件均值——如果可能,我们会尝试将其划分为某些效果。所以任何给我们相同组均值的模型本质上是等价的。假设第 1 类的影响是 c,基因型 1-3 的影响是 x、y 和 z(分别)。那么组 genotype1/class1 = c+x,对于 genotype2/class1 = c+y,对于 genotype3/class1 = c+z 的值。但请注意,我们可以很容易地说第一类效应是 0,然后说基因型 1-3 的效应是 c+x、c+y、c+z(分别)。所以类在这种情况下完全没用。由于基因型完全嵌套在类中,因此无法分离类效应。因此,如果我们想拟合一个完全固定的效应模型,我们只能拟合一个对基因型具有单独效应的模型。