r-为什么adonis函数DF随不同因素组合而变化

  • 本文关键字:组合 变化 adonis DF 函数 r vegan
  • 更新时间 :
  • 英文 :

> data(dune) 
> data(dune.env)  
> str(dune.env)  
'data.frame':   20 obs. of  5 variables:
$ A1        : num  2.8 3.5 4.3 4.2 6.3 4.3 2.8 4.2 3.7 3.3 ...
$ Moisture  : Ord.factor w/ 4 levels "1"<"2"<"4"<"5": 1 1 2 2 1 1 1 4 3 2 ...
$ Management: Factor w/ 4 levels "BF","HF","NM",..: 4 1 4 4 2 2 2 2 2 1 ...
$ Use       : Ord.factor w/ 3 levels "Hayfield"<"Haypastu"<..: 2 2 2 2 1 2 3 3 1 1 ...
$ Manure    : Ord.factor w/ 5 levels "0"<"1"<"2"<"3"<..: 5 3 5 5 3 3 4 4 2 2 ...

如上所示,当我运行时,湿气有四组,管理有四组。Manure有五组:

adonis(dune ~ Manure*Management*A1*Moisture, data=dune.env, permutations=99)
Call:
adonis(formula = dune ~ Manure * Management * A1 * Moisture,      data = dune.env, permutations = 99) 
Permutation: free
Number of permutations: 99
Terms added sequentially (first to last)
Df SumsOfSqs MeanSqs F.Model      R2 Pr(>F)
Manure             4    1.5239 0.38097 2.03088 0.35447   0.13
Management         2    0.6118 0.30592 1.63081 0.14232   0.16
A1                 1    0.3674 0.36743 1.95872 0.08547   0.21
Moisture           3    0.6929 0.23095 1.23116 0.16116   0.33
Manure:Management  1    0.1091 0.10906 0.58138 0.02537   0.75
Manure:A1          4    0.3964 0.09909 0.52826 0.09220   0.91
Management:A1      1    0.1828 0.18277 0.97431 0.04251   0.50
Manure:Moisture    1    0.0396 0.03963 0.21126 0.00922   0.93
Residuals          2    0.3752 0.18759         0.08727       
Total             19    4.2990                 1.00000

为什么DF of Management不是3(4-1(?

这是一个一般的答案,而不是一个具体的答案。

您的公式Moisture*Management*A1*Manure对应于具有160(!(个预测因子(2*4*4*5(的线性模型:

dim(model.matrix(~Moisture*Management*A1*Manure, dune.env))

adonis在内部建立了这个模型矩阵,并用它来构造用于计算排列统计的机器。当存在预测因子的多重共线组合时,它会减少足够的列,以使问题再次得到定义。删除列的详细规则取决于列的顺序;如果您重新排序问题中的因素,您将看到报告的Df发生变化。

值得一提的是,我认为df计算根本不会改变统计结果——统计数据是基于排列得出的分布,而不是基于依赖于df的分析计算。

Ben Bolker做对了。如果你只看ManagementManure,而忽略了所有其他变量,你会看到:

> with(dune.env, table(Management, Manure))
Manure
Management 0 1 2 3 4
BF 0 2 1 0 0
HF 0 1 2 2 0
NM 6 0 0 0 0
SF 0 0 1 2 3

查看只有一个非零大小写的行Management NM和列Manure 0。这意味着Management NMManure 0是同义词,是同一事物(或"别名"(。在你的模型中有了Manure之后,Management只有三个新的级别,因此有2个d.f.。如果你按相反的顺序做,首先有Management,那么你只有四个你还不知道的级别Manure,这将给你3个d.f.的Manure

尽管你确实对你的模型进行了过度框架化,但如果只使用这两个变量,你也会得到相同的结果。比较型号:

adonis2(dune ~ Manure + Management, data=dune.env)
adonis2(dune ~ Management + Manure, data=dune.env)

最新更新