Jak interpretować wykres QQ wartości p

17

Robię badania stowarzyszenia GWAS SNP na temat chorób przy użyciu oprogramowania o nazwie plink ( http://pngu.mgh.harvard.edu/~purcell/plink/download.shtml ).

Z wynikami asocjacji otrzymuję wartości p dla wszystkich analizowanych SNP. Teraz używam wykresu QQ tych wartości p, aby pokazać, czy bardzo niska wartość p różni się od oczekiwanego rozkładu wartości p (rozkład równomierny). Jeśli wartość p odbiega od oczekiwanego rozkładu, można „nazwać” tę wartość p dla statystycznej istotności.

Jak widać na wykresie QQ, w górnej części końca 4 ostatnie punkty są nieco trudne do interpretacji. Dwa ostatnie punkty na szaro sugerują, że te wartości p mieszczą się w oczekiwanym rozkładzie wartości p, podczas gdy pozostałe dwie nie.

Jak to interpretować, dwa ostatnie punkty mają niższe wartości p, ale nie są „znaczące” zgodnie z wykresem QQ, podczas gdy pozostałe dwa punkty z wyższymi wartościami p są „znaczące”? Jak to może być prawda?

wprowadź opis zdjęcia tutaj

eXpander
źródło
6
Jednym z problemów związanych ze stosowaniem wykresów QQ do interpretacji GWAS jest to, że wartości p nie są od siebie niezależne, i w rzeczywistości najbardziej skrajne wartości p są prawdopodobnie skorelowane. Sądzę, że twoje cztery najlepsze trafienia są prawdopodobnie na tym samym chromosomie i są na tyle blisko siebie, że LD powoduje korelację między nimi. Jeśli miałbyś uruchomić test, który dał drugą najniższą wartość p warunkowo na SNP z najniższą wartością p, domyślam się, że jego wartość p spadłaby do niecodziennego zakresu. To samo prawdopodobnie miałoby miejsce w przypadku wielu innych pozornych trafień.
Sam Dickson,
3
Już to zrobiłem, przyciąłem zestaw danych SNP, aby uzyskać tylko niezależne SNP (wykorzystując kwadrat r 0,8 jako wartość odcięcia). Ten wykres QQ pokazuje wyniki niezależnych SNP lub SNP w LD <0,8.
eXpander
1
Najniższy SNP odpowiada chromosomowi 6, drugi do chromosomu 2, trzeci do chromosomu 5, czwarty do chromosomu 9, więc nie jestem pewien, czy LD jest tutaj problemem.
eXpander
1
Czy mogę cię zapytać, jak to zrobiłeś? Mogę uzyskać coś podobnego, ale z wartościami chi-kwadrat lub z wartościami p, ale bez szarego cienia i potrzebuję jednego z wartościami p i szarym cieniem. Jeśli możesz udostępnić użyty kod, byłoby świetnie. Dzięki.
Aleix Arnau
Tutaj folk.uio.no/tores/Publications_files/… jest klasyczną kartką na ten temat.
kjetil b halvorsen

Odpowiedzi:

5

Dobrym odniesieniem do analizy wykresów wartości p jest [1].

Wynik, który widzisz, może wynikać z faktu, że sygnał / efekty istnieją tylko w niektórych podzbiorach testów. Są one napędzane powyżej pasm akceptacji. Odrzucenie tylko wartości p poza zakresami może rzeczywiście być uzasadnione, ale być może, co ważniejsze, powinieneś zdecydować, jakie kryterium błędu chcesz kontrolować przy wyborze procedury wyboru (FWER, FDR). Możesz skonsultować się z [2] w sprawie tego wyboru i odnośników w nim dotyczących wyboru odpowiedniej procedury wielokrotnego testowania.

[1] Schweder, T. i E. Spjotvoll. „Wykresy wartości P do równoczesnej oceny wielu testów.” Biometrika 69, no. 3 (grudzień 1982 r.): 493–502. doi: 10.2307 / 2335984

[2] Rosenblatt, Jonathan. „Przewodnik dla praktyków dotyczący wielokrotnych poziomów błędu testowania”. ArXiv e-print. Uniwersytet Tel Aviv, 17 kwietnia 2013 r . Http://arxiv.org/abs/1304.4920 .

JohnRos
źródło
1

To jest starsze pytanie, ale przydało mi się, gdy próbowałem interpretować QQPlots po raz pierwszy. Pomyślałem, że dodam do tych odpowiedzi, na wypadek, gdyby więcej osób natknęło się na to w przyszłości.

Trudno mi zrozumieć, co to za punkty? Odkryłem, że przejście do kodu ułatwiło zrozumienie.

Oto część kodu R, który zaadaptowałem z GWASTools::qqPlottego, który implementuje QQPlot w 3 liniach:

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

Oto przykład. Masz 5 wartości p. simpleQQPlot wygeneruje 5 odpowiadających pvalu z jednolitego rozkładu między 0 a 1. Będą to: .2 .4 .6 .8 i 1. Tak więc simpleQQPlot oczekuje, że twoja najniższa wartość p wyniesie około .2, a najwyższa będzie w pobliżu 1. simpleQQPlot posortuje wartości pv i sparuje je z odpowiednią wygenerowaną wartością. Tak więc .2 zostanie sparowany z najniższą wartością, 1 z najwyższą itd. Następnie te sparowane wartości są wykreślane (po pobraniu logów ujemnych), przy czym X jest wygenerowaną wartością, a Y jest sparowaną obserwowaną wartością. Jeśli obserwowane wartości zostały również wyciągnięte z rozkładu normalnego, wówczas punkty powinny z grubsza leżeć na linii prostej. Z powodu sortowania punkty zawsze będą rosły monotonicznie. Zatem każdy kolejny punkt będzie miał większy X i większy lub równy Y.

Tak więc w powyższym oryginalnym przykładzie 9,997-ta posortowana wartość p wynosiła około 5,2, ale oczekiwano, że wyniesie około 4,1, jeśli będzie zgodna z rozkładem normalnym. (Uwaga: tak naprawdę nie jestem pewien, ile wartości p zostało wykreślonych powyżej - po prostu zgadłem 10k).

Breck
źródło