我使用 Bray-Curtis 在社区数据和环境矩阵(包含两个水平和 6 个连续变量的因子)上运行 adonis,我总是取 1 df,但事实并非如此。这里可能有一个错误。
另请参阅 adonis 中的示例
data(dune)
data(dune.env)
str(dune.env)
adonis(dune ~ Management*A1, data=dune.env, permutations=99)
虽然 A1 是一个数值变量,但结果提供了 1 个 df。
我使用 Bray-Curtis 在社区数据和环境矩阵(包含两个水平和 6 个连续变量的因子)上运行 adonis,我总是取 1 df,但事实并非如此。这里可能有一个错误。
另请参阅 adonis 中的示例
data(dune)
data(dune.env)
str(dune.env)
adonis(dune ~ Management*A1, data=dune.env, permutations=99)
虽然 A1 是一个数值变量,但结果提供了 1 个 df。
在模型中:
> adonis(dune ~ Management*A1, data=dune.env, permutations=99)
Call:
adonis(formula = dune ~ Management * A1, 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)
Management 3 1.4686 0.48953 3.2629 0.34161 0.01 **
A1 1 0.4409 0.44089 2.9387 0.10256 0.02 *
Management:A1 3 0.5892 0.19639 1.3090 0.13705 0.21
Residuals 12 1.8004 0.15003 0.41878
Total 19 4.2990 1.00000
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
主效应使用A1
单一自由度,因为它是一个连续变量。Management
和之间的交互A1
使用了 3 个额外的自由度,因为 的A1
每个级别都有一个额外的“效果” Management
。
这一切都在意料之中,而且这个模型肯定没有说明任何错误adonis()
。
重要的是,您必须确保因子变量被编码为因子,例如,如果类别被编码为整数,那么 R 仍会将这些变量解释为连续/数字。"factor"
如果被迫上课,它只会将它们解释为因素。检查 的输出str(df)
,您的df
数据框在哪里包含预测变量(协变量;右侧的东西),并确保每个因子变量都属于适当的类别。例如,数据是:~
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 ...
这表明这Management
是一个因子,A1
是数字(它是 A1 土壤层的厚度),其余变量是有序因子(但仍然是因子;它们在 R 的 omdel 公式基础设施中正常工作)。