Ostrzeżenie w R - Przybliżenie chi-kwadrat może być niepoprawne

40

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?

użytkownik1883491
źródło
2
Nigdy nie ufaj wynikowi przy tak niewielu pomiarach. Gdy w każdej kolumnie znajdują się setki osób, możesz mieć zaufanie do swoich wyników. Jednak wynik może wynikać bardziej z sąsiedztwa lub bogactwa niż z samej rasy.
Rodrigo

Odpowiedzi:

41

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 Rmoż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.

Peter Flom - Przywróć Monikę
źródło
Co właściwie simulate.p.value = TRUErobi po dodaniu chisq.test?
Al14
1
Wykorzystuje symulacje, aby znaleźć wartość p
Peter Flom - Przywróć Monikę
1
Zauważ, że simulate.p.value = TRUEużywa symulacji zależnej od marginesów , więc jest to naprawdę wersja dokładnego testu Fishera.
kjetil b halvorsen
23

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.valueargument na TRUE; wtedy nie jesteście zależni od przybliżenia chi-kwadrat do rozkładu statystyki testowej.

Glen_b
źródło
czy możesz mi wyjaśnić, dlaczego „.. przybliżenie chi-kwadrat do rozkładu statystyki testowej opiera się na mniej więcej normalnym rozkładzie liczb”? Nie rozumiem, w jaki sposób może to być prawdą, jeśli ktoś ma na przykład tabelę zdarzeń awaryjnych 2x2. W jaki sposób można (w przybliżeniu) rozkładać liczby? W jaki sposób normalnie można rozdzielić białe, czarne, hiszpańskie i azjatyckie liczby? Masz na myśli tylko trochę równy? Jak to się ma do tego pytania? : stats.stackexchange.com/questions/141407/…
Erosennin
Rozkład wielu zmiennych zmiennych losowych zliczania musi być w przybliżeniu normalny (choć będzie zdegenerowany). Zestaw obserwowanych zliczeń jest tylko pojedynczą obserwacją wektorową z tej wielowymiarowej normy - nie można ocenić rozkładu na podstawie jednej obserwacji. Aby dokonać oceny, o której mówię, musisz polegać na założeniach; względnie łatwo to zrobić dla poszczególnych komórek (tj. rozkład brzeżny dla danej komórki, poniżej wartości zerowej).
Wygląda na to, że łączysz
Po pierwsze, dziękuję za poświęcenie czasu! Mówisz więc, że liczenie „w dół” tabeli awaryjności powinno być (degeneracyjnie) wielowymiarowe normalne, jeśli spojrzymy na wiele obserwacji? Czy nie oznacza to, że zliczenia każdej komórki powinny być również normalne, a także zlicza „na boki” tabelę nieprzewidzianych zdarzeń (zakładam, że to masz na myśli przez „w poprzek”)? F. np. Komórka o oczekiwanej wartości 5, czy normalnie powinna być rozmieszczona wokół 5, prawda? Więc jeśli komórka w poprzek ma wartość 40, komórka ta powinna być normalnie rozmieszczona wokół 40, a razem wielowymiarowa normalna średnia 5 i 40, nie?
Erosennin,
1
W ogólnym przypadku ze stałymi marginesami (który miałam na myśli), układalibyśmy wszystkie zmienne w tabeli w wektorze o długości , ale leżą one w hiperpłaszczyźnie wymiaru - taka jest degeneracja. W przypadku 2x2 jest to 1 stopień swobody, a 4 liczby komórek leżą wzdłuż linii w przestrzeni 4D. Ale tak naprawdę nie ma miejsca na podanie odpowiednich szczegółów. Nadal go nie masz (choć wydaje się, że jesteś bliżej). Być może zechcesz ponownie opublikować coś w rodzaju pierwszego pytania (o sensie, w jakim wartości są w przybliżeniu normalne) jako pytania. r×crc(r1)(c1)
Glen_b
To jest ciężkie i bardzo intereseting. Jeśli kiedykolwiek mieć czas, ja zamieszczać moje pierwsze pytanie tutaj: stats.stackexchange.com/questions/142429/... .
Erosennin,
12

W przypadku tak małych obliczeń można użyć dokładnego testu Fishera:

> fisher.test(a)

        Fisher's Exact Test for Count Data

data:  a 
p-value = 0.02618
alternative hypothesis: two.sided 
Henz
źródło
3

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
6
Istnieją dwa problemy z twoją zasadą liczenia mniej niż pięciu. Po pierwsze, prawidłowe stwierdzenie odnosi się raczej do oczekiwanych zliczeń niż do rzeczywistych zliczeń. Po drugie, jest to zbyt poważne. przybliżenie często działa dobrze, nawet jeśli niewielka część oczekiwanych liczby jest mniejsza niż pięć. W tym przypadku, gdy wszystkie marginesy kolumn wynoszą pięć lub mniej, oczywiste jest, że każda oczekiwana liczba jest niewielka, dlatego zalecamy ostrożność. Ponadto korekta wspomniana w artykule w Wikipedii dotyczy tylko jednego przypadku DF; ten przypadek ma 6 DF. χ2
whuber
0

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:

# Load the required packages:
library(MASS) # for chisq
library(descr) # for crosstable

CrossTable(a$exam_result, a$ethnicity
       fisher = T, chisq = T, expected = T,
       prop.c = F, prop.t = F, prop.chisq = F, 
       sresid = T, format = 'SPSS')

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.

sresid

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.

Sadiaz
źródło