Предупреждение в R - приближение хи-квадрат может быть неправильным

40

У меня есть данные, показывающие результаты вступительного экзамена пожарного. Я проверяю гипотезу о том, что результаты экзамена и этническая принадлежность не являются взаимно независимыми. Чтобы проверить это, я выполнил тест хи-квадрат Пирсона в R. Результаты показывают, что я ожидал, но он дал предупреждение, что " 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

Кто-нибудь знает, почему он дал предупреждение? Это потому, что я использую неправильный метод?

user1883491
источник
2
Никогда не доверяйте результату с таким небольшим количеством измерений. Когда в каждой колонке сотни людей, вы можете быть уверены в своих результатах. Тем не менее, результат может быть больше из-за соседства или богатства, чем из-за самой расы.
Родриго

Ответы:

41

Это дало предупреждение, потому что многие из ожидаемых значений будут очень маленькими и, следовательно, приближения p могут быть неправильными.

В Rвы можете использовать chisq.test(a, simulate.p.value = TRUE)для имитации р значения.

Однако при таких малых размерах ячеек все оценки будут плохими. Возможно, было бы неплохо просто протестировать проход или провал (исключив «не показывать») с помощью хи-квадрат или логистической регрессии. Действительно, поскольку совершенно очевидно, что оценка прохождения / неудачи является зависимой переменной, логистическая регрессия может быть лучше.

Питер Флом - Восстановить Монику
источник
Что на самом деле simulate.p.value = TRUEделает, когда добавляется chisq.test?
Al14
1
Он использует симуляции, чтобы найти значение p
Питер Флом - Восстановить Монику
1
Обратите внимание, что simulate.p.value = TRUEиспользуется условное моделирование на маргиналах , поэтому это действительно версия точного теста Фишера.
kjetil b halvorsen
23

Проблема заключается в том, что приближение хи-квадрат к распределению тестовой статистики основано на том, что счетчики распределяются приблизительно нормально. Если многие из ожидаемых значений очень малы, аппроксимация может быть плохой.

Обратите внимание, что фактическое распределение статистики хи-квадрат для независимости в таблицах непредвиденных обстоятельств является дискретным, а не непрерывным.

Категория noshow будет большим вкладчиком в проблему; Единственное, что нужно учесть - это объединить noshow и потерпеть неудачу Вы все равно получите предупреждение, но оно не повлияет почти так же на результаты, и распределение должно быть достаточно разумным (правило, которое применяется перед выдачей предупреждения, слишком строго).

Но в любом случае, если вы хотите ограничить поля (как вы это делаете при выполнении точного теста Фишера), вы можете очень легко решить эту проблему в R; установить simulate.p.valueаргумент в TRUE; тогда вы не полагаетесь на приближение хи-квадрат к распределению статистики теста.

Glen_b - Восстановить Монику
источник
Можете ли вы объяснить мне, почему "... приближение хи-квадрат к распределению статистики теста основано на том, что счетчики примерно нормально распределены"? Я не понимаю, как это может быть правдой, если один, например, имеет таблицу непредвиденных обстоятельств 2x2. Как счет может быть (приблизительно) нормально распределен? Как можно нормально распределить количество белых, черных, испанцев и азиатов? Вы имеете в виду только слегка равны? И как это связано с этим вопросом? : stats.stackexchange.com/questions/141407/…
Еросеннин
Многомерное распределение числа случайных величин должно быть приблизительно нормальным (хотя оно будет вырожденным). Множество наблюдаемых отсчетов - это всего лишь одно векторное наблюдение из этой многомерной нормы - вы не можете судить о распределении по одному наблюдению. Чтобы сделать оценку, о которой я говорю, нужно опираться на предположения; это довольно легко сделать для отдельных ячеек (т. е. предельного распределения для данной ячейки под нулевым значением). Кажется, вы объединяете счетчики по ячейкам, но это не имеет смысла, потому что все они происходят из разных распределений
Glen_b -Reinstate Monica
Во-первых, спасибо, что нашли время! Итак, вы говорите, что подсчет "вниз" таблицы сопряженности должен быть (вырожденно) многомерным нормальным, если мы посмотрим на многие наблюдения? Разве это не означает, что подсчет каждой отдельной ячейки также должен быть нормальным, а также подсчет «сбоку» таблицы сопряженности (я полагаю, это то, что вы имеете в виду под «поперек»)? F.ex ячейка с ожидаемым значением 5, должна быть нормально распределена около 5, верно? Таким образом, если ячейка в поперечнике имеет ожидаемое значение 40, эта ячейка должна быть нормально распределена около 40, а вместе многовариантная норма от среднего значения 5 и 40, нет?
Еросеннин
1
r×crc(r1)(c1)
Glen_b
Это тяжело и очень интересно. Если у вас есть время, я разместил свой первый вопрос здесь: stats.stackexchange.com/questions/142429/… .
Еросеннин
12

Для таких небольших подсчетов вы можете использовать точный критерий Фишера:

> fisher.test(a)

        Fisher's Exact Test for Count Data

data:  a 
p-value = 0.02618
alternative hypothesis: two.sided 
Генри
источник
3

Пожалуйста, смотрите раздел «Допущения» в тестовой статье Пирсона .

В двух словах: если в любой из ячеек таблицы меньше, чем 5, то одно из предположений нарушается. Я думаю, что это то, к чему относится сообщение об ошибке. В связанной статье вы также можете найти информацию об исправлении, которое можно применить.


источник
6
χ2
0

Ваш главный вопрос говорит о размере выборки, но я вижу, что сравниваются более двух групп. Если значение р из теста составляет 0,05 или менее, было бы трудно интерпретировать результаты. Поэтому я делюсь кратким сценарием, который я использую в таких ситуациях:

# 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')

Этот код будет генерировать как хи-квадрат Пирсона, так и хи-квадрат Фишера. Он производит количество, а также пропорции каждой из записей таблицы. На основе стандартизированных оценок остатков или z-значений, т. Е.

sresid

Если это вне диапазона | 1.96 | то есть менее -1,96 или более 1,96, то значимо р <0,05. Знак будет указывать, положительно или отрицательно связаны.

Sadiaz
источник