Хочу сообщить о разнице между самцами и самками в тактике миграции. Будет ли это тест хи-квадрат? Это мои данные:
combo1 <- structure(list(Sex = c("F", "M", "F", NA, "M", "F", NA, NA, "M",
"F", NA, "M", "F", "F", NA, "F", "F", NA, "M", "F", NA, "M",
"F", "F", "F", "F", "F", "M", NA, "F", "M", "M", "F", "F", "M",
"F", NA, NA, NA, NA, NA, NA, "F", "F", NA, NA, NA, "M", "F",
"F", NA, "F", "F", NA, NA, "M", "F", NA, "F", NA, "M", NA, "F",
NA, NA, NA, NA, "F", "M", "M", NA, "F"), Tactic = c("Migr", "Migr",
"Migr", "Migr", "Migr", "Migr", "Migr", "Migr", "Migr", "Migr",
"Migr", "Migr", "Migr", "Migr", "Migr", "OcRes", "Migr", "Migr",
"Migr", "Migr", "Migr", "Migr", "OcRes", "Migr", "Migr", "Migr",
"Migr", "Migr", "Migr", "Migr", "Migr", "Migr", "Migr", "Migr",
"Migr", "EstRes", "Migr", "Migr", "Migr", "Migr", "Migr", "Migr",
"Migr", "Migr", "Migr", "Migr", "Migr", "Migr", "Migr", "Migr",
"Migr", "Migr", "Migr", "EstRes", "Migr", "Migr", "Migr", "EstRes",
"Migr", "OcRes", "Migr", "EstRes", "Migr", "Migr", "Migr", "Migr",
"Migr", "Migr", "Migr", "Migr", "Migr", "Migr")), class = "data.frame", row.names = c(NA,
-72L))
Таблица пропорций пола
Sex<-combo1 %>%
filter(!Sex%in%NA) %>%
droplevels() %>%
count(Sex,Tactic) %>%
group_by(Sex) %>%
mutate(Proportion = n / sum(n)) %>%
mutate(Tactic = factor(Tactic, levels = c("EstRes", "OcRes", "Migr"))) %>%
mutate(Sex = factor(Sex, levels = c("F", "M")))
Sex
Sex Tactic n Proportion
F EstRes 1 0.03448276
F Migr 26 0.89655172
F OcRes 2 0.06896552
M Migr 15 1.00000000
У меня есть график ggplot, который хорошо показывает эти результаты, но я не уверен, как получить значение p для поддержки этих результатов. Будет ли это тест хи-квадрат, и если да, то какой будет сценарий? Я посмотрел здесь https: //data-flair.training/blogs/wp-content/uploads/sites/2/2018/01/R-Code.jpg и попробовал этот скрипт:
chisq.test(combo1$Sex, combo1$Tactic, correct=FALSE)
Который дал такой результат:
Chi-squared approximation may be incorrect
Pearson's Chi-squared test
data: combo1$Sex and combo1$Tactic
X-squared = 1.6653, df = 2, p-value = 0.4349.
Но я не уверен, что это правильно. Будем очень благодарны любой помощи.
1 ответ
Теперь мы можем создать таблицу и вычислить квадрат Хи:
tbl <- xtabs(~Sex+Tactic, combo1)
tbl
# Tactic
# Sex EstRes Migr OcRes
# F 1 26 2
# M 0 15 0
Обратите внимание, что в 4 из 6 ячеек очень мало ячеек. Стандартный тест хи-квадрат сообщит о проблеме:
chisq.test(tbl)
#
# Pearson's Chi-squared test
#
# data: tbl
# X-squared = 1.6653, df = 2, p-value = 0.4349
#
# Warning message:
# In chisq.test(tbl) : Chi-squared approximation may be incorrect
На самом деле это не проблема, поскольку значение p намного больше 0,05, поэтому мы не можем отклонить нулевую гипотезу. Вы можете заставить R использовать моделирование Монте-Карло для оценки p-значения:
chisq.test(tbl, simulate.p.value=TRUE)
#
# Pearson's Chi-squared test with simulated p-value (based on 2000 replicates)
#
# data: tbl
# X-squared = 1.6653, df = NA, p-value = 0.6922
Как и ожидалось, p-значение еще больше.
Похожие вопросы
Новые вопросы
r
R — это бесплатный язык программирования с открытым исходным кодом и программная среда для статистических вычислений, биоинформатики, визуализации и общих вычислений. Пожалуйста, используйте минимально воспроизводимые примеры, которые другие могут запустить с помощью копирования и вставки. Показать желаемый результат. Используйте dput() для данных и укажите все небазовые пакеты с помощью library(). Не вставляйте изображения для данных или кода, вместо этого используйте блоки кода с отступом. Для вопросов по статистике используйте https://stats.stackexchange.com.
dput(combo1)
. Вот что дает нам данные. Также посмотрите справочную страницу для?chisq.test
. Вы указываете это неправильно.chisq.test
тактику против пола и игнорирует значения счетчика. Вам нужно переупорядочить данные так, чтобы столбцы были категориями тактики, строки - полами, а таблица - значениями N. См. Справку поchisq.test
, чтобы увидеть первый из перечисленных примеров. Данные примера, кажется, имеют нулевое или низкое количество значений для многих значений, точный тест Фишера может быть лучшим вариантом.dput(combo1[, c("Sex", "Tactic")]
.{r} dput(combo1[, c("Sex", "Tactic")]
Ошибка: неожиданный символ в: "dput (combo1 [, c (" Sex "," Tactic ")] dput"