R Ошибка теста хи-квадрат: 'x' и 'y' должны иметь как минимум 2 уровня - PullRequest
1 голос
/ 02 августа 2020

Интересно, есть ли способ обойти эту ошибку, когда были сделаны прогнозы только одного уровня:

Error in stats::chisq.test(y[1:20], predictions[1:20]) : 
  'x' and 'y' must have at least 2 levels

Я получаю это, когда все прогнозы имеют один и тот же уровень / класс в chisq.test ( хотя переменная имеет два уровня (хотя оба не присутствуют).

Тестовые данные:

y <- as.factor(c(rep(1, 10), rep(0, 11)))
predictions <- as.factor(c(rep(1, 20), 0))

# Works (with a warning). 
chisq <- stats::chisq.test(y, predictions)

# Does not work due to not having prediction of both factors. 
chisq <- stats::chisq.test(y[1:20], predictions[1:20])

(я хочу использовать это в функции; и предпочел бы, чтобы это не было верните ошибку, а точнее что-то более информативное) Заранее спасибо

1 Ответ

2 голосов
/ 02 августа 2020

Рассмотрите возможность использования вместо этого точного критерия Фишера.

stats::fisher.test(y, predictions)

«Практическое правило» для теста хи-квадрат состоит в том, что ожидаемое количество ячеек должно быть 5 или более. Точность Фишера не имеет этого ограничения, и вы можете использовать ее на любой таблице 2x2, где будет уместен критерий хи-квадрат.

...