Как интерпретировать QQ-график p-значений

17

Я занимаюсь изучением заболеваний GWAS SNP с помощью программного обеспечения под названием plink ( http://pngu.mgh.harvard.edu/~purcell/plink/download.shtml ).

С результатами ассоциации я получаю p-значения для всех SNP, которые были проанализированы. Теперь я использую QQ-график этих значений p, чтобы показать, отличается ли очень низкое значение p от ожидаемого распределения значений p (равномерное распределение). Если значение p отклоняется от ожидаемого распределения, можно «назвать» это значение p для статистически значимого значения.

Как вы можете видеть на графике QQ, на верхнем хвостовом участке последние 4 точки довольно сложно интерпретировать. Две из последних точек серого цвета указывают на то, что эти p-значения находятся в ожидаемом распределении p-значений, а два других - нет.

Теперь, как интерпретировать это, последние две точки имеют более низкие значения p, но не являются «значимыми» в соответствии с QQ-графиком, в то время как две другие точки с более высокими значениями p являются «значимыми»? Как это может быть правдой?

введите описание изображения здесь

расширитель
источник
6
Одна проблема с использованием графиков QQ для интерпретации GWAS состоит в том, что значения p не являются независимыми друг от друга, и, на самом деле, наиболее экстремальные значения p очень вероятно коррелированы. Я предполагаю, что ваши первые четыре попадания, вероятно, находятся на одной хромосоме и достаточно близки друг к другу, что LD вызывает корреляцию между ними. Если бы вы запустили тест, который дал второе наименьшее условное значение p для SNP с наименьшим p-значением, я предполагаю, что его p-значение упало бы в неисключительный диапазон. То же самое могло бы случиться со многими другими очевидными хитами.
Сэм Диксон
3
Я уже сделал это, я сократил набор данных SNP, чтобы получить только независимые SNP (используя r-квадрат 0,8 в качестве отсечки). Этот QQ-график показывает результаты независимых SNP или SNP в LD <0,8.
eXpander
1
Самый низкий SNP соответствует хромосоме 6, второй - хромосоме 2, третий - хромосоме 5, четвертый - хромосоме 9, так что я не уверен, что LD - проблема здесь.
eXpander
1
Могу я спросить тебя, как ты сделал этот заговор? Я могу получить что-то похожее, но со значениями хи-квадрат или с p-значениями, но без серой тени, и мне нужно одно с p-значениями и серой тенью. Если бы вы могли поделиться кодом, который вы использовали, было бы здорово. Благодарю.
Алейкс Арнау
Здесь folk.uio.no/tores/Publications_files/… является классическим документом по этой проблеме.
kjetil b halvorsen

Ответы:

5

Хорошая ссылка на анализ p-значения графиков [1].

Результат, который вы видите, может быть обусловлен тем фактом, что сигнал / эффекты существуют только в некотором подмножестве тестов. Они находятся над полосами принятия. Отклонение только p-значения за пределами полос действительно может быть оправдано, но, возможно, что более важно, вы должны решить, какой критерий ошибки вы хотите контролировать при выборе процедуры выбора (FWER, FDR). Вы можете обратиться к [2] за этим выбором и ссылками там для выбора подходящей процедуры множественного тестирования.

[1] Шведер Т. и Э. Спйотволл. «Графики P-значений для одновременной оценки множества тестов». Biometrika 69, no. 3 (декабрь 1982 г.): 493–502. DOI: 10.2307 / 2335984.

[2] Розенблатт, Джонатан. «Практическое руководство по множественным ошибкам тестирования». ArXiv e-print. Тель-Авивский университет, 17 апреля 2013 г. http://arxiv.org/abs/1304.4920 .

JohnRos
источник
1

Это старый вопрос, но я нашел его полезным при первой интерпретации QQPlots. Я думал, что добавлю к этим ответам на случай, если больше людей наткнуться на это в будущем.

Мне показалось немного сложным понять, что это за точки? Я обнаружил, что переход к коду облегчил задачу.

Вот некоторый код R, который я адаптировал, GWASTools::qqPlotкоторый реализует QQPlot в 3 строки:

simpleQQPlot = function (observedPValues) {
  plot(-log10(1:length(observedPValues)/length(observedPValues)), 
       -log10(sort(observedPValues)))
  abline(0, 1, col = "red")
}

Вот пример. У вас есть 5 р-значений. simpleQQPlot сгенерирует 5 соответствующих значений из равномерного распределения между 0 и 1. Это будут: .2 .4 .6 .8 и 1. Таким образом, simpleQQPlot ожидает, что самое низкое значение p будет около .2, а самое высокое - около. 1. simpleQQPlot отсортирует ваши значения и соединит каждое с соответствующим сгенерированным значением. Таким образом, .2 будет в паре с вашим самым низким значением, 1 с вашим самым высоким и так далее. Затем эти парные значения строятся (после взятия отрицательных логарифмов), где X - это сгенерированное значение, а Y - парное наблюдаемое значение. Если ваши наблюдаемые значения также получены из нормального распределения, то точки должны примерно лежать на прямой линии. Из-за сортировки точки всегда будут монотонно увеличиваться. Таким образом, каждая последующая точка будет иметь большую X и большую или равную Y.

Таким образом, в приведенном выше исходном примере 9 997-е отсортированное значение p было около 5,2, но ожидалось, что оно будет около 4,1, если следовать нормальному распределению. (Примечание: на самом деле я не уверен, сколько значений p было нанесено выше - я только предположил 10k).

Брек
источник