Почему я всегда получаю 1 для df при запуске функции adonis (перманова)? - PullRequest
0 голосов
/ 26 декабря 2018

Я запускаю adonis на данных сообщества и матрице окружающей среды (которая содержит фактор двух уровней и 6 непрерывных переменных), используя Брей-Кертис, и я всегда беру 1 дф, но это не так.Возможно, здесь есть ошибка.

См. Также пример в adonis

data(dune) 
data(dune.env)  
str(dune.env)  
adonis(dune ~ Management*A1, data=dune.env, permutations=99)

Хотя A1 - это числовая переменная, результат дает 1 df.

1 Ответ

0 голосов
/ 26 декабря 2018

В модели:

> 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

main effect 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 является числовым (это толщина горизонта почвы А1), а остальные переменные упорядочены факторы (но все же факторы; они работают правильно в инфраструктуре формулы Омделя R).

...