Неожиданная выходная таблица для permanova (adonis2 в r) для проверки взаимодействия

Я заржавел со своими знаниями статистики, пожалуйста, поправьте меня, если я использую неправильную терминологию или что-то неправильно понимаю.

Я использую 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? Есть ли ограничения на независимые переменные?

Каково содержимое вашей переменной Area? Возможно, включение некоторых примеров данных в ваш вопрос облегчит ответ на этот вопрос.

xilliam 20.10.2022 10:24

Привет спасибо! Я только что добавил некоторые описания для независимых и зависимых переменных.

locopoko 20.10.2022 11:04

Чтобы понять размер выборки ваших данных, не могли бы вы описать таблицу, созданную table(Type0$Season, Type0$Area).

xilliam 20.10.2022 12:01
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
119
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что короткий ответ заключается в том, что ваша модель содержит высокую степень мультиколинеарности, потому что все ваши значения «сентябрь» пришли из «Атлантики».

Другими словами, дополнительный фактор «Площадь» не дает дополнительной информации, поэтому 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 без проверки термина взаимодействия, используя оператор + вместо *, он все равно пропускает определенные факторы. Думаю, мне придется тщательно выбирать факторы, которые я тестирую.

locopoko 23.10.2022 07:27

Другие вопросы по теме

Похожие вопросы

R: Как вставлять и повторять столбцы между существующими столбцами и называть их соответствующим образом
Как получить имя столбца выбранного максимального/минимального значения (т.е. второго по величине/наименьшего) в строке с помощью dplyr?
Добавление столбца к данным, который ищет список слов и добавляет их, если они найдены
Разделите и сохраните фрейм данных в несколько файлов csv в зависимости от количества строк
Проблема с as.formula() или формулой() в lmer в пределах "by" data.table
Альтернатива pivot_wider для большого набора данных
В R, как изменить/переназначить элемент списка, используя индекс?
Удалить строки на основе определенного количества NA и для определенной группы в R
Ggplot 2 отсекает конец оси x, когда легенда находится вверху
Как построить в R регрессионные остатки по числовой переменной в соответствии с категориями столбца?