Я заржавел со своими знаниями статистики, пожалуйста, поправьте меня, если я использую неправильную терминологию или что-то неправильно понимаю.
Я использую Adonis для выполнения теста permanova со сценарием:
nmds.div<- adonis2(nmds.dist ~ Season*Area, data = Type0, permutations = 999, method = "bray")
Где Сезон имеет три уровня (март, май, сентябрь), а Площадь имеет два уровня (Тихий океан, Атлантический океан). Зависимая переменная представляет собой матрицу расстояний, основанную на методе Брея-Кертиса с использованием подсчетов считываний OTU. Я хочу увидеть термин взаимодействия (?) между Season и Area, но вот что я получаю:
Df SumOfSqs R2 F Pr(>F)
Season 2 6.4903 0.27066 8.9066 0.001 ***
Residual 48 17.4889 0.72934
Total 50 23.9792 1.00000
Когда я запускаю один и тот же формат кода для Cruise и Layer3, выходная таблица работает нормально, и я получаю термин взаимодействия — вероятность для Cruise:Layer3. Где Cruise имеет три уровня (KS17, KS14 и HO15), а Layer3 имеет два уровня (эйфотический, афотический).
nmds.div<- adonis2(nmds.dist ~ Cruise*Layer3, data = Type0, permutations = 999, method = "bray")
Df SumOfSqs R2 F Pr(>F)
Cruise 2 6.4903090 0.27066356 9.787264 0.001
Layer3 1 0.4029121 0.01680253 1.215168 0.311
Cruise:Layer3 2 2.1654176 0.09030381 3.265409 0.002
Residual 45 14.9206109 0.62223010 NA NA
Total 50 23.9792496 1.00000000 NA NA
Производитель стола:
table(Type0$Season, Type0$Area)
Pacific Atlantic
Mar 16 0
May 27 0
Sept 0 8
Итак, мой вопрос: почему один и тот же код работает для Cruise*Layer3, но не для Season *Area? Есть ли ограничения на независимые переменные?
Привет спасибо! Я только что добавил некоторые описания для независимых и зависимых переменных.
Чтобы понять размер выборки ваших данных, не могли бы вы описать таблицу, созданную table(Type0$Season, Type0$Area)
.
Я думаю, что короткий ответ заключается в том, что ваша модель содержит высокую степень мультиколинеарности, потому что все ваши значения «сентябрь» пришли из «Атлантики».
Другими словами, дополнительный фактор «Площадь» не дает дополнительной информации, поэтому adonis2()
отбрасывает фактор.
Чтобы понять, что я имею в виду, вот два примера смоделированных данных. Первый содержит количество ячеек, соответствующее вашим данным. Здесь вы в конечном итоге с одним фактором в результате. «Площадь» была исключена.
# fake data 1
nmds <- sample(1:1000, 51, replace = TRUE)
season <- factor(c(rep(1, 16), rep(2, 27), rep(3, 8)),
labels= c("Mar", "May", "Sept"))
area <- factor(c(rep(1,43), rep(2,8)), labels = c("Pacific", "Atlantic"))
Type0 <- data.frame(nmds = nmds, Season =season, Area=area)
# cell counts
> table(Type0$Season, Type0$Area)
Pacific Atlantic
Mar 16 0
May 27 0
Sept 0 8
nmds.div1 <- adonis2(nmds ~ Season*Area, data = Type0,
permutations = 999, method = "bray")
> nmds.div1
adonis2(formula = nmds ~ Season * Area, data = Type0, permutations = 999, method = "bray")
Df SumOfSqs R2 F Pr(>F)
Season 2 0.1720 0.02919 0.7216 0.583
Residual 48 5.7204 0.97081
Total 50 5.8924 1.00000
Во втором примере я предоставляю случайные данные в Area
, что дает вам количество больше нуля во всех ячейках таблицы. В этом сценарии факторы больше не являются избыточными. А adonis2()
возвращает оценки как для факторов, так и для взаимодействия.
# fake data 2
nmds <- sample(1:1000, 51, replace = TRUE)
season <- factor(c(rep(1, 16), rep(2, 27), rep(3, 8)),
labels= c("Mar", "May", "Sept"))
set.seed(1)
area <- factor(sample(1:2, 51, replace = TRUE), labels = c("Pacific", "Atlantic"))
Type0 <- data.frame(nmds = nmds, Season =season, Area=area)
# cell counts
> table(Type0$Season, Type0$Area)
Pacific Atlantic
Mar 11 5
May 14 13
Sept 2 6
nmds.div2 <- adonis2(nmds ~ Season*Area, data = Type0,
permutations = 999, method = "bray")
> nmds.div2
adonis2(formula = nmds ~ Season * Area, data = Type0, permutations = 999, method = "bray")
Df SumOfSqs R2 F Pr(>F)
Season 2 0.2721 0.04736 1.1661 0.313
Area 1 0.1721 0.02995 1.4747 0.233
Season:Area 2 0.0515 0.00895 0.2205 0.948
Residual 45 5.2510 0.91374
Total 50 5.7467 1.00000
Большое спасибо за подробный ответ! Я думаю, что это тоже так... даже когда я пробую adonis2 без проверки термина взаимодействия, используя оператор + вместо *, он все равно пропускает определенные факторы. Думаю, мне придется тщательно выбирать факторы, которые я тестирую.
Каково содержимое вашей переменной Area? Возможно, включение некоторых примеров данных в ваш вопрос облегчит ответ на этот вопрос.