Próbuję zastosować dokładny test Fishera w symulowanym problemie genetycznym, ale wartości p wydają się być przekrzywione po prawej stronie. Będąc biologiem, chyba brakuje mi czegoś oczywistego dla każdego statystyki, więc byłbym bardzo wdzięczny za twoją pomoc.
Moja konfiguracja jest następująca: (konfiguracja 1, marginesy nie są ustalone)
Dwie próbki 0 i 1 są losowo generowane w R. Każda próbka n = 500, prawdopodobieństwo próbkowania 0 i 1 są równe. Następnie porównuję proporcje 0/1 w każdej próbce z dokładnym testem Fishera (właśnie fisher.test
; wypróbowałem także inne oprogramowanie z podobnymi wynikami). Pobieranie próbek i testowanie powtarza się 30 000 razy. Wynikowe wartości p są podzielone w następujący sposób:
Średnia wszystkich wartości p wynosi około 0,55, 5 percentyl przy 0,0577. Nawet rozkład wydaje się nieciągły po prawej stronie.
Czytałem wszystko, co mogłem, ale nie znajduję żadnych oznak, że takie zachowanie jest normalne - z drugiej strony są to tylko symulowane dane, więc nie widzę żadnych źródeł żadnych stronniczości. Czy brakuje mi korekty? Zbyt małe próbki? A może nie powinien być równomiernie rozłożony, a wartości p są interpretowane inaczej?
Czy powinienem powtórzyć to milion razy, znaleźć kwantyl 0,05 i użyć tego jako wartości odcięcia istotności, gdy zastosuję to do rzeczywistych danych?
Dzięki!
Aktualizacja:
Michael M zasugerował naprawienie krańcowych wartości 0 i 1. Teraz wartości p dają znacznie ładniejszy rozkład - niestety nie jest on jednolity ani żadnego innego kształtu, który rozpoznaję:
dodanie faktycznego kodu R: (setup 2, poprawiono marginesy)
samples=c(rep(1,500),rep(2,500))
alleles=c(rep(0,500),rep(1,500))
p=NULL
for(i in 1:30000){
alleles=sample(alleles)
p[i]=fisher.test(samples,alleles)$p.value
}
hist(p,breaks=50,col="grey",xlab="p-values",main="")
Ostateczna edycja:
jak whuber wskazuje w komentarzach, obszary wyglądają po prostu zniekształcone z powodu binowania. Dołączam wykresy QQ dla zestawu 1 (wolne marginesy) i zestawu 2 (stałe marginesy). Podobne wykresy widać w poniższych symulacjach Glena, a wszystkie te wyniki wydają się raczej jednolite. Dzięki za pomoc!
źródło
Odpowiedzi:
Problem polega na tym, że dane są dyskretne, więc histogramy mogą wprowadzać w błąd. Symulowałem kodowanie za pomocą wykresów qq, które pokazują przybliżony równomierny rozkład.
źródło