Автор и сопровождающий: Huang Lin: [email protected]
ANCOMBC - это пакет, содержащий дифференциальное изобилие (DA) и корреляционный анализ данных микробиома. В частности, пакет включает в себя анализ композиций микробиомов с коррекцией 2 (Ancom-BC2), анализ композиций микробиомов с коррекцией смещения (ANCOM-BC) и анализ состава микробиомов (ANCOM) для анализа DA и Sparse Acvatation корреляций между микробиомами (SECOM) для анализа корреляции. Данные микробиома, как правило, подвергаются двум источникам смещений: неравные фракции выборки (специфичные для образца смещения) и эффективность дифференциального секвенирования (специфические для таксонов смещения). Методологии, включенные в пакет ANCOMBC, предназначены для исправления этих смещений и статистически построить последовательные оценки.
if ( ! requireNamespace( " BiocManager " , quietly = TRUE ))
install.packages( " BiocManager " )
BiocManager :: install( " ANCOMBC " )
library( ANCOMBC )
? ancombc2
? ancombc
? ancom
? secom_linear
? secom_dist
1. Мы поддерживаем тест на взаимодействие сейчас!
Новые версии ancom
, ancombc
и ancombc2
поддерживают включение терминов взаимодействия в анализ. Проверьте последние виньетки для подробного руководства.
2. Анализ чувствительности необходим!
Для пользователей: если основное внимание вашего исследования не является властью, мы настоятельно рекомендуем включить анализ чувствительности (настройки по умолчанию), поскольку он значительно снижает ложные срабатывания.
Для исследователей: мы отметили несколько недавних работ, критикующих Ancom-BC2 за то, что он не контролирует ложные позитивы. Тем не менее, эти критические замечания не смогли объяснить нашу функцию анализа чувствительности. Сравнение Ancom-BC2 без использования его встроенных функций, таких как анализ чувствительности, не является справедливой оценкой. Мы подчеркиваем этот момент в нашем последнем обновлении.
1. В: Каковы различия между formula
и group
аргументами в ancombc
и ancombc2
?
A: formula
и group
аргументы служат разным целям в функциях ancombc
и ancombc2
. Вот разрушение их различий:
formula
: Этот аргумент используется для указания переменных в вашем эксперименте, которые могут потенциально влиять на микробные численность. Важно включить все соответствующие переменные в formula
, чтобы обеспечить правильную корректировку и точные результаты. Например, если у вас есть непрерывная переменная, такая как age
, в качестве основной интересной переменной, и у вас есть дополнительные категориальные переменные, которые требуют корректировки, но не связаны напрямую с вашим вопросом исследования, вы можете включить их в formula
оставляя group
как NULL.
group
: аргумент group
не является обязательным и должен быть указан только в том случае, если вы хотите обнаружить структурные нули (тест на присутствие/отсутствие) или провести многогрупповые сравнения, такие как глобальный тест, парное направление, тест типа Даннетта или тест тренда Полем Если ваша интересная переменная представляет собой категориальную переменную с более чем тремя уровнями, и вы хотите провести многогрупповые сравнения, вы должны включить аргумент group
. Важно отметить, что group
не такая же, как main_var
в ancom
. В ancombc
и ancombc2
group
используется для многогрупповых сравнений и коррекции p-значений для множественных сравнений.
Помните, чтобы не включать main_var
в adj_formula
в ancom
, но всегда включайте group
в formula
или fix_formula
(в ancombc
и ancombc2
соответственно), если group
не является нулевой. Это гарантирует, что соответствующие корректировки и сравнения сделаны в анализе.
2. В: Почему некоторые таксоны отсутствуют из первичных результатов?
A: Есть несколько причин, по которым определенные таксоны могут отсутствовать из первичных результатов в ancombc
или ancombc2
. Вот объяснение:
Исключение распространенности: таксоны с распространенностью ниже указанного порога ( prv_cut
) будут исключены из анализа. Значение prv_cut
определяет минимальную распространенность, необходимую для рассмотрения таксона в анализе. Если распространенность таксона падает ниже этого порога, оно не будет включено в основные результаты.
Структурные нули: таксоны, которые демонстрируют структурные нули, что означает, что они постоянно имеют нулевые показатели во всех образцах, будут считаться значимыми только в результате теста на наличие/отсутствия. Методологии Ancom-BC и Ancom-BC2 не предназначены для выявления значительных различий в таксонах со структурными нулями. В результате эти таксоны суммируются отдельно и не включены в первичные результаты ancombc
или ancombc2
.
Чтобы получить доступ к результатам теста на присутствие/отсутствие, вы можете обратиться к выходу zero_ind
. Это предоставит информацию об таксонах, которые демонстрируют структурные нули.
3. В: В первичных результатах, что lfc_(Intercept)
, lfc_groupB
и lfc_groupC
представляют, если у меня есть группа group
переменной с категориями A
, B
и C
?
A: В первичных результатах термины lfc_groupB
и lfc_groupC
представляют изменения в складке log (LOGFC) относительно эталонной группы, которая по умолчанию является группой A
Эти значения logFC указывают разницу в изобилии между группой B
и группой A
, а также между группой C
и группой A
соответственно.
С другой стороны, lfc_(Intercept)
относится к изменению логарифмического сгиба грандиозного среднего, которое не может быть параметром особого интереса в этом контексте.
Стоит отметить, что если вы хотите изменить эталонную группу, вы можете использовать функцию factor
в R, чтобы соответствующим образом перестроить уровни group
переменной.
4. В: Я столкнулся с сообщением об ошибке, в котором говорилось, что «ранг» должен быть значением от «TaxomonomyRanks ()». Что это значит и как я могу его разрешить?
A: Сообщение об ошибке «Ранг» должен быть значением от «TaxomonomyRanks» () », как обычно происходит, когда имена рангов в вашем tax_table
не соответствуют должным образом. Чтобы решить эту проблему, рекомендуется использовать функцию taxonomyRanks(se)
, где se
является вашим объектом tse
.
Во -первых, убедитесь, что названия рангов в вашем tax_table
правильно названы одним из стандартных таксономических рангов, таких как «Королевство», «Phylum», «Class», «Порядок», «Семейство», «род» или «виды ". Если имена рангов в настоящее время помечены как нечто другое, например, «TA1», «TA2», «TA3» и т. Д., Вам нужно будет обновить их соответственно.
Эта проблема обычно возникает, когда tax_table
сформируется из data.frame
вместо matrix
. Следовательно, важно убедиться, что имена рангов будут правильно назначены, прежде чем продолжить анализ.
После того, как вы обновили имена рангов в своем tax_table
, вы можете использовать функцию ancombc2
, указав желаемый таксономический уровень, используя аргумент tax_level
(например, «род»). Это позволит вам провести статистический анализ ваших данных микробиома на указанном таксономическом уровне.
5. В: Я столкнулся с проблемой при использовании rand_formula
в ancombc2
. Каков правильный синтаксис для определения случайных эффектов?
A: При указании случайных эффектов с использованием rand_formula
в ancombc2
важно следовать синтаксическим соглашениям, используемым в пакете lmerTest
. Обратите пристальное внимание на размещение скобок и вертикальных батончиков .
Чтобы правильно указать случайный эффект субъекта, синтаксис должен быть в форме "(1|subjid)"
, где subjid
представляет имя переменной для идентификатора субъекта. Этот синтаксис гарантирует, что случайный субъектный эффект правильно учитывается в анализе.
С другой стороны, неверно использовать rand_formula
в качестве "1|subjid"
или "(subjid)"
для определения случайных эффектов. Правильный синтаксис должен всегда включать в себя скобки вокруг случайного эффекта и вертикальную полосу, чтобы отделить его от фиксированных эффектов.
Используя правильный синтаксис для определения случайных эффектов, вы сможете точно включить эти эффекты в свой анализ ancombc2
.
6. В: Каковы различия между первичными результатами и результатами теста типа Даннетта в Ancom-BC2?
A: Основные результаты и результаты теста типа Dunnett в Ancom-BC2 предоставляют информацию о различных таксонах, но существуют различия в коррекции P-значений.
В первичных результатах значения P корректируются по всем таксонам, что означает, что они учитывают множественные сравнения между различными таксонами. Эта коррекция помогает контролировать ложную положительную ставку при определении значимости отдельных таксонов.
С другой стороны, тест типа Даннетта не только исправляет значения P через таксоны, но и исправляет множественные сравнения между группами. В частности, он сравнивает изобилие каждого таксона в группах B
и C
с эталонной группой A
Коррекция для множественных сравнений в типе теста Даннетта приводит к более консервативному результату, что снижает вероятность ложноположительных результатов.
Следовательно, в то время как как основные результаты, так и тест типа Даннетта предоставляют информацию о дифференциально распространенных таксонах, результаты теста типа Даннетта предлагают дополнительный контроль для множественных сравнений, что делает их более консервативными и надежными.
7. В: Может ли функция ancombc
или ancombc2
обрабатывать термины взаимодействия в анализе?
A: Да, новые версии ancom
, ancombc
и ancombc2
поддерживают включение терминов взаимодействия в анализ.
8
A: Методология Ancom-BC может применяться к другим типам данных, если они считаются композиционными. Тем не менее, важно знать, что методология была в основном сравнивана и проверена с использованием данных микробиома. Для получения дополнительных обсуждений вы можете обратиться к этому посту.
9. В: Что означает «не позитивная определенная матрица» для подгонки модели смешанных эффектов ancombc2
? Как я могу отладить эту проблему?
A: Сообщение об ошибке «Не положительная определенная матрица» указывает на то, что матрица корреляции, используемая в модели смешанных эффектов, не является положительной определенной. Положительная определенная матрица - это квадратная матрица, где все собственные значения являются положительными. Эта ошибка обычно возникает, когда возникает проблема со спецификацией данных или модели.
Чтобы отлаживать эту проблему, я рекомендую подготовить модель смешанных эффектов для ваших необработанных данных, используя пакет lmerTest
в R. Используйте те же фиксированные эффекты и спецификации случайных эффектов, которые вы использовали в функции ancombc2
. Приставая модель напрямую, вы можете получить более информативные сообщения об ошибках, которые могут помочь диагностировать проблему.
Вот шаги, которые вы можете выполнить, чтобы отлаживать проблему:
lmerTest
в r: install.packages("lmerTest")
и library(lmerTest)
.ancombc2
.lmer()
из пакета lmerTest
.Следуя этим шагам, вы можете лучше понять проблему, вызывающую ошибку «не позитивная определенная матрица» и предпринять соответствующие действия для ее решения.
Если вы продолжаете столкнуться с трудностями или нуждаются в дальнейшей помощи, может быть полезно обратиться за советом к статистикам или экспертам в вашей конкретной области исследований.
10. В: Если более высокое значение LFC соответствует большему численности, почему некоторые из моих OTU/ASV -количества показали противоположные направления?
A: Важно отметить, что значения логарифмических изменений (LFC) в контексте Ancom-BC или Ancom-BC2 напрямую не отражают относительное количество (таких как пропорции) или наблюдаемые численности (такие как количество OTU или ASV) Полем Значения LFC представляют собой разницу в численности, корректируемых смещением между группами.
В Ancom-BC или Ancom-BC2 более высокое значение LFC указывает на большую разницу в численности, коррекленных с смещением между группами. Тем не менее, это не обязательно означает, что группа с более высоким LFC имеет более высокое относительное содержание или больше наблюдаемого количества для конкретного OTU или ASV.
11. В: Можете ли вы дать мне более сложный пример выполнения теста на тренд Ancom-BC2?
A: Например, при использовании теста тренда с group
переменной из 5 упорядоченных категорий ( A, B, C, D, E
) в R мы на самом деле оцениваем 4 контраста, которые являются ( BA, CA, DA, EA
) Полем Тестирование тенденции A < B < C < D < E
эквивалентно тестированию 0 < B - A < C - A < D - A < E - A
Поэтому мы можем указать матрицу контрастности следующим образом:
# B-A C-A D-A E-A
1 0 0 0
- 1 1 0 0
0 - 1 1 0
0 0 - 1 1
В r это должно быть
matrix (c( 1 , 0 , 0 , 0 ,
- 1 , 1 , 0 , 0 ,
0 , - 1 , 1 , 0 ,
0 , 0 , - 1 , 1 ),
nrow = 4 ,
byrow = TRUE )
Для более подробных обсуждений вы можете ссылаться на этот пост.
12. В: Боже, я все еще очень смущен в структурных нулевых нулях. Кто они такие? Что делают аргументы struc_zero
и neg_lb
?
О: Таксон считается, что в некоторых группах (> = 1) есть структурные нули в некоторых (> = 1), если он полностью или почти полностью отсутствует в этих группах. Например, если есть три группы, G1, G2 и G3, и количество таксона A составляет 0 в G1, но ненулевые в G2 и G3, таксон A будет содержать структурные нули в G1. В этом сценарии таксон А объявляется дифференциально распространенным между G1 и G2, G1 и G3, и, следовательно, глобально дифференцировано по отношению к переменной группы. Такие таксоны не анализируются с использованием Ancom-BC или Ancom-BC2, но результаты суммированы в zero_ind
. Вы можете рассматривать обнаружение структурных нулей как выполнение теста на присутствие/отсутствие.
Обнаружение структурных нулей основано на отдельной статье, Ancom-II. В частности, настройка neg_lb = TRUE
указывает, что оба критерия, указанные в разделе 3.2 Ancom-II, используются для обнаружения структурных нулей. В качестве альтернативы, установление neg_lb = FALSE
будет использовать только уравнение 1 в разделе 3.2 Ancom-II для объявления структурных нулей, что делает его более консервативным подходом. Поскольку таблица OTU/ASV обычно очень редкая, рекомендуется выбрать neg_lb = FALSE
чтобы предотвратить ложные открытия. Однако, если у вас есть более плотная таблица, такая как таблица уровня семейного уровня, с достаточно большим размером выборки, использование neg_lb = TRUE
может быть лучшей идеей. Важно отметить, что neg_lb
не имеет функции, если struc_zero
установлен на FALSE
. Следовательно, есть три возможные комбинации: struc_zero = FALSE
(независимо от neg_lb
), struc_zero = TRUE, neg_lb = FALSE
или struc_zero = TRUE, neg_lb = TRUE
.