#r #statistics
Вопрос:
У меня возникли проблемы с анализом парных данных, но для одного набора данных имеется 500 наблюдений, а для другого-541. Ошибка функции говорит о том, что наблюдения не совпадают, как бы мы это исправили?
Комментарии:
1. Но в таком случае, как они могут быть соединены ?? Это не имеет смысла. Вам нужны два вектора, в которых каждое наблюдение в v1 сопоставляется в одной и той же позиции в v2. Как могут v1 и v2 иметь разную длину??
2. В будущем, пожалуйста, поделитесь примером вашего кода с помощью
dput
Ответ №1:
Если две группы, которые вы хотите сравнить, непарные, то тест Уилкоксона работает даже для несбалансированных наборов данных.
wilcox.test(df$group1,df$group2)
Если две группы объединены, то вы можете создать уточненный набор данных вверх по течению без значений NA
dfRefined=df[which(!is.na(df$group1) amp; !is.na(df$group2)),]
wilcox.test(dfRefined$group1,dfRefined$group2,paired=TRUE)
Как предложил Дарио, вы можете использовать complete.cases (если вы предпочитаете более короткий код и не создаете уточненный набор данных).
wilcox.test(df$group1[complete.cases(df[,c("group1","group2")])],df$group2[complete.cases(df[,c("group1","group2")])],paired=TRUE)
Комментарии:
1. Зачем использовать
which
?is.na
уже возвращает логическое значение. Также почему бы не использоватьcomplete.cases
…2. Оба варианта работают, но я согласен, что complete.cases имеет дополнительную ценность, потому что вам не нужно создавать набор данных перед парным тестом Уилкоксона