Тест Фишера на случай непредвиденных обстоятельств 2x10 (ожидаемое значение <6 в> 20% ячейки) - Решить ошибку рабочей области R, ИЛИ предложить альтернативный статистический тест? - PullRequest
0 голосов
/ 21 марта 2020

У меня есть непредвиденные обстоятельства 2х10. К сожалению, 6 ячеек имеют ожидаемое значение меньше 5, и поэтому я не могу использовать критерий Пирсона Хи.

Я пытался использовать критерий Фишера в R (fisher.test(), что, если я правильно понимаю, автоматически выполняет расширение Фримена-Халтона), но я не думаю, что мой компьютер может обрабатывать объем вычислений.

Это ошибка, которую я получу:

Error in fisher.test(x$size, y$gender, workspace = 2e+08) : 
  FEXACT error 7(location). LDSTP=18716400 is too small for this problem,
  (pastp=328.023, ipn_0:=ipoin[itp=120337]=176553, stp[ipn_0]=318.699).
Increase workspace or consider using 'simulate.p.value=TRUE'

Пытался увеличить рабочее пространство до 2e9, и получил эту ошибку:

Error: cannot allocate vector of size 7.5 Gb

Будет ли тест квадрата Хи с исправлением Йейтса иметь дело с проблемой? Даже тогда я не могу заставить R сделать поправку Йейтса по моим расчетам по какой-то причине - chisq.test(x$size, y$gender, correct=T). Обратное, с correct=F, работает.

Любые предлагаемые решения? Или альтернативные тесты, которые я могу использовать?

Спасибо!

1 Ответ

2 голосов
/ 21 марта 2020

Давайте попробуем этот пример:

set.seed(111)
value = rnbinom(1000,mu=69,size=1)
size = cut(value,10)
gender = rep(c("M","F"),each=500)
table(gender,size)

gender (-0.466,46.6] (46.6,93.2] (93.2,140] (140,186] (186,233] (233,280]
     F           244         107         67        42        17        11
     M           255         127         64        28        11         8
      size
gender (280,326] (326,373] (373,419] (419,466]
     F         7         4         0         1
     M         4         2         1         0


fisher.test(gender, size)
Error in fisher.test(gender, size) : 
  FEXACT error 7(location). LDSTP=18480 is too small for this problem,
  (pastp=81.1067, ipn_0:=ipoin[itp=68]=79, stp[ipn_0]=80.6036).
Increase workspace or consider using 'simulate.p.value=TRUE'

И, как вы сказали, тест по критерию Шиш с коррекцией:

chisq.test(gender,size)$p.value
[1] 0.3452619
chisq.test(gender,size,correct=TRUE)$p.value
[1] 0.3452619

И на то есть веская причина:

правильное: логическое указание, применять ли исправление непрерывности при вычислении статистики теста c для таблиц 2 на 2

Вы можете использовать simulate.p.value = TRUE, как указано Dave2e, и в в этом случае это более или менее нормально, потому что я симулировал под нулем, где нет различий между группами:

    Fisher's Exact Test for Count Data with simulated p-value (based on
    2000 replicates)

data:  gender and size
p-value = 0.3393
alternative hypothesis: two.sided

Что похоже на в основном тест на квадрат с симуляцией распределения:

library(coin)
chisq_test(table(gender,size),distribution = approximate(nresample = 10000))

    Approximative Pearson Chi-Squared Test

data:  size by gender (F, M)
chi-squared = 10.065, p-value = 0.3263

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

...