Ошибка теста Фридмана, возможно, неправильный тест? - PullRequest
0 голосов
/ 22 января 2020

У меня есть следующие данные:

df<-structure(list(participant_id = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L, 26L, 27L, 28L, 29L, 30L, 31L, 32L), 
.Label = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32"), class = "factor"), 
tool = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), 
.Label = c("pig", "silicone", "sponge"), class = "factor"), 
value = c(1, 3, 2, 4, 2, 1, 4, 3, 4, 4, 3, 1, 3, 2, 3, 2, 1, 2, 3, 4, 3, 2, 2, 2, 2, 1, 1, 4, 2, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 2, 1, 1, 1, 1, NA, 2, 1, 2, 4, 1, 1, 2, 5, 4, 4, 3, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, 5, 4, 4, 5, 4, 3, 3, 2, 4, 4, 3, 5)),
row.names = c(NA, -96L), class = c("tbl_df", "tbl", "data.frame"))

Его 32 или около того ученика, которых попросили оценить три разных объекта (столбец «инструмент») по шкале 1-5 по Ликерту, насколько хорошо они Понравилось (столбец «ценность»).

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

Первоначально Я думал о тесте Крускала-Уоллиса, чтобы сравнить группы, но мне было указано, что, поскольку это внутри-предметный дизайн, и студенты сами оценивают все три объекта, я должен использовать тест Фридмана.

Поэтому я запускаю этот код:

 test.fried<-df%>%friedman_test(value~tool|participant_id)

И я получаю эту ошибку:

"Ошибка в friedman.test.default (c (1, 3, 2, 4, 2, 1, 4, 3, 4, 4, 3, 1, 3,: не является полной конструкцией блока без репликации "

Теперь об этой ошибке спрашивают о: здесь и здесь , поэтому я просмотрел перечисленные комментарии.

  • Я убедился, что мои группы были тресками как факторы
  • Я сделал table(df$participant_id,df$tool), чтобы убедиться, что у меня не было пропущенных или удвоенных комбинаций.

Я что-то упускаю из виду? Это даже правильный тест?

1 Ответ

1 голос
/ 23 января 2020

У вас отсутствует значение для value в participant_id 25 для губки, поэтому вам придется вменять значение или удалять этого участника. Удаление просто:

df.sub <- subset(df, subset=df$participant_id != 25)
df.sub <- drop.levels(df.sub)
friedman.test(value~tool | participant_id, df.sub)
# 
#   Friedman rank sum test
# 
# data:  value and tool and participant_id
# Friedman chi-squared = 42.596, df = 2, p-value = 5.627e-10

Примечание. Вам не нужно было принимать participant_id фактор. Отбросить проще, если это числовое значение c:

df$participant_id <- as.numeric(df$participant_id) 
friedman.test(value~tool | participant_id, df, subset=participant_id != 25)
# 
#   Friedman rank sum test
# 
# data:  value and tool and participant_id
# Friedman chi-squared = 42.596, df = 2, p-value = 5.627e-10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...