Mam dane pokazujące wyniki egzaminu wstępnego do strażaka. Testuję hipotezę, że wyniki egzaminów i pochodzenie etniczne nie są od siebie niezależne. Aby to przetestować, przeprowadziłem test chi-kwadrat Pearsona w R. Wyniki pokazują, czego się spodziewałem, ale dało ostrzeżenie, że „ In chisq.test(a) : Chi-squared approximation may be incorrect
.”
> a
white black asian hispanic
pass 5 2 2 0
noShow 0 1 0 0
fail 0 2 3 4
> chisq.test(a)
Pearson's Chi-squared test
data: a
X-squared = 12.6667, df = 6, p-value = 0.04865
Warning message:
In chisq.test(a) : Chi-squared approximation may be incorrect
Czy ktoś wie, dlaczego dał ostrzeżenie? Czy to dlatego, że używam niewłaściwej metody?
r
categorical-data
chi-squared
small-sample
error-message
użytkownik1883491
źródło
źródło
Odpowiedzi:
Dało to ostrzeżenie, ponieważ wiele oczekiwanych wartości będzie bardzo małych i dlatego przybliżenia p mogą być nieprawidłowe.
W
R
można użyćchisq.test(a, simulate.p.value = TRUE)
do symulacji wartości p.Jednak przy tak małych rozmiarach komórek wszystkie szacunki będą złe. Dobrze byłoby po prostu przetestować pozytywnie i nieudane (usuwając „no show”) albo z chi-kwadrat lub regresją logistyczną. Rzeczywiście, ponieważ jest całkiem jasne, że ocena pozytywna / negatywna jest zmienną zależną, regresja logistyczna może być lepsza.
źródło
simulate.p.value = TRUE
robi po dodaniuchisq.test
?simulate.p.value = TRUE
używa symulacji zależnej od marginesów , więc jest to naprawdę wersja dokładnego testu Fishera.Problem polega na tym, że przybliżenie chi-kwadrat do rozkładu statystyki testowej opiera się na mniej więcej normalnym rozkładzie zliczeń. Jeśli wiele oczekiwanych liczb jest bardzo małych, przybliżenie może być słabe.
Zauważ, że faktyczny rozkład statystyki chi-kwadrat dla niezależności w tabelach kontyngencji jest dyskretny, a nie ciągły.
Kategoria noshow będzie dużym czynnikiem przyczyniającym się do problemu; jedną rzeczą do rozważenia jest połączenie noshow i fail. Nadal dostaniesz ostrzeżenie, ale nie wpłynie to prawie tak bardzo na wyniki, a rozkład powinien być dość rozsądny (zasada stosowana przed wydaniem ostrzeżenia jest zbyt surowa).
Ale w każdym razie, jeśli chcesz uwarunkować marginesy (tak jak w przypadku testu dokładnego Fishera), możesz bardzo łatwo poradzić sobie z problemem w R; ustaw
simulate.p.value
argument naTRUE
; wtedy nie jesteście zależni od przybliżenia chi-kwadrat do rozkładu statystyki testowej.źródło
W przypadku tak małych obliczeń można użyć dokładnego testu Fishera:
źródło
Zobacz sekcję „Założenia” artykułu testowego chi-kwadrat Pearsona .
Krótko mówiąc, gdy liczba komórek w tabeli jest mniejsza niż 5, wówczas jedno z założeń jest błędne. Myślę, że o to chodzi w komunikacie o błędzie. W połączonym artykule można także znaleźć informacje o korekcie, którą można zastosować.
źródło
Twoje główne pytanie dotyczy wielkości próby, ale widzę, że porównuje się więcej niż dwie grupy. Jeśli wartość p z testu wynosi 0,05 lub mniej, interpretacja wyników byłaby trudna. Dlatego udostępniam krótki skrypt, którego używam w takich sytuacjach:
Ten kod wygeneruje zarówno chi-kwadrat Pearsona, jak i chi-kwadrat Fishera. Daje liczby, a także proporcje każdego z wpisów tabeli. W oparciu o znormalizowane wyniki wartości resztkowych lub wartości Z, tj.
Jeśli jest poza zakresem | 1,96 | tj. mniej niż -1,96 lub więcej niż 1,96, to jest to znaczące p <0,05. Znak wskazywałby wtedy, czy pozytywnie, czy negatywnie.
źródło