это мой первый вопрос о stackoverflow, поэтому, надеюсь, я дам вам всю необходимую информацию.
Я пытаюсь провести тест хи-квадрат на основе точного распределения, используя функцию chisq_test
в пакете coin
. Я хотел бы сравнить две группы по одной переменной, но я получаю предупреждающее сообщение. Вот минимальный воспроизводимый пример (по крайней мере, я надеюсь, что это один):
library(coin)
dt <- as.data.frame(alzheimer)
xtabs(~ disease + gender, data = dt)
chisq_test(disease ~ gender, data = dt, distribution = "exact")
Я проверяю таблицу непредвиденных обстоятельств, чтобы убедиться, что в каждой ячейке достаточно дел. Когда я провожу тест, я получаю этот вывод:
> chisq_test(disease ~ gender, data = dt, distribution = "exact")
Exact Pearson Chi-Squared Test
data: disease by gender (Female, Male)
chi-squared = 9.7121, p-value = 0.3895
Warning messages:
1: In T - expectation(object) :
longer object length is not a multiple of shorter object length
2: In (T - expectation(object))^2/variance(object) :
longer object length is not a multiple of shorter object length
Я рассчитал p-значение, используя приблизительное распределение, чтобы убедиться, что предупреждение действительно является проблемой:
> chisq_test(disease ~ gender, data = dt, distribution = approximate(nresample = 1e+05))
Approximative Pearson Chi-Squared Test
data: disease by gender (Female, Male)
chi-squared = 9.7121, p-value = 0.00756
Поскольку оба p-значения сильно различаются, я предполагаю, что с точным распределением что-то идет не так, но я просто не могу понять проблему.
Может кто поможет решить проблему или понять причину предупреждения.
Спасибо за быстрый ответ! Фрейм данных — это некоторые данные, поступающие с пакетом монет, поэтому я считал его набором данных примера. Я использовал эти данные, чтобы получить воспроизводимый пример. В данных нет NAs
, а gender
и disease
имеют одинаковую длину. С этой дополнительной информацией: нужно ли еще пробовать какие-то другие данные?
точный тест 2x3, похоже, не поддерживается chisq_test(table(dt$disease, dt$gender), distribution = 'exact')
, и метод формулы неправильно отлавливает ошибку
Если вы просто измените ввод на chisq_test(table(dt$gender, dt$disease), distribution = 'exact')
, вы получите тот же результат, что и я. Таким образом, количество строк в таблице должно быть равно двум. В ?chisq_test
это читается the distribution can be ... computed exactly for univariate two-sample problems by setting distribution to ... "exact"
, поэтому не должно быть ограничения на количество столбцов (если это таблица 2xk или задача).
Я написал Торстену Хотхорну, одному из авторов пакета. Он сказал мне, что точное распределение для теста хи-квадрат работает только в случае задач 2x2. Таким образом, предупреждение или тот факт, что вы не получаете сообщение об ошибке, является ошибкой в текущей версии 1.3-1 пакета coin
. В версии пакета R-forge эта ошибка уже исправлена.
Не могли бы вы дать представление о вашем фрейме данных? Ошибка гласит, что ваши входные данные отличаются. Может ли быть так, что
gender
иdisease
не одинаковой длины? ПолучилNAs
? Или что-то подобное? Также попробуйте свой код с примером набора данных. Таким образом, вы можете быть уверены, что ваш код правильный и проблема связана с данными.