adonis in vegan: kolejność zmiennych lub użycie warstw
On 15 lutego, 2021 by admin Używam funkcji adonis()
w vegan
pakiet w celu określenia 1) czy współwystępujące gatunki żywicieli różnią się pod względem społeczności drobnoustrojów w wielu miejscach i 2) czy miejsca są różne. Przeanalizowałem wszystkie posty w CV i SO i nie ma jasnej odpowiedzi, jak określić znaczenie wielu czynników za pomocą funkcji adonis.
Najpierw to zrobiłem, jak sugeruje https://stackoverflow.com/questions/26768779/vegan-adonis-unbalanced-design-ss-type-ii-or-iii :
gdzie jacc jest macierzą niepodobieństwa przy użyciu metryki jaccard
adonis <- adonis(jacc ~ Species + Site, data = df_compare) adonis Call: adonis(formula = jacc ~ Species + Site, data = df_compare) Permutation: free Number of permutations: 999 Terms added sequentially (first to last) Df SumsOfSqs MeanSqs F.Model R2 Pr(>F) Species 2 0.6055 0.30273 1.7690 0.04981 0.004 ** Site 4 2.1378 0.53445 3.1231 0.17587 0.001 *** Residuals 55 9.4122 0.17113 0.77432 Total 61 12.1554 1.00000 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Następnie odwróć kolejność:
adonis_2 <- adonis(jacc ~ Site + Species, data = df_compare) adonis_2 Call: adonis(formula = jacc ~ Site + Species, data = df_compare) Permutation: free Number of permutations: 999 Terms added sequentially (first to last) Df SumsOfSqs MeanSqs F.Model R2 Pr(>F) Site 4 2.4385 0.60962 3.5623 0.20061 0.001 *** Species 2 0.3048 0.15238 0.8904 0.02507 0.716 Residuals 55 9.4122 0.17113 0.77432 Total 61 12.1554 1.00000 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Ale nie wiem, jak to interpretować, ponieważ kolejność ma znaczenie i Nie jestem pewien, czy istnieją różnice między gatunkami.
Po kilku poszukiwaniach zdecydowałem się użyć warstw.
Myślę, że to znaczy: czy gatunki współwystępujące są inne, gdy porównaj tylko gatunki w tych samych miejscach.
species_adonis <- adonis(jacc ~ Species, strata = df_compare$Site, data = df_compare) species_adonis Call: adonis(formula = jacc ~ Species, data = df_compare, strata = df_compare$Site) Blocks: strata Permutation: free Number of permutations: 999 Terms added sequentially (first to last) Df SumsOfSqs MeanSqs F.Model R2 Pr(>F) Species 2 0.6055 0.30273 1.5464 0.04981 0.335 Residuals 59 11.5500 0.19576 0.95019 Total 61 12.1554 1.00000
Następnie, aby zadać pytanie o witrynę, użyłem gatunków w blokowaniu.
Myślę, że to mówi: czy witryny są różne porównując tylko ten sam gatunek
site_adonis <- adonis(jacc ~ Site, strata = df_compare$Species, data = df_compare) Call: adonis(formula = jacc ~ Site, data = df_compare, strata = df_compare$Species) Blocks: strata Permutation: free Number of permutations: 999 Terms added sequentially (first to last) Df SumsOfSqs MeanSqs F.Model R2 Pr(>F) Site 4 2.4385 0.60962 3.5761 0.20061 0.001 *** Residuals 57 9.7169 0.17047 0.79939 Total 61 12.1554 1.00000 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Mój wniosek jest taki, że społeczność drobnoustrojów na danym gatunku różni się w poszczególnych miejscach, ale społeczność drobnoustrojów nie różni się między gatunek żywiciela.
Czy moje podejście jest poprawne, czy też źle interpretuję użycie warstw (tj. blokowanie)?
Czy jest sposób na uśrednienie testów, gdy zmieniam kolejność zmiennych ?
Odpowiedź
Jak sam zauważyłeś, po uruchomieniu dwóch modeli Adonisa z odwróconymi czynnikami stałymi zobaczysz, że obie wariancja przypisane do każdego czynnika, a wartości P różnią się za każdym razem. Dzieje się tak w przypadku niezrównoważonych projektów, takich jak Twój, w których stopnie swobody związane z każdym czynnikiem są różne.
Z opisu eksperymentu wygląda to jak klasyczny przypadek zagnieżdżonego projektu, w którym Gatunek jest zagnieżdżony w Witrynie. W tym przypadku model, którego szukasz, powinien wyglądać następująco:
adonis <- adonis(jacc ~ Site / Species, strata = Site, data = df_compare)
.
Pamiętaj, że zagnieżdżenie powinno być zawarte w formułowaniu wzorcowym, jak również w warstwach (patrz odpowiedź Jari Oksanena ).
Komentarze
- czy możesz zaktualizować link do odpowiedzi Oksanen?
- Przepraszamy, nie mogę znaleźć nowego linku. Forum zostało zamknięte.
Dodaj komentarz